From 5e0bcafbf396b1d62e006ffbb77cd730547b57dd Mon Sep 17 00:00:00 2001 From: junjun Date: Tue, 15 Apr 2025 14:15:43 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B7=A8=E6=BA=90=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/manage/DatasetDataManage.java | 55 +++++++++++-------- .../manage/ExportCenterManage.java | 2 +- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java index 8d92a3e16e..e47f0547f3 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetDataManage.java @@ -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 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 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 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); diff --git a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java index 00403148f2..a1d3b8e8d9 100644 --- a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java +++ b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java @@ -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"));