refactor: 数据集增加跨源选项

This commit is contained in:
junjun
2025-04-15 14:15:43 +08:00
committed by xuwei-fit2cloud
parent 4ff8c0fe46
commit 5e0bcafbf3
2 changed files with 34 additions and 23 deletions

View File

@@ -461,34 +461,45 @@ public class DatasetDataManage {
// sql 作为临时表外层加上limit
String sql;
if (Utils.isNeedOrder(List.of(datasourceSchemaDTO.getType()))) {
// 先根据sql获取表字段
String sqlField = SQLUtils.buildOriginPreviewSql(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 0, 0);
sqlField = provider.transSqlDialect(sqlField, datasourceRequest.getDsList());
// replace placeholder
sqlField = provider.replaceTablePlaceHolder(sqlField, originSql);
datasourceRequest.setQuery(sqlField);
// 获取数据源表的原始字段
List<TableField> list = provider.fetchTableField(datasourceRequest);
if (ObjectUtils.isEmpty(list)) {
return null;
}
sql = SQLUtils.buildOriginPreviewSqlWithOrderBy(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 100, 0, String.format(SQLConstants.FIELD_DOT_FIX, list.get(0).getOriginName()) + " ASC ");
} else {
sql = SQLUtils.buildOriginPreviewSql(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 100, 0);
}
if (dto.getIsCross()) {
DatasetTableDTO currentDs = new DatasetTableDTO();
BeanUtils.copyBean(currentDs, dto);
currentDs.setType("sql");
// get datasource and schema,put map
String tableSchema = datasetSQLManage.putObj2Map(dsMap, currentDs, dto.getIsCross());
sql = SqlUtils.addSchema(sql, tableSchema);
sql = SqlUtils.addSchema(originSql, tableSchema);
if (Utils.isNeedOrder(List.of(datasourceSchemaDTO.getType()))) {
// 先根据sql获取表字段
String sqlField = SQLUtils.buildOriginPreviewSql(sql, 0, 0);
datasourceRequest.setQuery(sqlField);
// 获取数据源表的原始字段
List<TableField> list = provider.fetchTableField(datasourceRequest);
if (ObjectUtils.isEmpty(list)) {
return null;
}
sql = SQLUtils.buildOriginPreviewSqlWithOrderBy(sql, 100, 0, String.format(SQLConstants.FIELD_DOT_FIX, list.get(0).getOriginName()) + " ASC ");
} else {
sql = SQLUtils.buildOriginPreviewSql(sql, 100, 0);
}
} else {
if (Utils.isNeedOrder(List.of(datasourceSchemaDTO.getType()))) {
// 先根据sql获取表字段
String sqlField = SQLUtils.buildOriginPreviewSql(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 0, 0);
sqlField = provider.transSqlDialect(sqlField, datasourceRequest.getDsList());
// replace placeholder
sqlField = provider.replaceTablePlaceHolder(sqlField, originSql);
datasourceRequest.setQuery(sqlField);
// 获取数据源表的原始字段
List<TableField> list = provider.fetchTableField(datasourceRequest);
if (ObjectUtils.isEmpty(list)) {
return null;
}
sql = SQLUtils.buildOriginPreviewSqlWithOrderBy(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 100, 0, String.format(SQLConstants.FIELD_DOT_FIX, list.get(0).getOriginName()) + " ASC ");
} else {
sql = SQLUtils.buildOriginPreviewSql(SqlPlaceholderConstants.TABLE_PLACEHOLDER, 100, 0);
}
sql = provider.transSqlDialect(sql, datasourceRequest.getDsList());
// replace placeholder
sql = provider.replaceTablePlaceHolder(sql, originSql);

View File

@@ -511,7 +511,7 @@ public class ExportCenterManage implements BaseExportApi {
dsList.add(next.getValue().getType());
}
boolean needOrder = Utils.isNeedOrder(dsList);
boolean crossDs = Utils.isCrossDs(dsMap);
boolean crossDs = dto.getIsCross();
if (!crossDs) {
if (datasetDataManage.notFullDs.contains(dsMap.entrySet().iterator().next().getValue().getType()) && (boolean) sqlMap.get("isFullJoin")) {
DEException.throwException(Translator.get("i18n_not_full"));