From 62fb1f87d605740f35c335a61a5b609d7bdff599 Mon Sep 17 00:00:00 2001 From: jianneng-fit2cloud Date: Tue, 11 Mar 2025 18:08:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=9B=BE=E8=A1=A8):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=BB=84=E5=90=88=E5=9B=BE=E6=8C=87=E6=A0=87=E7=B4=AF=E5=8A=A0?= =?UTF-8?q?=E6=97=A0=E6=95=88=E6=88=96=E8=80=85=E5=AF=BC=E8=87=B4=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../charts/impl/DefaultChartHandler.java | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java index d331d266e1..c7277c0e3b 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java +++ b/core/core-backend/src/main/java/io/dataease/chart/charts/impl/DefaultChartHandler.java @@ -525,28 +525,29 @@ public class DefaultChartHandler extends AbstractChartPlugin { if (CollectionUtils.isEmpty(data)) { break; } + if (Objects.isNull(extStack)) { + extStack = Arrays.asList(); + } + if (Objects.isNull(xAxisExt)) { + xAxisExt = Arrays.asList(); + } boolean isStack = StringUtils.containsIgnoreCase(chartType, "stack") && CollectionUtils.isNotEmpty(extStack); - boolean isGroup = StringUtils.containsIgnoreCase(chartType, "group") && CollectionUtils.isNotEmpty(xAxisExt); + boolean isGroup = StringUtils.containsIgnoreCase(chartType, "group") + || (StringUtils.containsIgnoreCase(chartType, "-mix") && CollectionUtils.isNotEmpty(xAxisExt)); if (isStack || isGroup) { if (CollectionUtils.isEmpty(xAxis)) { break; } - if (StringUtils.containsIgnoreCase(chartType, "stack") && CollectionUtils.isEmpty(extStack)) { - break; - } - if (StringUtils.containsIgnoreCase(chartType, "group") && CollectionUtils.isEmpty(xAxisExt)) { - break; - } final Map mainIndexMap = new HashMap<>(); final List> mainMatrix = new ArrayList<>(); // 排除group和stack的字段 List groupStackAxisIds = mergeIds(xAxisExt, extStack); - List finalXAxisBase = xAxis.stream().filter(ele->!groupStackAxisIds.contains(String.valueOf(ele.getId()))).toList(); - if (CollectionUtils.isEmpty(finalXAxisBase) && CollectionUtils.isNotEmpty(xAxis)) { - finalXAxisBase.add(xAxis.get(0)); + List xAxisBase = xAxis.stream().filter(ele -> !groupStackAxisIds.contains(String.valueOf(ele.getId()))).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(xAxisBase) && CollectionUtils.isNotEmpty(xAxis)) { + xAxisBase.add(xAxis.get(0)); } data.forEach(item -> { - String[] mainAxisArr = Arrays.copyOfRange(item, 0, finalXAxisBase.size()); + String[] mainAxisArr = Arrays.copyOfRange(item, 0, xAxisBase.size()); String mainAxis = StringUtils.join(mainAxisArr, '-'); Integer index = mainIndexMap.get(mainAxis); if (index == null) { @@ -560,8 +561,8 @@ public class DefaultChartHandler extends AbstractChartPlugin { } }); int finalDataIndex = dataIndex; - int subEndIndex = finalXAxisBase.size(); - if (StringUtils.containsIgnoreCase(chartType, "group")) { + int subEndIndex = xAxisBase.size(); + if (StringUtils.containsIgnoreCase(chartType, "group") || StringUtils.containsIgnoreCase(chartType, "-mix")) { subEndIndex += xAxisExt.size(); } if (StringUtils.containsIgnoreCase(chartType, "stack")) { @@ -574,7 +575,7 @@ public class DefaultChartHandler extends AbstractChartPlugin { List curDataItems = mainMatrix.get(k); Map preDataMap = new HashMap<>(); preDataItems.forEach(preDataItem -> { - String[] groupStackAxisArr = Arrays.copyOfRange(preDataItem, finalXAxisBase.size(), finalSubEndIndex); + String[] groupStackAxisArr = Arrays.copyOfRange(preDataItem, xAxisBase.size(), finalSubEndIndex); String groupStackAxis = StringUtils.join(groupStackAxisArr, '-'); String preVal = preDataItem[finalDataIndex]; if (StringUtils.isBlank(preVal)) { @@ -583,7 +584,7 @@ public class DefaultChartHandler extends AbstractChartPlugin { preDataMap.put(groupStackAxis, new BigDecimal(preVal)); }); curDataItems.forEach(curDataItem -> { - String[] groupStackAxisArr = Arrays.copyOfRange(curDataItem, finalXAxisBase.size(), finalSubEndIndex); + String[] groupStackAxisArr = Arrays.copyOfRange(curDataItem, xAxisBase.size(), finalSubEndIndex); String groupStackAxis = StringUtils.join(groupStackAxisArr, '-'); BigDecimal preValue = preDataMap.get(groupStackAxis); if (preValue != null) {