From 230804d95090d20b2ba7ce99219e1ce31f2ee3bf Mon Sep 17 00:00:00 2001 From: junjun Date: Tue, 4 Jun 2024 11:04:25 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=BF=87=E6=BB=A4=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E4=B8=8B=E6=8B=89=E9=80=89=E9=A1=B9=E5=80=BC=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/manage/DatasetDataManage.java | 37 ++++++++----------- .../dataease/engine/trans/Order2SQLObj.java | 6 +-- 2 files changed, 18 insertions(+), 25 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 d70a50a101..68924c114e 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 @@ -1,7 +1,6 @@ package io.dataease.dataset.manage; import io.dataease.api.chart.dto.ChartExtFilterDTO; -import io.dataease.api.chart.dto.ChartViewDTO; import io.dataease.api.chart.dto.ColumnPermissionItem; import io.dataease.api.chart.dto.DeSortField; import io.dataease.api.chart.request.ChartExtRequest; @@ -204,7 +203,7 @@ public class DatasetDataManage { Table2SQLObj.table2sqlobj(sqlMeta, null, "(" + sql + ")", crossDs); Field2SQLObj.field2sqlObj(sqlMeta, fields, fields, crossDs, dsMap); WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, fields, crossDs, dsMap); - Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap); + Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), fields, crossDs, dsMap); String querySQL; if (start == null || count == null) { querySQL = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, false); @@ -425,13 +424,9 @@ public class DatasetDataManage { } List allFields = new ArrayList<>(); // 根据图表计算字段,获取数据集 - Long datasetGroupId; - if (field.getDatasetGroupId() == null && field.getChartId() != null) { - ChartViewDTO chart = chartViewManege.getChart(field.getChartId()); - datasetGroupId = chart.getTableId(); + Long datasetGroupId = field.getDatasetGroupId(); + if (field.getChartId() != null) { allFields.addAll(datasetTableFieldManage.getChartCalcFields(field.getChartId())); - } else { - datasetGroupId = field.getDatasetGroupId(); } DatasetGroupInfoDTO datasetGroupInfoDTO = datasetGroupManage.get(datasetGroupId, null); @@ -471,9 +466,9 @@ public class DatasetDataManage { rowPermissionsTree = permissionManage.getRowPermissionsTree(datasetGroupInfoDTO.getId(), user.getUserId()); } - Field2SQLObj.field2sqlObj(sqlMeta, fields, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap); - WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, fields, crossDs, dsMap); - Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap); + Field2SQLObj.field2sqlObj(sqlMeta, fields, allFields, crossDs, dsMap); + WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap); + Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), allFields, crossDs, dsMap); String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, true, 0, 1000); querySQL = SqlUtils.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap); logger.info("calcite data enum sql: " + querySQL); @@ -539,20 +534,18 @@ public class DatasetDataManage { } } + List allFields = new ArrayList<>(); + for (Long id : ids) { DatasetTableFieldDTO field = datasetTableFieldManage.selectById(id); if (field == null) { DEException.throwException(Translator.get("i18n_no_field")); } - List allFields = new ArrayList<>(); + // 根据图表计算字段,获取数据集 - Long datasetGroupId; - if (field.getDatasetGroupId() == null && field.getChartId() != null) { - ChartViewDTO chart = chartViewManege.getChart(field.getChartId()); - datasetGroupId = chart.getTableId(); + Long datasetGroupId = field.getDatasetGroupId(); + if (field.getChartId() != null) { allFields.addAll(datasetTableFieldManage.getChartCalcFields(field.getChartId())); - } else { - datasetGroupId = field.getDatasetGroupId(); } datasetGroupInfoDTO = datasetGroupManage.get(datasetGroupId, null); @@ -687,10 +680,10 @@ public class DatasetDataManage { sortDistinct = false; } - Field2SQLObj.field2sqlObj(sqlMeta, fields, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap); - ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap); - WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, fields, crossDs, dsMap); - Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap); + Field2SQLObj.field2sqlObj(sqlMeta, fields, allFields, crossDs, dsMap); + ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, allFields, crossDs, dsMap); + WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap); + Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), allFields, crossDs, dsMap); String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, sortDistinct && ids.size() == 1, 0, 1000); querySQL = SqlUtils.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap); logger.info("calcite data enum sql: " + querySQL); diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java index 5798d270be..54d6d4ab23 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java @@ -22,17 +22,17 @@ import java.util.Objects; */ public class Order2SQLObj { - public static void getOrders(SQLMeta meta, List fields, List sortFields, boolean isCross, Map dsMap) { + public static void getOrders(SQLMeta meta, List sortFields, List originFields, boolean isCross, Map dsMap) { SQLObj tableObj = meta.getTable(); List xOrders = meta.getXOrders() == null ? new ArrayList<>() : meta.getXOrders(); if (ObjectUtils.isEmpty(tableObj)) { return; } if (ObjectUtils.isNotEmpty(sortFields)) { - int step = fields.size(); + int step = originFields.size(); for (int i = step; i < (step + sortFields.size()); i++) { DeSortField deSortField = sortFields.get(i - step); - SQLObj order = buildSortField(deSortField, tableObj, i, fields, isCross, dsMap); + SQLObj order = buildSortField(deSortField, tableObj, i, originFields, isCross, dsMap); xOrders.add(order); } meta.setXOrders(xOrders);