提交 945f7008 authored 作者: wangjiahao's avatar wangjiahao

feat: 从模板新建的仪表板支持查看模板缓存数据

上级 5b363b98
...@@ -71,9 +71,9 @@ ...@@ -71,9 +71,9 @@
</delete> </delete>
<insert id="savePanelView"> <insert id="savePanelView">
INSERT INTO `panel_view` (id,chart_view_id, panel_id) VALUES INSERT INTO `panel_view` (id,chart_view_id, panel_id,data_from) VALUES
<foreach collection="panelViews" item="panelView" index="index" separator=","> <foreach collection="panelViews" item="panelView" index="index" separator=",">
(uuid(),#{panelView.chartViewId},#{panelView.panelId}) (uuid(),#{panelView.chartViewId},#{panelView.panelId},#{panelView.dataFrom})
</foreach> </foreach>
</insert> </insert>
...@@ -110,6 +110,4 @@ ...@@ -110,6 +110,4 @@
and chart_view.id is not null and chart_view.id is not null
</insert> </insert>
</mapper> </mapper>
...@@ -69,4 +69,15 @@ public class CommonConstants { ...@@ -69,4 +69,15 @@ public class CommonConstants {
public static final String CACHE = "cache"; 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";
}
} }
...@@ -30,4 +30,6 @@ public class ChartViewDTO extends ChartViewWithBLOBs { ...@@ -30,4 +30,6 @@ public class ChartViewDTO extends ChartViewWithBLOBs {
private boolean drill; private boolean drill;
@ApiModelProperty("下钻条件集合") @ApiModelProperty("下钻条件集合")
private List<ChartExtFilterRequest> drillFilters; private List<ChartExtFilterRequest> drillFilters;
@ApiModelProperty("当前数据来源")
private String dataFrom;
} }
...@@ -7,6 +7,7 @@ import io.dataease.auth.service.AuthUserService; ...@@ -7,6 +7,7 @@ import io.dataease.auth.service.AuthUserService;
import io.dataease.base.domain.*; import io.dataease.base.domain.*;
import io.dataease.base.mapper.ChartViewCacheMapper; import io.dataease.base.mapper.ChartViewCacheMapper;
import io.dataease.base.mapper.ChartViewMapper; 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.ExtChartGroupMapper;
import io.dataease.base.mapper.ext.ExtChartViewMapper; import io.dataease.base.mapper.ext.ExtChartViewMapper;
import io.dataease.commons.constants.ColumnPermissionConstants; import io.dataease.commons.constants.ColumnPermissionConstants;
...@@ -23,6 +24,7 @@ import io.dataease.dto.chart.*; ...@@ -23,6 +24,7 @@ import io.dataease.dto.chart.*;
import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.DataSetTableDTO;
import io.dataease.dto.dataset.DataSetTableUnionDTO; import io.dataease.dto.dataset.DataSetTableUnionDTO;
import io.dataease.dto.dataset.DataTableInfoDTO; import io.dataease.dto.dataset.DataTableInfoDTO;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator; import io.dataease.i18n.Translator;
import io.dataease.listener.util.CacheUtils; import io.dataease.listener.util.CacheUtils;
import io.dataease.provider.ProviderFactory; import io.dataease.provider.ProviderFactory;
...@@ -34,6 +36,8 @@ import io.dataease.service.dataset.DataSetTableUnionService; ...@@ -34,6 +36,8 @@ import io.dataease.service.dataset.DataSetTableUnionService;
import io.dataease.service.dataset.PermissionService; import io.dataease.service.dataset.PermissionService;
import io.dataease.service.datasource.DatasourceService; import io.dataease.service.datasource.DatasourceService;
import io.dataease.service.engine.EngineService; 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.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -76,6 +80,12 @@ public class ChartViewService { ...@@ -76,6 +80,12 @@ public class ChartViewService {
private EngineService engineService; private EngineService engineService;
@Resource @Resource
private ChartViewCacheMapper chartViewCacheMapper; private ChartViewCacheMapper chartViewCacheMapper;
@Resource
private PanelViewService panelViewService;
@Resource
private PanelGroupExtendDataService extendDataService;
//默认使用非公平 //默认使用非公平
private ReentrantLock lock = new ReentrantLock(); private ReentrantLock lock = new ReentrantLock();
...@@ -249,13 +259,28 @@ public class ChartViewService { ...@@ -249,13 +259,28 @@ public class ChartViewService {
} }
public ChartViewDTO getData(String id, ChartExtRequest request) throws Exception { public ChartViewDTO getData(String id, ChartExtRequest request) throws Exception {
ChartViewDTO view = this.getOne(id,request.getQueryFrom()); try{
// 如果是从仪表板获取视图数据,则仪表板的查询模式,查询结果的数量,覆盖视图对应的属性 String dataFrom = panelViewService.findViewDataFrom(id);
if (CommonConstants.VIEW_QUERY_FROM.PANEL.equals(request.getQueryFrom()) && CommonConstants.VIEW_RESULT_MODE.CUSTOM.equals(request.getResultMode())) {
view.setResultMode(request.getResultMode()); if(CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(dataFrom)){
view.setResultCount(request.getResultCount()); 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<DatasetTableField> fields, List<String> desensitizationList, Boolean alowDesensitization) throws Exception { // private void checkPermissions(List<? extends ChartViewFieldBaseDTO> chartViewFieldDTOS, List<DatasetTableField> fields, List<String> desensitizationList, Boolean alowDesensitization) throws Exception {
......
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<PanelGroupExtendData> 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;
}
}
...@@ -10,6 +10,7 @@ import io.dataease.base.mapper.PanelViewMapper; ...@@ -10,6 +10,7 @@ import io.dataease.base.mapper.PanelViewMapper;
import io.dataease.base.mapper.ext.ExtChartViewMapper; import io.dataease.base.mapper.ext.ExtChartViewMapper;
import io.dataease.base.mapper.ext.ExtPanelGroupMapper; import io.dataease.base.mapper.ext.ExtPanelGroupMapper;
import io.dataease.base.mapper.ext.ExtPanelViewMapper; import io.dataease.base.mapper.ext.ExtPanelViewMapper;
import io.dataease.commons.constants.CommonConstants;
import io.dataease.commons.utils.AuthUtils; import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.BeanUtils; import io.dataease.commons.utils.BeanUtils;
import io.dataease.dto.panel.PanelViewDto; import io.dataease.dto.panel.PanelViewDto;
...@@ -130,8 +131,6 @@ public class PanelViewService { ...@@ -130,8 +131,6 @@ public class PanelViewService {
} }
} }
panelGroup.setMobileLayout(mobileLayout); panelGroup.setMobileLayout(mobileLayout);
//移除没有用到的仪表板私有视图
extPanelGroupMapper.removeUselessViews(panelId,viewIds);
return viewIds; return viewIds;
} }
...@@ -144,4 +143,26 @@ public class PanelViewService { ...@@ -144,4 +143,26 @@ public class PanelViewService {
panelViewExample.createCriteria().andCopyIdEqualTo(copyId); panelViewExample.createCriteria().andCopyIdEqualTo(copyId);
return panelViewMapper.selectByExample(panelViewExample); return panelViewMapper.selectByExample(panelViewExample);
} }
public PanelView findByViewId(String viewId){
PanelViewExample panelViewExample = new PanelViewExample();
panelViewExample.createCriteria().andChartViewIdEqualTo(viewId);
List<PanelView> 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<PanelView> result = panelViewMapper.selectByExample(panelViewExample);
if(CollectionUtils.isNotEmpty(result)&& CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(result.get(0).getDataFrom())){
return "template";
}else{
return "chart";
}
}
} }
...@@ -1327,6 +1327,7 @@ export default { ...@@ -1327,6 +1327,7 @@ export default {
} }
}, },
created() { created() {
debugger
// this.get(this.$store.state.chart.viewId); // this.get(this.$store.state.chart.viewId);
// this.initAreas() // this.initAreas()
}, },
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论