mirror of
https://github.com/dataease/dataease.git
synced 2026-06-09 21:27:21 +08:00
feat: 级联组件支持下拉树
This commit is contained in:
@@ -1159,7 +1159,72 @@ public class DatasetDataManage {
|
||||
provider = ProviderFactory.getProvider(dsList.getFirst());
|
||||
}
|
||||
|
||||
//组件过滤条件
|
||||
List<ChartExtFilterDTO> extFilterList = new ArrayList<>();
|
||||
if (ObjectUtils.isNotEmpty(multFieldValuesRequest.getFilter())) {
|
||||
for (ChartExtFilterDTO filterDTO : multFieldValuesRequest.getFilter()) {
|
||||
// 解析多个fieldId,fieldId是一个逗号分隔的字符串
|
||||
String fieldId = filterDTO.getFieldId();
|
||||
if (filterDTO.getIsTree() == null) {
|
||||
filterDTO.setIsTree(false);
|
||||
}
|
||||
|
||||
boolean hasParameters = false;
|
||||
List<SqlVariableDetails> sqlVariables = datasetGroupManage.getSqlParams(Arrays.asList(datasetGroupInfoDTO.getId()));
|
||||
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(sqlVariables)) {
|
||||
for (SqlVariableDetails parameter : Optional.ofNullable(filterDTO.getParameters()).orElse(new ArrayList<>())) {
|
||||
String parameterId = StringUtils.endsWith(parameter.getId(), START_END_SEPARATOR) ? parameter.getId().split(START_END_SEPARATOR)[0] : parameter.getId();
|
||||
if (sqlVariables.stream().map(SqlVariableDetails::getId).collect(Collectors.toList()).contains(parameterId)) {
|
||||
hasParameters = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasParameters) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (StringUtils.isNotEmpty(fieldId)) {
|
||||
List<Long> fieldIds = Arrays.stream(fieldId.split(",")).map(Long::valueOf).collect(Collectors.toList());
|
||||
|
||||
if (filterDTO.getIsTree()) {
|
||||
ChartExtFilterDTO filterRequest = new ChartExtFilterDTO();
|
||||
BeanUtils.copyBean(filterRequest, filterDTO);
|
||||
filterRequest.setDatasetTableFieldList(new ArrayList<>());
|
||||
for (Long fId : fieldIds) {
|
||||
DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(fId);
|
||||
if (datasetTableField == null) {
|
||||
continue;
|
||||
}
|
||||
if (Objects.equals(datasetTableField.getDatasetGroupId(), datasetGroupInfoDTO.getId())) {
|
||||
filterRequest.getDatasetTableFieldList().add(datasetTableField);
|
||||
}
|
||||
}
|
||||
if (ObjectUtils.isNotEmpty(filterRequest.getDatasetTableFieldList())) {
|
||||
extFilterList.add(filterRequest);
|
||||
}
|
||||
} else {
|
||||
for (Long fId : fieldIds) {
|
||||
ChartExtFilterDTO filterRequest = new ChartExtFilterDTO();
|
||||
BeanUtils.copyBean(filterRequest, filterDTO);
|
||||
filterRequest.setFieldId(fId + "");
|
||||
|
||||
DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(fId);
|
||||
if (datasetTableField == null) {
|
||||
continue;
|
||||
}
|
||||
filterRequest.setDatasetTableField(datasetTableField);
|
||||
if (Objects.equals(datasetTableField.getDatasetGroupId(), datasetGroupInfoDTO.getId())) {
|
||||
extFilterList.add(filterRequest);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Field2SQLObj.field2sqlObj(sqlMeta, fields, allFields, crossDs, dsMap, Utils.getParams(allFields), null, pluginManage);
|
||||
ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, allFields, crossDs, dsMap, Utils.getParams(allFields), null, pluginManage);
|
||||
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, allFields, crossDs, dsMap, Utils.getParams(allFields), null, pluginManage);
|
||||
Order2SQLObj.getOrders(sqlMeta, datasetGroupInfoDTO.getSortFields(), allFields, crossDs, dsMap, Utils.getParams(allFields), null, pluginManage);
|
||||
String querySQL;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.dataease.api.dataset.dto;
|
||||
|
||||
|
||||
import io.dataease.extensions.view.dto.ChartExtFilterDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -10,6 +11,7 @@ import java.util.List;
|
||||
public class MultFieldValuesRequest {
|
||||
List<Long> fieldIds = new ArrayList<>();
|
||||
Long userId = null;
|
||||
private List<ChartExtFilterDTO> filter;// 级联查询条件,多个条件之间用and拼接到SQL
|
||||
|
||||
private DeSortDTO sort;
|
||||
private Integer resultMode = 0;
|
||||
|
||||
Reference in New Issue
Block a user