From 2feb5138b3e7d810ff06c039b90bc1f3f5b26258 Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Tue, 15 Mar 2022 21:41:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=8E=E6=A8=A1=E6=9D=BF=E6=96=B0?= =?UTF-8?q?=E5=BB=BA=E7=9A=84=E4=BB=AA=E8=A1=A8=E6=9D=BF=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E6=A8=A1=E6=9D=BF=E7=BC=93=E5=AD=98=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/chart/ChartViewController.java | 6 +++++- .../service/chart/ChartViewService.java | 21 +++++++++++++++---- .../service/panel/PanelGroupService.java | 5 ++++- frontend/src/views/chart/view/ChartEdit.vue | 3 ++- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java index f6c2edeeb2..4006daf02e 100644 --- a/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java +++ b/backend/src/main/java/io/dataease/controller/chart/ChartViewController.java @@ -14,6 +14,7 @@ import io.dataease.controller.request.chart.ChartViewRequest; import io.dataease.controller.response.ChartDetail; import io.dataease.dto.chart.ChartViewDTO; import io.dataease.service.chart.ChartViewService; +import io.dataease.service.panel.PanelViewService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -33,6 +34,8 @@ import java.util.List; public class ChartViewController { @Resource private ChartViewService chartViewService; + @Resource + private PanelViewService panelViewService; @DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_MANAGE) @ApiOperation("保存") @@ -73,7 +76,8 @@ public class ChartViewController { @ApiOperation("详细信息") @PostMapping("/get/{id}/{panelId}") public ChartViewDTO get(@PathVariable String id, @PathVariable String panelId,@RequestBody ChartViewRequest viewRequest) { - return chartViewService.getOne(id,viewRequest.getQueryFrom()); + String dataFrom = panelViewService.findViewDataFrom(id); + return chartViewService.getOne(id,viewRequest.getQueryFrom(),dataFrom); } @ApiIgnore 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 108fa07a17..59d7b3879a 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -233,18 +233,32 @@ public class ChartViewService { return extChartViewMapper.searchOneWithPrivileges(userId, id); } - @Transactional + public ChartViewDTO getOne(String id, String queryFrom) { + return getOne(id,queryFrom,CommonConstants.VIEW_DATA_FROM.CHART); + } + + + @Transactional + public ChartViewDTO getOne(String id, String queryFrom,String dataFrom) { ChartViewDTO result; - //仪表板编辑页面 从缓存表中取数据 缓存表中没有数据则进行插入 - if (CommonConstants.VIEW_QUERY_FROM.PANEL_EDIT.equals(queryFrom)) { + //从模板中去数据 + if(CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(dataFrom)){ + result = extendDataService.getChartInfo(id); + if(result!=null){ + result.setData(null); + } + }else if (CommonConstants.VIEW_QUERY_FROM.PANEL_EDIT.equals(queryFrom)) { + //仪表板编辑页面 从缓存表中取数据 缓存表中没有数据则进行插入 result = extChartViewMapper.searchOneFromCache(id); if (result == null) { extChartViewMapper.copyToCache(id); result = extChartViewMapper.searchOneFromCache(id); } + result.setDataFrom(CommonConstants.VIEW_DATA_FROM.CHART); } else { result = extChartViewMapper.searchOne(id); + result.setDataFrom(CommonConstants.VIEW_DATA_FROM.CHART); } return result; } @@ -266,7 +280,6 @@ public class ChartViewService { if(CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(dataFrom)){ return extendDataService.getChartInfo(id); }else{// 从视图读取数据 - ChartViewDTO view = this.getOne(id,request.getQueryFrom()); view.setDataFrom(dataFrom); // 如果是从仪表板获取视图数据,则仪表板的查询模式,查询结果的数量,覆盖视图对应的属性 diff --git a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java index 633747ee1e..14c7877afa 100644 --- a/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java +++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupService.java @@ -1,6 +1,7 @@ package io.dataease.service.panel; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import io.dataease.auth.annotation.DeCleaner; import io.dataease.base.domain.*; import io.dataease.base.mapper.*; @@ -323,10 +324,12 @@ public class PanelGroupService { Map dynamicDataMap = JSON.parseObject(dynamicData,Map.class); List panelViews = new ArrayList<>(); List viewsData = new ArrayList<>(); + List chartViews = new ArrayList<>(); for(Map.Entry entry : dynamicDataMap.entrySet()){ String originViewId = entry.getKey(); String originViewData = entry.getValue(); - String position = JSON.parseObject(originViewData).getString("position"); + JSONObject chartViewJson = JSON.parseObject(originViewData); + String position = chartViewJson.getString("position"); String newViewId = UUIDUtil.getUUIDAsString(); //TODO 数据处理 1.替换viewId 2.加入panelView 数据(数据来源为template) 3.加入模板view data数据 templateData = templateData.replaceAll(originViewId,newViewId); diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index 5da8ba600b..c33d0b4abf 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -1788,7 +1788,7 @@ export default { getChart(id, queryFrom = 'panel_edit') { if (id) { getChartDetails(id, this.panelInfo.id, { queryFrom: queryFrom }).then(response => { - this.initTableData(response.data.tableId) + response.data.dataFrom !== 'template' && this.initTableData(response.data.tableId) this.view = JSON.parse(JSON.stringify(response.data)) this.view.xaxis = this.view.xaxis ? JSON.parse(this.view.xaxis) : [] this.view.xaxisExt = this.view.xaxisExt ? JSON.parse(this.view.xaxisExt) : [] @@ -2150,6 +2150,7 @@ export default { // this.save(true, 'chart', false) this.calcData(true, 'chart', false) this.initTableData(this.view.tableId) + this.closeChangeChart() }, fieldFilter(val) {