From 945f7008a1fdb58f8dc851b5aeab7e612f95034e Mon Sep 17 00:00:00 2001
From: wangjiahao <1522128093@qq.com>
Date: Tue, 15 Mar 2022 18:00:19 +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
---
.../base/mapper/ext/ExtPanelViewMapper.xml | 6 +--
.../commons/constants/CommonConstants.java | 11 +++++
.../io/dataease/dto/chart/ChartViewDTO.java | 2 +
.../service/chart/ChartViewService.java | 37 +++++++++++++---
.../panel/PanelGroupExtendDataService.java | 42 +++++++++++++++++++
.../service/panel/PanelViewService.java | 25 ++++++++++-
frontend/src/views/chart/view/ChartEdit.vue | 1 +
7 files changed, 112 insertions(+), 12 deletions(-)
create mode 100644 backend/src/main/java/io/dataease/service/panel/PanelGroupExtendDataService.java
diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.xml
index 1772e2b8e3..f069ba5423 100644
--- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.xml
+++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtPanelViewMapper.xml
@@ -71,9 +71,9 @@
- INSERT INTO `panel_view` (id,chart_view_id, panel_id) VALUES
+ INSERT INTO `panel_view` (id,chart_view_id, panel_id,data_from) VALUES
- (uuid(),#{panelView.chartViewId},#{panelView.panelId})
+ (uuid(),#{panelView.chartViewId},#{panelView.panelId},#{panelView.dataFrom})
@@ -110,6 +110,4 @@
and chart_view.id is not null
-
-
diff --git a/backend/src/main/java/io/dataease/commons/constants/CommonConstants.java b/backend/src/main/java/io/dataease/commons/constants/CommonConstants.java
index 88c87e6db5..a0ec952d86 100644
--- a/backend/src/main/java/io/dataease/commons/constants/CommonConstants.java
+++ b/backend/src/main/java/io/dataease/commons/constants/CommonConstants.java
@@ -69,4 +69,15 @@ public class CommonConstants {
public static final String CACHE = "cache";
}
+
+ //视图数据读取来源
+ public static final class VIEW_DATA_FROM {
+
+ // 模板数据
+ public static final String TEMPLATE = "template";
+
+ // 视图数据
+ public static final String CHART = "chart";
+
+ }
}
diff --git a/backend/src/main/java/io/dataease/dto/chart/ChartViewDTO.java b/backend/src/main/java/io/dataease/dto/chart/ChartViewDTO.java
index baf32b4497..b2b87efef1 100644
--- a/backend/src/main/java/io/dataease/dto/chart/ChartViewDTO.java
+++ b/backend/src/main/java/io/dataease/dto/chart/ChartViewDTO.java
@@ -30,4 +30,6 @@ public class ChartViewDTO extends ChartViewWithBLOBs {
private boolean drill;
@ApiModelProperty("下钻条件集合")
private List drillFilters;
+ @ApiModelProperty("当前数据来源")
+ private String dataFrom;
}
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 69778f5f6e..a776aaff94 100644
--- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java
+++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java
@@ -7,6 +7,7 @@ import io.dataease.auth.service.AuthUserService;
import io.dataease.base.domain.*;
import io.dataease.base.mapper.ChartViewCacheMapper;
import io.dataease.base.mapper.ChartViewMapper;
+import io.dataease.base.mapper.PanelViewMapper;
import io.dataease.base.mapper.ext.ExtChartGroupMapper;
import io.dataease.base.mapper.ext.ExtChartViewMapper;
import io.dataease.commons.constants.ColumnPermissionConstants;
@@ -23,6 +24,7 @@ import io.dataease.dto.chart.*;
import io.dataease.dto.dataset.DataSetTableDTO;
import io.dataease.dto.dataset.DataSetTableUnionDTO;
import io.dataease.dto.dataset.DataTableInfoDTO;
+import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import io.dataease.listener.util.CacheUtils;
import io.dataease.provider.ProviderFactory;
@@ -34,6 +36,8 @@ import io.dataease.service.dataset.DataSetTableUnionService;
import io.dataease.service.dataset.PermissionService;
import io.dataease.service.datasource.DatasourceService;
import io.dataease.service.engine.EngineService;
+import io.dataease.service.panel.PanelGroupExtendDataService;
+import io.dataease.service.panel.PanelViewService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@@ -76,6 +80,12 @@ public class ChartViewService {
private EngineService engineService;
@Resource
private ChartViewCacheMapper chartViewCacheMapper;
+ @Resource
+ private PanelViewService panelViewService;
+ @Resource
+ private PanelGroupExtendDataService extendDataService;
+
+
//默认使用非公平
private ReentrantLock lock = new ReentrantLock();
@@ -249,13 +259,28 @@ public class ChartViewService {
}
public ChartViewDTO getData(String id, ChartExtRequest request) throws Exception {
- ChartViewDTO view = this.getOne(id,request.getQueryFrom());
- // 如果是从仪表板获取视图数据,则仪表板的查询模式,查询结果的数量,覆盖视图对应的属性
- if (CommonConstants.VIEW_QUERY_FROM.PANEL.equals(request.getQueryFrom()) && CommonConstants.VIEW_RESULT_MODE.CUSTOM.equals(request.getResultMode())) {
- view.setResultMode(request.getResultMode());
- view.setResultCount(request.getResultCount());
+ try{
+ String dataFrom = panelViewService.findViewDataFrom(id);
+
+ if(CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(dataFrom)){
+ return extendDataService.getChartInfo(id);
+ }else{// 从视图读取数据
+
+ ChartViewDTO view = this.getOne(id,request.getQueryFrom());
+ view.setDataFrom(dataFrom);
+ // 如果是从仪表板获取视图数据,则仪表板的查询模式,查询结果的数量,覆盖视图对应的属性
+ if (CommonConstants.VIEW_QUERY_FROM.PANEL.equals(request.getQueryFrom()) && CommonConstants.VIEW_RESULT_MODE.CUSTOM.equals(request.getResultMode())) {
+ view.setResultMode(request.getResultMode());
+ view.setResultCount(request.getResultCount());
+ }
+ return calcData(view, request, request.isCache());
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ DataEaseException.throwException(e);
}
- return calcData(view, request, request.isCache());
+ return null;
+
}
// private void checkPermissions(List extends ChartViewFieldBaseDTO> chartViewFieldDTOS, List fields, List desensitizationList, Boolean alowDesensitization) throws Exception {
diff --git a/backend/src/main/java/io/dataease/service/panel/PanelGroupExtendDataService.java b/backend/src/main/java/io/dataease/service/panel/PanelGroupExtendDataService.java
new file mode 100644
index 0000000000..ef7df79585
--- /dev/null
+++ b/backend/src/main/java/io/dataease/service/panel/PanelGroupExtendDataService.java
@@ -0,0 +1,42 @@
+package io.dataease.service.panel;
+
+import com.alibaba.fastjson.JSONObject;
+import io.dataease.base.domain.PanelGroupExtendData;
+import io.dataease.base.domain.PanelGroupExtendDataExample;
+import io.dataease.base.mapper.PanelGroupExtendDataMapper;
+import io.dataease.commons.constants.CommonConstants;
+import io.dataease.dto.chart.ChartViewDTO;
+import io.dataease.exception.DataEaseException;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * Author: wangjiahao
+ * Date: 2022/3/15
+ * Description:
+ */
+@Service
+public class PanelGroupExtendDataService {
+
+ @Resource
+ private PanelGroupExtendDataMapper panelGroupExtendDataMapper;
+
+ public ChartViewDTO getChartInfo(String viewId){
+ PanelGroupExtendDataExample extendDataExample = new PanelGroupExtendDataExample();
+ extendDataExample.createCriteria().andViewIdEqualTo(viewId);
+ List extendDataList = panelGroupExtendDataMapper.selectByExampleWithBLOBs(extendDataExample);
+ if(CollectionUtils.isNotEmpty(extendDataList)){
+ ChartViewDTO chartView = JSONObject.parseObject(extendDataList.get(0).getViewDetails(),ChartViewDTO.class);
+ chartView.setDataFrom(CommonConstants.VIEW_DATA_FROM.TEMPLATE);
+ return chartView;
+ }else{
+ DataEaseException.throwException("模板缓存数据中未获取指定视图数据:"+viewId);
+ }
+ return null;
+ }
+
+
+}
diff --git a/backend/src/main/java/io/dataease/service/panel/PanelViewService.java b/backend/src/main/java/io/dataease/service/panel/PanelViewService.java
index e18bc677af..73a90ef673 100644
--- a/backend/src/main/java/io/dataease/service/panel/PanelViewService.java
+++ b/backend/src/main/java/io/dataease/service/panel/PanelViewService.java
@@ -10,6 +10,7 @@ import io.dataease.base.mapper.PanelViewMapper;
import io.dataease.base.mapper.ext.ExtChartViewMapper;
import io.dataease.base.mapper.ext.ExtPanelGroupMapper;
import io.dataease.base.mapper.ext.ExtPanelViewMapper;
+import io.dataease.commons.constants.CommonConstants;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.dto.panel.PanelViewDto;
@@ -130,8 +131,6 @@ public class PanelViewService {
}
}
panelGroup.setMobileLayout(mobileLayout);
- //移除没有用到的仪表板私有视图
- extPanelGroupMapper.removeUselessViews(panelId,viewIds);
return viewIds;
}
@@ -144,4 +143,26 @@ public class PanelViewService {
panelViewExample.createCriteria().andCopyIdEqualTo(copyId);
return panelViewMapper.selectByExample(panelViewExample);
}
+
+ public PanelView findByViewId(String viewId){
+ PanelViewExample panelViewExample = new PanelViewExample();
+ panelViewExample.createCriteria().andChartViewIdEqualTo(viewId);
+ List result = panelViewMapper.selectByExample(panelViewExample);
+ if(CollectionUtils.isNotEmpty(result)){
+ return result.get(0);
+ }else{
+ return null;
+ }
+ }
+
+ public String findViewDataFrom(String viewId){
+ PanelViewExample panelViewExample = new PanelViewExample();
+ panelViewExample.createCriteria().andChartViewIdEqualTo(viewId);
+ List result = panelViewMapper.selectByExample(panelViewExample);
+ if(CollectionUtils.isNotEmpty(result)&& CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(result.get(0).getDataFrom())){
+ return "template";
+ }else{
+ return "chart";
+ }
+ }
}
diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue
index a853736e20..000ad09c5c 100644
--- a/frontend/src/views/chart/view/ChartEdit.vue
+++ b/frontend/src/views/chart/view/ChartEdit.vue
@@ -1327,6 +1327,7 @@ export default {
}
},
created() {
+ debugger
// this.get(this.$store.state.chart.viewId);
// this.initAreas()
},