fix(图表): 修复查询组件通过新建计算字段关联组合图报错的问题

This commit is contained in:
ulleo
2025-05-14 15:32:07 +08:00
committed by dataeaseShu
parent 85d3b739b2
commit 1de523f1f4
3 changed files with 4 additions and 28 deletions

View File

@@ -3,14 +3,12 @@ package io.dataease.chart.charts.impl.mix;
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
import io.dataease.chart.charts.impl.YoyChartHandler;
import io.dataease.chart.utils.ChartDataBuild;
import io.dataease.engine.trans.ExtWhere2Str;
import io.dataease.engine.utils.Utils;
import io.dataease.extensions.datasource.dto.DatasourceRequest;
import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO;
import io.dataease.extensions.datasource.model.SQLMeta;
import io.dataease.extensions.datasource.provider.Provider;
import io.dataease.extensions.view.dto.*;
import io.dataease.extensions.view.util.FieldUtil;
import lombok.Getter;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -58,7 +56,7 @@ public class MixHandler extends YoyChartHandler {
boolean isDrill = filterResult
.getFilterList()
.stream()
.anyMatch(ele -> ele.getFilterType() == 1) || filterResult.isDrill();
.anyMatch(ele -> ele.getFilterType() == 1);
if (StringUtils.equals((String) formatResult.getContext().get("isRight"), "isRight")) {
var xAxis = formatResult.getAxisMap().get(ChartAxis.xAxis);
var xAxisExt = formatResult.getAxisMap().get(ChartAxis.xAxisExt);
@@ -148,27 +146,12 @@ public class MixHandler extends YoyChartHandler {
formatResult2.getContext().remove("yoyFiltered");
formatResult2.getContext().put("isRight", "isRight");
CustomFilterResult originFilter = new CustomFilterResult();
originFilter.setContext(filterResult.getContext());
List<ChartExtFilterDTO> list = (List<ChartExtFilterDTO>) formatResult.getContext().get("originFilter");
originFilter.setFilterList(ObjectUtils.isEmpty(list) ? new ArrayList<>() : list);
formatResult.getContext().put("subAxisMap", axisMap);
// 右轴重新检测同环比过滤
customFilter(view, originFilter.getFilterList(), formatResult2);
var allFields = (List<ChartViewFieldDTO>) filterResult.getContext().get("allFields");
if (formatResult2.getContext().get("yoyFiltered") != null && (boolean) formatResult2.getContext().get("yoyFiltered") == true) {
ExtWhere2Str.extWhere2sqlOjb(sqlMeta, filterResult.getFilterList(), FieldUtil.transFields(allFields), crossDs, dsMap, Utils.getParams(FieldUtil.transFields(allFields)), view.getCalParams(), pluginManage);
} else {
ExtWhere2Str.extWhere2sqlOjb(sqlMeta, originFilter.getFilterList(), FieldUtil.transFields(allFields), crossDs, dsMap, Utils.getParams(FieldUtil.transFields(allFields)), view.getCalParams(), pluginManage);
}
originFilter.setDrill(filterResult
.getFilterList()
.stream()
.anyMatch(ele -> ele.getFilterType() == 1));
var rightResult = (T) super.calcChartResult(view, formatResult2, originFilter, sqlMap, sqlMeta, provider);
customFilter(view, filterResult.getFilterList(), formatResult2);
var rightResult = (T) super.calcChartResult(view, formatResult2, filterResult, sqlMap, sqlMeta, provider);
try {
//如果有同环比过滤,应该用原始sql
var originSql = rightResult.getQuerySql();

View File

@@ -672,6 +672,7 @@ onMounted(() => {
class="menu-item-padding"
:disabled="state.disableEditCompare"
:command="beforeQuickCalc('setting')"
v-if="!(chart.type.includes('chart-mix') && type === 'quotaExt')"
>
<div
class="sub-menu-content"

View File

@@ -2,21 +2,13 @@ package io.dataease.extensions.view.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CustomFilterResult {
private List<ChartExtFilterDTO> filterList;
private Map<String, Object> context;
private boolean isDrill;// 组合图右轴判断是否下钻字段,其余地方没有用
public CustomFilterResult(List<ChartExtFilterDTO> filterList, Map<String, Object> context) {
this.filterList = filterList;
this.context = context;
}
}