refactor: 工作台中的推荐模板中可以展示自定义的用户模板

This commit is contained in:
wangjiahao 2024-01-16 15:57:57 +08:00
parent 60ffb1bd5e
commit 881a60dfa3
9 changed files with 61 additions and 23 deletions

View File

@ -21,11 +21,11 @@ public class MybatisPlusGenerator {
/**
* 业务模块例如datasource,dataset,panel等
*/
private static final String busi = "visualization";
private static final String busi = "template";
/**
* 这是要生成代码的表名称
*/
private static final String TABLE_NAME = "visualization_watermark";
private static final String TABLE_NAME = "visualization_template";
/**
* 下面两个配置基本上不用动

View File

@ -5,11 +5,11 @@ import java.io.Serializable;
/**
* <p>
* 仪表板模板表
*
* </p>
*
* @author fit2cloud
* @since 2023-11-06
* @since 2024-01-16
*/
@TableName("visualization_template")
public class VisualizationTemplate implements Serializable {
@ -37,7 +37,7 @@ public class VisualizationTemplate implements Serializable {
private Integer level;
/**
* 种类 dataV or dashboard 目录或者文件夹
* 种类 dataV or dashboard 目录或者文件夹
*/
private String dvType;
@ -62,7 +62,7 @@ public class VisualizationTemplate implements Serializable {
private String snapshot;
/**
* 类型 system 系统内置 self 用户自建
* 类型 system 系统内置 self 用户自建
*/
private String templateType;
@ -81,6 +81,11 @@ public class VisualizationTemplate implements Serializable {
*/
private String dynamicData;
/**
* 使用次数
*/
private Integer useCount;
public String getId() {
return id;
}
@ -185,6 +190,14 @@ public class VisualizationTemplate implements Serializable {
this.dynamicData = dynamicData;
}
public Integer getUseCount() {
return useCount;
}
public void setUseCount(Integer useCount) {
this.useCount = useCount;
}
@Override
public String toString() {
return "VisualizationTemplate{" +
@ -201,6 +214,7 @@ public class VisualizationTemplate implements Serializable {
", templateStyle = " + templateStyle +
", templateData = " + templateData +
", dynamicData = " + dynamicData +
", useCount = " + useCount +
"}";
}
}

View File

@ -6,11 +6,11 @@ import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 仪表板模板表 Mapper 接口
* Mapper 接口
* </p>
*
* @author fit2cloud
* @since 2023-11-06
* @since 2024-01-16
*/
@Mapper
public interface VisualizationTemplateMapper extends BaseMapper<VisualizationTemplate> {

View File

@ -121,13 +121,17 @@ public class TemplateCenterManage {
public MarketBaseResponse searchTemplateRecommend() {
MarketTemplateV2BaseResponse v2BaseResponse = null;
Map<String, String> templateParams = sysParameterManage.groupVal("template.");
// 模版市场推荐
try {
Map<String, String> templateParams = sysParameterManage.groupVal("template.");
return baseResponseV2TransRecommend(templateQuery(templateParams), templateParams.get("template.url"));
v2BaseResponse = templateQuery(templateParams);
} catch (Exception e) {
DEException.throwException(e);
}
return null;
// 模版管理使用次数推荐
List<TemplateMarketDTO> manage = searchTemplateFromManage();
return baseResponseV2TransRecommend(v2BaseResponse, templateParams.get("template.url"));
}
public MarketPreviewBaseResponse searchTemplatePreview() {

View File

@ -102,7 +102,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
}
VisualizationWatermark watermark = watermarkMapper.selectById("system_default");
VisualizationWatermarkVO watermarkVO = new VisualizationWatermarkVO();
BeanUtils.copyBean(watermarkVO,watermark);
BeanUtils.copyBean(watermarkVO, watermark);
result.setWatermarkInfo(watermarkVO);
return result;
} else {
@ -117,9 +117,9 @@ public class DataVisualizationServer implements DataVisualizationApi {
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
BeanUtils.copyBean(visualizationInfo, request);
visualizationInfo.setNodeType(request.getNodeType() == null ? DataVisualizationConstants.NODE_TYPE.LEAF : request.getNodeType());
if(request.getSelfWatermarkStatus() != null && request.getSelfWatermarkStatus()){
if (request.getSelfWatermarkStatus() != null && request.getSelfWatermarkStatus()) {
visualizationInfo.setSelfWatermarkStatus(1);
}else{
} else {
visualizationInfo.setSelfWatermarkStatus(0);
}
Long newDvId = coreVisualizationManage.innerSave(visualizationInfo);
@ -137,17 +137,17 @@ public class DataVisualizationServer implements DataVisualizationApi {
}
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
BeanUtils.copyBean(visualizationInfo, request);
if(request.getSelfWatermarkStatus() != null && request.getSelfWatermarkStatus()){
if (request.getSelfWatermarkStatus() != null && request.getSelfWatermarkStatus()) {
visualizationInfo.setSelfWatermarkStatus(1);
}else{
} else {
visualizationInfo.setSelfWatermarkStatus(0);
}
if(DataVisualizationConstants.RESOURCE_OPT_TYPE.COPY.equals(request.getOptType())){
if (DataVisualizationConstants.RESOURCE_OPT_TYPE.COPY.equals(request.getOptType())) {
// 复制更新 新建权限插入
visualizationInfoMapper.deleteById(dvId);
visualizationInfo.setNodeType(DataVisualizationConstants.NODE_TYPE.LEAF);
coreVisualizationManage.innerSave(visualizationInfo);
}else{
} else {
// 检查当前节点的pid是否一致如果不一致 需要调用move 接口(预存 可能会出现pid =-1的情况)
if (request.getPid() != -1) {
QueryWrapper<DataVisualizationInfo> queryWrapper = new QueryWrapper<>();
@ -241,7 +241,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
extDataVisualizationMapper.copyLinkJumpInfo(copyId);
extDataVisualizationMapper.copyLinkJumpTargetInfo(copyId);
DataVisualizationInfo visualizationInfoTarget = new DataVisualizationInfo();
BeanUtils.copyBean(visualizationInfoTarget,newDv);
BeanUtils.copyBean(visualizationInfoTarget, newDv);
visualizationInfoTarget.setPid(-1L);
coreVisualizationManage.preInnerSave(visualizationInfoTarget);
return String.valueOf(newDvId);
@ -271,7 +271,11 @@ public class DataVisualizationServer implements DataVisualizationApi {
name = visualizationTemplate.getName();
dvType = visualizationTemplate.getDvType();
// 模板市场记录
coreOptRecentManage.saveOpt(request.getTemplateId(), OptConstants.OPT_RESOURCE_TYPE.TEMPLATE,OptConstants.OPT_TYPE.NEW);
coreOptRecentManage.saveOpt(request.getTemplateId(), OptConstants.OPT_RESOURCE_TYPE.TEMPLATE, OptConstants.OPT_TYPE.NEW);
VisualizationTemplate visualizationTemplateUpdate = new VisualizationTemplate();
visualizationTemplateUpdate.setId(visualizationTemplate.getId());
visualizationTemplateUpdate.setUseCount(visualizationTemplate.getUseCount() == null ? 0 : visualizationTemplate.getUseCount() + 1);
templateMapper.updateById(visualizationTemplateUpdate);
} else if (DataVisualizationConstants.NEW_PANEL_FROM.NEW_OUTER_TEMPLATE.equals(newFrom)) {
templateStyle = request.getCanvasStyleData();
templateData = request.getComponentData();
@ -291,7 +295,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
name = templateFileInfo.getName();
dvType = templateFileInfo.getDvType();
// 模板市场记录
coreOptRecentManage.saveOpt(request.getResourceName(), OptConstants.OPT_RESOURCE_TYPE.TEMPLATE,OptConstants.OPT_TYPE.NEW);
coreOptRecentManage.saveOpt(request.getResourceName(), OptConstants.OPT_RESOURCE_TYPE.TEMPLATE, OptConstants.OPT_TYPE.NEW);
}
// 解析动态数据
Map<String, String> dynamicDataMap = JsonUtil.parseObject(dynamicData, Map.class);
@ -302,7 +306,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
String originViewId = entry.getKey();
String originViewData = JsonUtil.toJSONString(entry.getValue()).toString();
ChartViewDTO chartView = JsonUtil.parseObject(originViewData, ChartViewDTO.class);
if(chartView == null){
if (chartView == null) {
continue;
}
Long newViewId = IDUtils.snowID();

View File

@ -10,3 +10,8 @@ CREATE TABLE `visualization_watermark` (
) COMMENT='仪表板水印设置表';
INSERT INTO `visualization_watermark` (`id`, `version`, `setting_content`, `create_by`, `create_time`) VALUES ('system_default', '1.0', '{\"enable\":false,\"enablePanelCustom\":true,\"type\":\"custom\",\"content\":\"水印\",\"watermark_color\":\"#DD1010\",\"watermark_x_space\":12,\"watermark_y_space\":36,\"watermark_fontsize\":15}', 'admin', NULL);
ALTER TABLE `visualization_template`
ADD COLUMN `use_count` int NULL DEFAULT 0 COMMENT '使用次数' AFTER `dynamic_data`;
update visualization_template set use_count = 0;

View File

@ -10,3 +10,8 @@ CREATE TABLE `visualization_watermark` (
) COMMENT='仪表板水印设置表';
INSERT INTO `visualization_watermark` (`id`, `version`, `setting_content`, `create_by`, `create_time`) VALUES ('system_default', '1.0', '{\"enable\":false,\"enablePanelCustom\":true,\"type\":\"custom\",\"content\":\"水印\",\"watermark_color\":\"#DD1010\",\"watermark_x_space\":12,\"watermark_y_space\":36,\"watermark_fontsize\":15}', 'admin', NULL);
ALTER TABLE `visualization_template`
ADD COLUMN `use_count` int NULL DEFAULT 0 COMMENT '使用次数' AFTER `dynamic_data`;
update visualization_template set use_count = 0;

View File

@ -53,12 +53,13 @@
vt.create_time,
vt.template_type,
vt.SNAPSHOT,
vt.use_count,
vtcm.category_id,
cor.time as 'recent_use_time'
FROM visualization_template vt
LEFT JOIN visualization_template_category_map vtcm ON vt.id = vtcm.template_id
left JOIN core_opt_recent cor on cor.resource_type = 6 and vt.id = cor.resource_name
ORDER BY vt.create_time DESC
ORDER BY vt.use_count ,vt.create_time DESC
</select>
<select id="findCategories" resultMap="BaseResultMapDTO">

View File

@ -76,6 +76,11 @@ public class VisualizationTemplateVO {
*/
private String dynamicData;
/**
* 使用次数
*/
private Integer useCount;
/**
* 分类
*/