diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java index 150aa7dc39..3707da539a 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartDataManage.java @@ -312,7 +312,6 @@ public class ChartDataManage { ChartViewFieldDTO nextDrillField = drill.get(i + 1); if (!fields.contains(nextDrillField.getId())) { nextDrillField.setSource(FieldSource.DRILL); - nextDrillField.setSort(getDrillSort(xAxis, drill.get(0))); xAxis.add(nextDrillField); dillAxis.add(nextDrillField); fields.add(nextDrillField.getId()); @@ -791,4 +790,24 @@ public class ChartDataManage { } } } + + public List getDrillFieldData(ChartViewDTO view, Long fieldId) throws Exception { + List drillField = view.getDrillFields(); + ChartViewFieldDTO targetField = null; + for (int i = 0; i < drillField.size(); i++) { + ChartViewFieldDTO tmp = drillField.get(i); + if (tmp.getId().equals(fieldId)) { + targetField = tmp; + break; + } + } + if (targetField == null) { + return Collections.emptyList(); + } + view.setXAxis(Collections.singletonList(targetField)); + + List sqlData = sqlData(view, view.getChartExtRequest(), fieldId); + List result = customSort(Optional.ofNullable(targetField.getCustomSort()).orElse(new ArrayList<>()), sqlData, 0); + return result.stream().map(i -> i[0]).distinct().collect(Collectors.toList()); + } } diff --git a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java index 50c8dec639..4725d2db5a 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java +++ b/core/core-backend/src/main/java/io/dataease/chart/server/ChartDataServer.java @@ -303,4 +303,9 @@ public class ChartDataServer implements ChartDataApi { public List getFieldData(ChartViewDTO view, Long fieldId, String fieldType) throws Exception { return chartDataManage.getFieldData(view, fieldId, fieldType); } + + @Override + public List getDrillFieldData(ChartViewDTO view, Long fieldId) throws Exception { + return chartDataManage.getDrillFieldData(view, fieldId); + } } diff --git a/core/core-frontend/src/api/chart.ts b/core/core-frontend/src/api/chart.ts index 0dee589af3..c6239cd222 100644 --- a/core/core-frontend/src/api/chart.ts +++ b/core/core-frontend/src/api/chart.ts @@ -88,7 +88,7 @@ export const saveChart = async (data): Promise => { } // 获取单个字段枚举值 -export const getFieldData = async (fieldId, fieldType, data): Promise => { +export const getFieldData = async ({ fieldId, fieldType, data }): Promise => { delete data.data return request .post({ url: `/chartData/getFieldData/${fieldId}/${fieldType}`, data }) @@ -97,6 +97,14 @@ export const getFieldData = async (fieldId, fieldType, data): Promise }) } +// 获取下钻字段枚举值 +export const getDrillFieldData = async ({ fieldId, data }): Promise => { + delete data.data + return request.post({ url: `/chartData/getDrillFieldData/${fieldId}`, data }).then(res => { + return res + }) +} + export const getChartDetail = async (id: string): Promise => { return request.post({ url: `chart/getDetail/${id}`, data: {} }).then(res => { return res diff --git a/core/core-frontend/src/models/chart/editor.d.ts b/core/core-frontend/src/models/chart/editor.d.ts index 4f1ea392d8..d37556b4fa 100644 --- a/core/core-frontend/src/models/chart/editor.d.ts +++ b/core/core-frontend/src/models/chart/editor.d.ts @@ -58,6 +58,7 @@ declare type AxisType = | 'flowMapStartName' | 'flowMapEndName' | 'extColor' + | 'drillFields' /** * 轴配置 */ diff --git a/core/core-frontend/src/views/chart/components/editor/drag-item/DrillItem.vue b/core/core-frontend/src/views/chart/components/editor/drag-item/DrillItem.vue index 3ede0ec03e..48fd6eaccc 100644 --- a/core/core-frontend/src/views/chart/components/editor/drag-item/DrillItem.vue +++ b/core/core-frontend/src/views/chart/components/editor/drag-item/DrillItem.vue @@ -1,10 +1,15 @@