forked from github/dataease
feat: 从模板新建的仪表板支持查看模板缓存数据
This commit is contained in:
parent
5b363b985b
commit
945f7008a1
@ -71,9 +71,9 @@
|
||||
</delete>
|
||||
|
||||
<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=",">
|
||||
(uuid(),#{panelView.chartViewId},#{panelView.panelId})
|
||||
(uuid(),#{panelView.chartViewId},#{panelView.panelId},#{panelView.dataFrom})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
@ -110,6 +110,4 @@
|
||||
and chart_view.id is not null
|
||||
</insert>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
|
@ -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";
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -30,4 +30,6 @@ public class ChartViewDTO extends ChartViewWithBLOBs {
|
||||
private boolean drill;
|
||||
@ApiModelProperty("下钻条件集合")
|
||||
private List<ChartExtFilterRequest> drillFilters;
|
||||
@ApiModelProperty("当前数据来源")
|
||||
private String dataFrom;
|
||||
}
|
||||
|
@ -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<DatasetTableField> fields, List<String> desensitizationList, Boolean alowDesensitization) throws Exception {
|
||||
|
@ -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<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;
|
||||
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<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 {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
debugger
|
||||
// this.get(this.$store.state.chart.viewId);
|
||||
// this.initAreas()
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user