From 3a6f89eb211fbd2bb189a784de4957b19b7cfe01 Mon Sep 17 00:00:00 2001 From: junjie Date: Wed, 11 Aug 2021 10:35:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=86=E5=9B=BE=E4=B8=8B=E9=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/chart/ChartViewService.java | 34 ++++++++++++++++--- frontend/src/store/index.js | 1 - 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 69d632ecf1..caeb64d58c 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -258,7 +258,7 @@ public class ChartViewService { // 下钻 boolean isDrill = false; List drillRequest = requestList.getDrill(); - if (CollectionUtils.isNotEmpty(drillRequest) && (drill.size() >= drillRequest.size())) { + if (CollectionUtils.isNotEmpty(drillRequest) && (drill.size() > drillRequest.size())) { for (int i = 0; i < drillRequest.size(); i++) { ChartDrillRequest request = drillRequest.get(i); for (ChartDimensionDTO dto : request.getDimensionList()) { @@ -278,10 +278,16 @@ public class ChartViewService { drillFilter.setOperator("in"); drillFilter.setDatasetTableField(datasetTableField); extFilterList.add(drillFilter); -// xAxis.add(d); -// if (i == drillRequest.size() - 1) { -// xAxis.add(drill.get(i + 1)); -// } + + if (!checkDrillExist(xAxis, extStack, d, view)) { + xAxis.add(d); + } + if (i == drillRequest.size() - 1) { + ChartViewFieldDTO nextDrillField = drill.get(i + 1); + if (!checkDrillExist(xAxis, extStack, nextDrillField, view)) { + xAxis.add(nextDrillField); + } + } } } } @@ -436,6 +442,24 @@ public class ChartViewService { return dto; } + private boolean checkDrillExist(List xAxis, List extStack, ChartViewFieldDTO dto, ChartViewWithBLOBs view) { + if (CollectionUtils.isNotEmpty(xAxis)) { + for (ChartViewFieldDTO x : xAxis) { + if (StringUtils.equalsIgnoreCase(x.getId(), dto.getId())) { + return true; + } + } + } + if (StringUtils.containsIgnoreCase(view.getType(), "stack") && CollectionUtils.isNotEmpty(extStack)) { + for (ChartViewFieldDTO x : extStack) { + if (StringUtils.equalsIgnoreCase(x.getId(), dto.getId())) { + return true; + } + } + } + return false; + } + /** * 避免缓存击穿 * 虽然流量不一定能够达到击穿的水平 diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js index 272ac3e4b7..43facb6fe1 100644 --- a/frontend/src/store/index.js +++ b/frontend/src/store/index.js @@ -161,7 +161,6 @@ const data = { // 添加联动 下钻 等过滤组件 addViewTrackFilter(state, data) { - debugger const viewId = data.viewId const trackInfo = state.nowPanelTrackInfo for (let index = 0; index < state.componentData.length; index++) {