refactor: 过滤组件下拉选项值优化

This commit is contained in:
junjun 2024-06-04 11:04:25 +08:00
parent d4d8b5acb2
commit 230804d950
2 changed files with 18 additions and 25 deletions

View File

@ -1,7 +1,6 @@
package io.dataease.dataset.manage; package io.dataease.dataset.manage;
import io.dataease.api.chart.dto.ChartExtFilterDTO; 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.ColumnPermissionItem;
import io.dataease.api.chart.dto.DeSortField; import io.dataease.api.chart.dto.DeSortField;
import io.dataease.api.chart.request.ChartExtRequest; import io.dataease.api.chart.request.ChartExtRequest;
@ -204,7 +203,7 @@ public class DatasetDataManage {
Table2SQLObj.table2sqlobj(sqlMeta, null, "(" + sql + ")", crossDs); Table2SQLObj.table2sqlobj(sqlMeta, null, "(" + sql + ")", crossDs);
Field2SQLObj.field2sqlObj(sqlMeta, fields, fields, crossDs, dsMap); Field2SQLObj.field2sqlObj(sqlMeta, fields, fields, crossDs, dsMap);
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, 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; String querySQL;
if (start == null || count == null) { if (start == null || count == null) {
querySQL = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, false); querySQL = SQLProvider.createQuerySQL(sqlMeta, false, needOrder, false);
@ -425,13 +424,9 @@ public class DatasetDataManage {
} }
List<DatasetTableFieldDTO> allFields = new ArrayList<>(); List<DatasetTableFieldDTO> allFields = new ArrayList<>();
// 根据图表计算字段获取数据集 // 根据图表计算字段获取数据集
Long datasetGroupId; Long datasetGroupId = field.getDatasetGroupId();
if (field.getDatasetGroupId() == null && field.getChartId() != null) { if (field.getChartId() != null) {
ChartViewDTO chart = chartViewManege.getChart(field.getChartId());
datasetGroupId = chart.getTableId();
allFields.addAll(datasetTableFieldManage.getChartCalcFields(field.getChartId())); allFields.addAll(datasetTableFieldManage.getChartCalcFields(field.getChartId()));
} else {
datasetGroupId = field.getDatasetGroupId();
} }
DatasetGroupInfoDTO datasetGroupInfoDTO = datasetGroupManage.get(datasetGroupId, null); DatasetGroupInfoDTO datasetGroupInfoDTO = datasetGroupManage.get(datasetGroupId, null);
@ -471,9 +466,9 @@ public class DatasetDataManage {
rowPermissionsTree = permissionManage.getRowPermissionsTree(datasetGroupInfoDTO.getId(), user.getUserId()); rowPermissionsTree = permissionManage.getRowPermissionsTree(datasetGroupInfoDTO.getId(), user.getUserId());
} }
Field2SQLObj.field2sqlObj(sqlMeta, fields, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap); Field2SQLObj.field2sqlObj(sqlMeta, fields, allFields, crossDs, dsMap);
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, fields, crossDs, dsMap); WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap);
Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap); Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), allFields, crossDs, dsMap);
String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, true, 0, 1000); String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, true, 0, 1000);
querySQL = SqlUtils.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap); querySQL = SqlUtils.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap);
logger.info("calcite data enum sql: " + querySQL); logger.info("calcite data enum sql: " + querySQL);
@ -539,20 +534,18 @@ public class DatasetDataManage {
} }
} }
List<DatasetTableFieldDTO> allFields = new ArrayList<>();
for (Long id : ids) { for (Long id : ids) {
DatasetTableFieldDTO field = datasetTableFieldManage.selectById(id); DatasetTableFieldDTO field = datasetTableFieldManage.selectById(id);
if (field == null) { if (field == null) {
DEException.throwException(Translator.get("i18n_no_field")); DEException.throwException(Translator.get("i18n_no_field"));
} }
List<DatasetTableFieldDTO> allFields = new ArrayList<>();
// 根据图表计算字段获取数据集 // 根据图表计算字段获取数据集
Long datasetGroupId; Long datasetGroupId = field.getDatasetGroupId();
if (field.getDatasetGroupId() == null && field.getChartId() != null) { if (field.getChartId() != null) {
ChartViewDTO chart = chartViewManege.getChart(field.getChartId());
datasetGroupId = chart.getTableId();
allFields.addAll(datasetTableFieldManage.getChartCalcFields(field.getChartId())); allFields.addAll(datasetTableFieldManage.getChartCalcFields(field.getChartId()));
} else {
datasetGroupId = field.getDatasetGroupId();
} }
datasetGroupInfoDTO = datasetGroupManage.get(datasetGroupId, null); datasetGroupInfoDTO = datasetGroupManage.get(datasetGroupId, null);
@ -687,10 +680,10 @@ public class DatasetDataManage {
sortDistinct = false; sortDistinct = false;
} }
Field2SQLObj.field2sqlObj(sqlMeta, fields, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap); Field2SQLObj.field2sqlObj(sqlMeta, fields, allFields, crossDs, dsMap);
ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap); ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, allFields, crossDs, dsMap);
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, fields, crossDs, dsMap); WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap);
Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap); Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), allFields, crossDs, dsMap);
String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, sortDistinct && ids.size() == 1, 0, 1000); String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, sortDistinct && ids.size() == 1, 0, 1000);
querySQL = SqlUtils.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap); querySQL = SqlUtils.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap);
logger.info("calcite data enum sql: " + querySQL); logger.info("calcite data enum sql: " + querySQL);

View File

@ -22,17 +22,17 @@ import java.util.Objects;
*/ */
public class Order2SQLObj { public class Order2SQLObj {
public static void getOrders(SQLMeta meta, List<DatasetTableFieldDTO> fields, List<DeSortField> sortFields, boolean isCross, Map<Long, DatasourceSchemaDTO> dsMap) { public static void getOrders(SQLMeta meta, List<DeSortField> sortFields, List<DatasetTableFieldDTO> originFields, boolean isCross, Map<Long, DatasourceSchemaDTO> dsMap) {
SQLObj tableObj = meta.getTable(); SQLObj tableObj = meta.getTable();
List<SQLObj> xOrders = meta.getXOrders() == null ? new ArrayList<>() : meta.getXOrders(); List<SQLObj> xOrders = meta.getXOrders() == null ? new ArrayList<>() : meta.getXOrders();
if (ObjectUtils.isEmpty(tableObj)) { if (ObjectUtils.isEmpty(tableObj)) {
return; return;
} }
if (ObjectUtils.isNotEmpty(sortFields)) { if (ObjectUtils.isNotEmpty(sortFields)) {
int step = fields.size(); int step = originFields.size();
for (int i = step; i < (step + sortFields.size()); i++) { for (int i = step; i < (step + sortFields.size()); i++) {
DeSortField deSortField = sortFields.get(i - step); 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); xOrders.add(order);
} }
meta.setXOrders(xOrders); meta.setXOrders(xOrders);