diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java index 561bc72dcf..f689f7c77d 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java @@ -144,6 +144,7 @@ public class ChartDataManage { // 过滤来自仪表板的条件 List extFilterList = new ArrayList<>(); //组件过滤条件 + List sqlVariables = datasetGroupManage.getSqlParams(Collections.singletonList(view.getTableId())); if (ObjectUtils.isNotEmpty(chartExtRequest.getFilter())) { for (ChartExtFilterDTO request : chartExtRequest.getFilter()) { // 解析多个fieldId,fieldId是一个逗号分隔的字符串 @@ -153,7 +154,6 @@ public class ChartDataManage { } boolean hasParameters = false; - List sqlVariables = datasetGroupManage.getSqlParams(Collections.singletonList(view.getTableId())); if (CollectionUtils.isNotEmpty(sqlVariables)) { for (SqlVariableDetails parameter : Optional.ofNullable(request.getParameters()).orElse(new ArrayList<>())) { String parameterId = StringUtils.endsWith(parameter.getId(), START_END_SEPARATOR) ? parameter.getId().split(START_END_SEPARATOR)[0] : parameter.getId(); @@ -234,18 +234,35 @@ public class ChartDataManage { //联动过滤条件和外部参数过滤条件全部加上 if (ObjectUtils.isNotEmpty(filters)) { for (ChartExtFilterDTO request : filters) { - DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(Long.valueOf(request.getFieldId())); - request.setDatasetTableField(datasetTableField); - request.setFilterType(2); - // 相同数据集 - if (Objects.equals(datasetTableField.getDatasetGroupId(), view.getTableId())) { - if (ObjectUtils.isNotEmpty(request.getViewIds())) { - if (request.getViewIds().contains(view.getId())) { + // 包含 DE 的为数据集参数 + if(request.getFieldId().contains("DE")){ + // 组装sql 参数原始数据 + if (CollectionUtils.isNotEmpty(sqlVariables)) { + for(SqlVariableDetails sourceVariables : sqlVariables){ + if(sourceVariables.getId().equals(request.getFieldId())){ + if(CollectionUtils.isEmpty(request.getParameters())){ + request.setParameters(new ArrayList<>()); + } + request.getParameters().add(sourceVariables); + } + } + + } + }else { + DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(Long.valueOf(request.getFieldId())); + request.setDatasetTableField(datasetTableField); + request.setFilterType(2); + // 相同数据集 + if (Objects.equals(datasetTableField.getDatasetGroupId(), view.getTableId())) { + if (ObjectUtils.isNotEmpty(request.getViewIds())) { + if (request.getViewIds().contains(view.getId())) { + extFilterList.add(request); + } + } else { extFilterList.add(request); } - } else { - extFilterList.add(request); } + } } } diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java index 90d9d3ba1f..70549c206e 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetSQLManage.java @@ -66,25 +66,37 @@ public class DatasetSQLManage { private List filterParameters(ChartExtRequest chartExtRequest, Long datasetTableId) { List parameters = new ArrayList<>(); + if (chartExtRequest != null && ObjectUtils.isNotEmpty(chartExtRequest.getOuterParamsFilters())) { + for (ChartExtFilterDTO filterDTO : chartExtRequest.getOuterParamsFilters()) { + if (CollectionUtils.isEmpty(filterDTO.getValue())) { + continue; + } + filterParametersAdaptor(parameters,filterDTO,datasetTableId); + } + } if (chartExtRequest != null && ObjectUtils.isNotEmpty(chartExtRequest.getFilter())) { for (ChartExtFilterDTO filterDTO : chartExtRequest.getFilter()) { if (CollectionUtils.isEmpty(filterDTO.getValue())) { continue; } - if (ObjectUtils.isNotEmpty(filterDTO.getParameters())) { - for (SqlVariableDetails parameter : filterDTO.getParameters()) { - if (parameter.getDatasetTableId().equals(datasetTableId)) { - parameter.setValue(filterDTO.getValue()); - parameter.setOperator(filterDTO.getOperator()); - parameters.add(parameter); - } - } - } + filterParametersAdaptor(parameters,filterDTO,datasetTableId); } } return parameters; } + private void filterParametersAdaptor(List parameters,ChartExtFilterDTO filterDTO,Long datasetTableId){ + if (ObjectUtils.isNotEmpty(filterDTO.getParameters())) { + for (SqlVariableDetails parameter : filterDTO.getParameters()) { + if (parameter.getDatasetTableId().equals(datasetTableId)) { + parameter.setValue(filterDTO.getValue()); + parameter.setOperator(filterDTO.getOperator()); + parameters.add(parameter); + } + } + } + } + public Map getUnionSQLForEdit(DatasetGroupInfoDTO dataTableInfoDTO, ChartExtRequest chartExtRequest) throws Exception { Map dsMap = new LinkedHashMap<>(); List union = dataTableInfoDTO.getUnion();