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 fcff7b352d..734e139dd0 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 @@ -6,10 +6,12 @@ import io.dataease.api.chart.dto.ChartViewDTO; import io.dataease.api.chart.dto.ViewDetailField; import io.dataease.api.chart.request.ChartExcelRequest; import io.dataease.chart.manage.ChartDataManage; +import io.dataease.constant.CommonConstants; import io.dataease.engine.constant.DeTypeConstants; import io.dataease.exception.DEException; import io.dataease.result.ResultCode; import io.dataease.utils.LogUtil; +import io.dataease.visualization.manage.VisualizationTemplateExtendDataManage; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.collections4.CollectionUtils; @@ -41,10 +43,18 @@ public class ChartDataServer implements ChartDataApi { @Resource private ChartDataManage chartDataManage; + @Resource + private VisualizationTemplateExtendDataManage extendDataManage; + @Override public ChartViewDTO getData(ChartViewDTO chartViewDTO) throws Exception { try { - return chartDataManage.calcData(chartViewDTO); + // 从模版数据获取 + if(CommonConstants.VIEW_DATA_FROM.TEMPLATE.equalsIgnoreCase(chartViewDTO.getDataFrom())){ + return extendDataManage.getChartDataInfo(chartViewDTO.getId(),chartViewDTO); + }else{ + return chartDataManage.calcData(chartViewDTO); + } } catch (Exception e) { DEException.throwException(ResultCode.DATA_IS_WRONG.code(), e.getMessage()); } diff --git a/core/core-backend/src/main/java/io/dataease/menu/manage/MenuManage.java b/core/core-backend/src/main/java/io/dataease/menu/manage/MenuManage.java index a28896d782..7081cead3c 100644 --- a/core/core-backend/src/main/java/io/dataease/menu/manage/MenuManage.java +++ b/core/core-backend/src/main/java/io/dataease/menu/manage/MenuManage.java @@ -39,7 +39,7 @@ public class MenuManage { return convertTree(treeNodes); } - @Cacheable(cacheNames = CORE_MENU_CACHE, key = "'-dataease-'") +// @Cacheable(cacheNames = CORE_MENU_CACHE, key = "'-dataease-'") public List coreMenus() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.orderByAsc("menu_sort"); diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java index 8a73c7640d..549c25d194 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/DataVisualizationServer.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.dataease.api.chart.dto.ChartViewDTO; import io.dataease.api.template.dto.TemplateManageFileDTO; +import io.dataease.api.template.dto.VisualizationTemplateExtendDataDTO; import io.dataease.api.visualization.DataVisualizationApi; import io.dataease.api.visualization.request.DataVisualizationBaseRequest; import io.dataease.api.visualization.request.VisualizationWorkbranchQueryRequest; @@ -20,6 +21,8 @@ import io.dataease.license.config.XpackInteract; import io.dataease.model.BusiNodeRequest; import io.dataease.model.BusiNodeVO; import io.dataease.template.dao.auto.entity.VisualizationTemplate; +import io.dataease.template.dao.auto.entity.VisualizationTemplateExtendData; +import io.dataease.template.dao.auto.mapper.VisualizationTemplateExtendDataMapper; import io.dataease.template.dao.auto.mapper.VisualizationTemplateMapper; import io.dataease.template.manage.TemplateMarketManage; import io.dataease.utils.AuthUtils; @@ -73,6 +76,9 @@ public class DataVisualizationServer implements DataVisualizationApi { @Resource private StaticResourceServer staticResourceServer; + @Resource + private VisualizationTemplateExtendDataMapper templateExtendDataMapper; + @Override @XpackInteract(value = "dataVisualizationServer", original = true) @@ -256,7 +262,7 @@ public class DataVisualizationServer implements DataVisualizationApi { Map dynamicDataMap = JsonUtil.parseObject(dynamicData, Map.class); List chartViews = new ArrayList<>(); Map canvasViewInfo = new HashMap<>(); -// List viewsData = new ArrayList<>(); + Map extendDataInfo = new HashMap<>(); for (Map.Entry entry : dynamicDataMap.entrySet()) { String originViewId = entry.getKey(); String originViewData = entry.getValue(); @@ -265,17 +271,21 @@ public class DataVisualizationServer implements DataVisualizationApi { chartView.setId(newViewId); chartView.setSceneId(newDvId); chartView.setDataFrom(CommonConstants.VIEW_DATA_FROM.TEMPLATE); - // 数据处理 1.替换viewId 2.加入panelView 数据(数据来源为template) 3.加入模板view data数据 - // viewsData.add(new PanelGroupExtendDataDTO(newPanelId, newViewId, originViewData)); + // 数据处理 1.替换viewId 2.加入模板view data数据 + VisualizationTemplateExtendDataDTO extendDataDTO = new VisualizationTemplateExtendDataDTO(newViewId, newDvId,originViewData); + extendDataInfo.put(newViewId, extendDataDTO); templateData = templateData.replaceAll(originViewId, newViewId.toString()); chartViewManege.save(chartView); canvasViewInfo.put(chartView.getId(),chartView); + //插入模版数据 此处预先插入减少数据交互量 + VisualizationTemplateExtendData extendData = new VisualizationTemplateExtendData(); + templateExtendDataMapper.insert(BeanUtils.copyBean(extendData,extendDataDTO)); } request.setComponentData(templateData); request.setCanvasStyleData(templateStyle); //Store static resource into the server staticResourceServer.saveFilesToServe(staticResource); - return new DataVisualizationVO(newDvId,name,dvType,templateStyle,templateData,canvasViewInfo); + return new DataVisualizationVO(newDvId,name,dvType,templateStyle,templateData,canvasViewInfo,null); } @Override diff --git a/core/core-frontend/src/api/visualization/dataVisualization.ts b/core/core-frontend/src/api/visualization/dataVisualization.ts index 10cb7c5204..c322c48ebc 100644 --- a/core/core-frontend/src/api/visualization/dataVisualization.ts +++ b/core/core-frontend/src/api/visualization/dataVisualization.ts @@ -67,3 +67,5 @@ export const storeApi = (data): Promise => { export const storeStatusApi = (id: string): Promise => { return request.get({ url: `/store/favorited/${id}` }) } + +export const decompression = data => request.post({ url: '/dataVisualization/decompression', data }) diff --git a/core/core-frontend/src/views/common/DeResourceCreateOpt.vue b/core/core-frontend/src/views/common/DeResourceCreateOpt.vue new file mode 100644 index 0000000000..cc4060d174 --- /dev/null +++ b/core/core-frontend/src/views/common/DeResourceCreateOpt.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/core/core-frontend/src/views/common/DeResourceTree.vue b/core/core-frontend/src/views/common/DeResourceTree.vue index bbba4c9256..e0aea11ed1 100644 --- a/core/core-frontend/src/views/common/DeResourceTree.vue +++ b/core/core-frontend/src/views/common/DeResourceTree.vue @@ -102,6 +102,11 @@ state.resourceTypeList = [ svgName: curCanvasType.value === 'dashboard' ? 'dv-dashboard-spine' : 'dv-screen-spine', command: 'newLeaf' }, + { + label: '从模版新建', + svgName: curCanvasType.value === 'dashboard' ? 'dv-dashboard-spine' : 'dv-screen-spine', + command: 'newFromTemplate' + }, { label: '新建文件夹', divided: true, @@ -236,6 +241,9 @@ const addOperation = ( } else { window.open(baseUrl, '_blank') } + } else if(cmd === 'newFromTemplate') { + // newFromTemplate + } else { resourceGroupOpt.value.optInit(nodeType, data || {}, cmd, parentSelect) } diff --git a/core/core-frontend/src/views/common/DeTemplateList.vue b/core/core-frontend/src/views/common/DeTemplateList.vue new file mode 100644 index 0000000000..cbd65365eb --- /dev/null +++ b/core/core-frontend/src/views/common/DeTemplateList.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/template/dto/VisualizationTemplateExtendDataDTO.java b/sdk/api/api-base/src/main/java/io/dataease/api/template/dto/VisualizationTemplateExtendDataDTO.java new file mode 100644 index 0000000000..3a2c3971f9 --- /dev/null +++ b/sdk/api/api-base/src/main/java/io/dataease/api/template/dto/VisualizationTemplateExtendDataDTO.java @@ -0,0 +1,26 @@ +package io.dataease.api.template.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.dataease.api.template.vo.VisualizationTemplateExtendDataVO; +import io.dataease.utils.IDUtils; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author : WangJiaHao + * @date : 2023/11/13 10:25 + */ +@Data +@NoArgsConstructor +public class VisualizationTemplateExtendDataDTO extends VisualizationTemplateExtendDataVO { + + + public VisualizationTemplateExtendDataDTO(Long dvId, Long viewId, String viewDetails) { + super(); + super.setId(IDUtils.snowID()); + super.setDvId(dvId); + super.setViewId(viewId); + super.setViewDetails(viewDetails); + } +} diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/template/vo/VisualizationTemplateExtendDataVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/template/vo/VisualizationTemplateExtendDataVO.java new file mode 100644 index 0000000000..fcf1cf5080 --- /dev/null +++ b/sdk/api/api-base/src/main/java/io/dataease/api/template/vo/VisualizationTemplateExtendDataVO.java @@ -0,0 +1,26 @@ +package io.dataease.api.template.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +/** + * @author : WangJiaHao + * @date : 2023/11/13 10:25 + */ +@Data +public class VisualizationTemplateExtendDataVO { + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + @JsonSerialize(using = ToStringSerializer.class) + private Long dvId; + @JsonSerialize(using = ToStringSerializer.class) + private Long viewId; + + private String viewDetails; + + private String copyFrom; + + private String copyId; + +} diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/DataVisualizationVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/DataVisualizationVO.java index f0921799d6..3f733f6bf1 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/DataVisualizationVO.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/DataVisualizationVO.java @@ -3,6 +3,7 @@ package io.dataease.api.visualization.vo; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.dataease.api.chart.dto.ChartViewDTO; +import io.dataease.api.template.dto.VisualizationTemplateExtendDataDTO; import lombok.Data; import lombok.NoArgsConstructor; @@ -13,7 +14,7 @@ import java.util.Map; @Data @NoArgsConstructor -public class DataVisualizationVO implements Serializable { +public class DataVisualizationVO implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private Long id; @@ -121,14 +122,20 @@ public class DataVisualizationVO implements Serializable { /** * 视图基本信息 */ - private Map canvasViewInfo = new HashMap<>(); + private Map canvasViewInfo = new HashMap<>(); - public DataVisualizationVO(Long id, String name, String type, String canvasStyleData, String componentData, Map canvasViewInfo) { + /** + * 视图模版数据 + */ + private Map extendDataInfo = new HashMap<>(); + + public DataVisualizationVO(Long id, String name, String type, String canvasStyleData, String componentData, Map canvasViewInfo, Map extendDataInfo) { this.id = id; this.name = name; this.type = type; this.canvasStyleData = canvasStyleData; this.componentData = componentData; this.canvasViewInfo = canvasViewInfo; + this.extendDataInfo = extendDataInfo; } }