forked from github/dataease
refactor(仪表板、数据大屏): 外部参数配置优化
This commit is contained in:
parent
5757979408
commit
7c96c9f696
@ -144,6 +144,7 @@ public class ChartDataManage {
|
||||
// 过滤来自仪表板的条件
|
||||
List<ChartExtFilterDTO> extFilterList = new ArrayList<>();
|
||||
//组件过滤条件
|
||||
List<SqlVariableDetails> 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<SqlVariableDetails> 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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,25 +66,37 @@ public class DatasetSQLManage {
|
||||
|
||||
private List<SqlVariableDetails> filterParameters(ChartExtRequest chartExtRequest, Long datasetTableId) {
|
||||
List<SqlVariableDetails> 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<SqlVariableDetails> 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<String, Object> getUnionSQLForEdit(DatasetGroupInfoDTO dataTableInfoDTO, ChartExtRequest chartExtRequest) throws Exception {
|
||||
Map<Long, DatasourceSchemaDTO> dsMap = new LinkedHashMap<>();
|
||||
List<UnionDTO> union = dataTableInfoDTO.getUnion();
|
||||
|
Loading…
Reference in New Issue
Block a user