forked from github/dataease
Merge branch 'dev-v2' into pr@dev-v2@fix_flyway
This commit is contained in:
commit
2158db4f41
@ -21,11 +21,11 @@ public class MybatisPlusGenerator {
|
|||||||
/**
|
/**
|
||||||
* 业务模块例如datasource,dataset,panel等
|
* 业务模块例如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";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 下面两个配置基本上不用动
|
* 下面两个配置基本上不用动
|
||||||
|
@ -5,11 +5,11 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 仪表板模板表
|
*
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author fit2cloud
|
* @author fit2cloud
|
||||||
* @since 2023-11-06
|
* @since 2024-01-16
|
||||||
*/
|
*/
|
||||||
@TableName("visualization_template")
|
@TableName("visualization_template")
|
||||||
public class VisualizationTemplate implements Serializable {
|
public class VisualizationTemplate implements Serializable {
|
||||||
@ -37,7 +37,7 @@ public class VisualizationTemplate implements Serializable {
|
|||||||
private Integer level;
|
private Integer level;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模板种类 dataV or dashboard 目录或者文件夹
|
* 模版种类 dataV or dashboard 目录或者文件夹
|
||||||
*/
|
*/
|
||||||
private String dvType;
|
private String dvType;
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ public class VisualizationTemplate implements Serializable {
|
|||||||
private String snapshot;
|
private String snapshot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模板类型 system 系统内置 self 用户自建
|
* 模版类型 system 系统内置 self 用户自建
|
||||||
*/
|
*/
|
||||||
private String templateType;
|
private String templateType;
|
||||||
|
|
||||||
@ -81,6 +81,11 @@ public class VisualizationTemplate implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String dynamicData;
|
private String dynamicData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用次数
|
||||||
|
*/
|
||||||
|
private Integer useCount;
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
@ -185,6 +190,14 @@ public class VisualizationTemplate implements Serializable {
|
|||||||
this.dynamicData = dynamicData;
|
this.dynamicData = dynamicData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Integer getUseCount() {
|
||||||
|
return useCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUseCount(Integer useCount) {
|
||||||
|
this.useCount = useCount;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "VisualizationTemplate{" +
|
return "VisualizationTemplate{" +
|
||||||
@ -201,6 +214,7 @@ public class VisualizationTemplate implements Serializable {
|
|||||||
", templateStyle = " + templateStyle +
|
", templateStyle = " + templateStyle +
|
||||||
", templateData = " + templateData +
|
", templateData = " + templateData +
|
||||||
", dynamicData = " + dynamicData +
|
", dynamicData = " + dynamicData +
|
||||||
|
", useCount = " + useCount +
|
||||||
"}";
|
"}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,11 +6,11 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 仪表板模板表 Mapper 接口
|
* Mapper 接口
|
||||||
* </p>
|
* </p>
|
||||||
*
|
*
|
||||||
* @author fit2cloud
|
* @author fit2cloud
|
||||||
* @since 2023-11-06
|
* @since 2024-01-16
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface VisualizationTemplateMapper extends BaseMapper<VisualizationTemplate> {
|
public interface VisualizationTemplateMapper extends BaseMapper<VisualizationTemplate> {
|
||||||
|
@ -121,13 +121,17 @@ public class TemplateCenterManage {
|
|||||||
|
|
||||||
|
|
||||||
public MarketBaseResponse searchTemplateRecommend() {
|
public MarketBaseResponse searchTemplateRecommend() {
|
||||||
|
MarketTemplateV2BaseResponse v2BaseResponse = null;
|
||||||
|
Map<String, String> templateParams = sysParameterManage.groupVal("template.");
|
||||||
|
// 模版市场推荐
|
||||||
try {
|
try {
|
||||||
Map<String, String> templateParams = sysParameterManage.groupVal("template.");
|
v2BaseResponse = templateQuery(templateParams);
|
||||||
return baseResponseV2TransRecommend(templateQuery(templateParams), templateParams.get("template.url"));
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DEException.throwException(e);
|
DEException.throwException(e);
|
||||||
}
|
}
|
||||||
return null;
|
// 模版管理使用次数推荐
|
||||||
|
List<TemplateMarketDTO> manage = searchTemplateFromManage();
|
||||||
|
return baseResponseV2TransRecommend(v2BaseResponse, templateParams.get("template.url"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public MarketPreviewBaseResponse searchTemplatePreview() {
|
public MarketPreviewBaseResponse searchTemplatePreview() {
|
||||||
|
@ -102,7 +102,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
|||||||
}
|
}
|
||||||
VisualizationWatermark watermark = watermarkMapper.selectById("system_default");
|
VisualizationWatermark watermark = watermarkMapper.selectById("system_default");
|
||||||
VisualizationWatermarkVO watermarkVO = new VisualizationWatermarkVO();
|
VisualizationWatermarkVO watermarkVO = new VisualizationWatermarkVO();
|
||||||
BeanUtils.copyBean(watermarkVO,watermark);
|
BeanUtils.copyBean(watermarkVO, watermark);
|
||||||
result.setWatermarkInfo(watermarkVO);
|
result.setWatermarkInfo(watermarkVO);
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
@ -117,9 +117,9 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
|||||||
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
|
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
|
||||||
BeanUtils.copyBean(visualizationInfo, request);
|
BeanUtils.copyBean(visualizationInfo, request);
|
||||||
visualizationInfo.setNodeType(request.getNodeType() == null ? DataVisualizationConstants.NODE_TYPE.LEAF : request.getNodeType());
|
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);
|
visualizationInfo.setSelfWatermarkStatus(1);
|
||||||
}else{
|
} else {
|
||||||
visualizationInfo.setSelfWatermarkStatus(0);
|
visualizationInfo.setSelfWatermarkStatus(0);
|
||||||
}
|
}
|
||||||
Long newDvId = coreVisualizationManage.innerSave(visualizationInfo);
|
Long newDvId = coreVisualizationManage.innerSave(visualizationInfo);
|
||||||
@ -137,17 +137,17 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
|||||||
}
|
}
|
||||||
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
|
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
|
||||||
BeanUtils.copyBean(visualizationInfo, request);
|
BeanUtils.copyBean(visualizationInfo, request);
|
||||||
if(request.getSelfWatermarkStatus() != null && request.getSelfWatermarkStatus()){
|
if (request.getSelfWatermarkStatus() != null && request.getSelfWatermarkStatus()) {
|
||||||
visualizationInfo.setSelfWatermarkStatus(1);
|
visualizationInfo.setSelfWatermarkStatus(1);
|
||||||
}else{
|
} else {
|
||||||
visualizationInfo.setSelfWatermarkStatus(0);
|
visualizationInfo.setSelfWatermarkStatus(0);
|
||||||
}
|
}
|
||||||
if(DataVisualizationConstants.RESOURCE_OPT_TYPE.COPY.equals(request.getOptType())){
|
if (DataVisualizationConstants.RESOURCE_OPT_TYPE.COPY.equals(request.getOptType())) {
|
||||||
// 复制更新 新建权限插入
|
// 复制更新 新建权限插入
|
||||||
visualizationInfoMapper.deleteById(dvId);
|
visualizationInfoMapper.deleteById(dvId);
|
||||||
visualizationInfo.setNodeType(DataVisualizationConstants.NODE_TYPE.LEAF);
|
visualizationInfo.setNodeType(DataVisualizationConstants.NODE_TYPE.LEAF);
|
||||||
coreVisualizationManage.innerSave(visualizationInfo);
|
coreVisualizationManage.innerSave(visualizationInfo);
|
||||||
}else{
|
} else {
|
||||||
// 检查当前节点的pid是否一致如果不一致 需要调用move 接口(预存 可能会出现pid =-1的情况)
|
// 检查当前节点的pid是否一致如果不一致 需要调用move 接口(预存 可能会出现pid =-1的情况)
|
||||||
if (request.getPid() != -1) {
|
if (request.getPid() != -1) {
|
||||||
QueryWrapper<DataVisualizationInfo> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<DataVisualizationInfo> queryWrapper = new QueryWrapper<>();
|
||||||
@ -241,7 +241,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
|||||||
extDataVisualizationMapper.copyLinkJumpInfo(copyId);
|
extDataVisualizationMapper.copyLinkJumpInfo(copyId);
|
||||||
extDataVisualizationMapper.copyLinkJumpTargetInfo(copyId);
|
extDataVisualizationMapper.copyLinkJumpTargetInfo(copyId);
|
||||||
DataVisualizationInfo visualizationInfoTarget = new DataVisualizationInfo();
|
DataVisualizationInfo visualizationInfoTarget = new DataVisualizationInfo();
|
||||||
BeanUtils.copyBean(visualizationInfoTarget,newDv);
|
BeanUtils.copyBean(visualizationInfoTarget, newDv);
|
||||||
visualizationInfoTarget.setPid(-1L);
|
visualizationInfoTarget.setPid(-1L);
|
||||||
coreVisualizationManage.preInnerSave(visualizationInfoTarget);
|
coreVisualizationManage.preInnerSave(visualizationInfoTarget);
|
||||||
return String.valueOf(newDvId);
|
return String.valueOf(newDvId);
|
||||||
@ -271,7 +271,11 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
|||||||
name = visualizationTemplate.getName();
|
name = visualizationTemplate.getName();
|
||||||
dvType = visualizationTemplate.getDvType();
|
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)) {
|
} else if (DataVisualizationConstants.NEW_PANEL_FROM.NEW_OUTER_TEMPLATE.equals(newFrom)) {
|
||||||
templateStyle = request.getCanvasStyleData();
|
templateStyle = request.getCanvasStyleData();
|
||||||
templateData = request.getComponentData();
|
templateData = request.getComponentData();
|
||||||
@ -291,7 +295,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
|||||||
name = templateFileInfo.getName();
|
name = templateFileInfo.getName();
|
||||||
dvType = templateFileInfo.getDvType();
|
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);
|
Map<String, String> dynamicDataMap = JsonUtil.parseObject(dynamicData, Map.class);
|
||||||
@ -302,7 +306,7 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
|||||||
String originViewId = entry.getKey();
|
String originViewId = entry.getKey();
|
||||||
String originViewData = JsonUtil.toJSONString(entry.getValue()).toString();
|
String originViewData = JsonUtil.toJSONString(entry.getValue()).toString();
|
||||||
ChartViewDTO chartView = JsonUtil.parseObject(originViewData, ChartViewDTO.class);
|
ChartViewDTO chartView = JsonUtil.parseObject(originViewData, ChartViewDTO.class);
|
||||||
if(chartView == null){
|
if (chartView == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Long newViewId = IDUtils.snowID();
|
Long newViewId = IDUtils.snowID();
|
||||||
|
@ -14,5 +14,12 @@ 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}',
|
'{\"enable\":false,\"enablePanelCustom\":true,\"type\":\"custom\",\"content\":\"水印\",\"watermark_color\":\"#DD1010\",\"watermark_x_space\":12,\"watermark_y_space\":36,\"watermark_fontsize\":15}',
|
||||||
'admin', NULL);
|
'admin', NULL);
|
||||||
|
|
||||||
|
|
||||||
INSERT INTO `core_sys_setting` (`id`, `pkey`, `pval`, `type`, `sort`)
|
INSERT INTO `core_sys_setting` (`id`, `pkey`, `pval`, `type`, `sort`)
|
||||||
VALUES (9, 'basic.frontTimeOut', '60', 'text', 1);
|
VALUES (9, 'basic.frontTimeOut', '60', 'text', 1);
|
||||||
|
|
||||||
|
ALTER TABLE `visualization_template`
|
||||||
|
ADD COLUMN `use_count` int NULL DEFAULT 0 COMMENT '使用次数';
|
||||||
|
|
||||||
|
update visualization_template set use_count = 0;
|
||||||
|
INSERT INTO `core_sys_setting` (`id`, `pkey`, `pval`, `type`, `sort`) VALUES (9, 'basic.frontTimeOut', '60', 'text', 1);
|
||||||
|
@ -11,4 +11,8 @@ CREATE TABLE `visualization_watermark` (
|
|||||||
|
|
||||||
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);
|
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;
|
||||||
INSERT INTO `core_sys_setting` (`id`, `pkey`, `pval`, `type`, `sort`) VALUES (9, 'basic.frontTimeOut', '60', 'text', 1);
|
INSERT INTO `core_sys_setting` (`id`, `pkey`, `pval`, `type`, `sort`) VALUES (9, 'basic.frontTimeOut', '60', 'text', 1);
|
@ -53,12 +53,13 @@
|
|||||||
vt.create_time,
|
vt.create_time,
|
||||||
vt.template_type,
|
vt.template_type,
|
||||||
vt.SNAPSHOT,
|
vt.SNAPSHOT,
|
||||||
|
vt.use_count,
|
||||||
vtcm.category_id,
|
vtcm.category_id,
|
||||||
cor.time as 'recent_use_time'
|
cor.time as 'recent_use_time'
|
||||||
FROM visualization_template vt
|
FROM visualization_template vt
|
||||||
LEFT JOIN visualization_template_category_map vtcm ON vt.id = vtcm.template_id
|
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
|
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>
|
||||||
|
|
||||||
<select id="findCategories" resultMap="BaseResultMapDTO">
|
<select id="findCategories" resultMap="BaseResultMapDTO">
|
||||||
|
@ -468,6 +468,14 @@ const categoryClick = params => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const saveTemplateEdit = templateEditForm => {
|
const saveTemplateEdit = templateEditForm => {
|
||||||
|
if (templateEditForm.name === '最近使用') {
|
||||||
|
ElMessage({
|
||||||
|
message: '不合法命名,请更换!',
|
||||||
|
type: 'error',
|
||||||
|
showClose: true
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
templateEditFormRef.value.validate(valid => {
|
templateEditFormRef.value.validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
save({ ...templateEditForm }).then(response => {
|
save({ ...templateEditForm }).then(response => {
|
||||||
|
@ -76,6 +76,11 @@ public class VisualizationTemplateVO {
|
|||||||
*/
|
*/
|
||||||
private String dynamicData;
|
private String dynamicData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 使用次数
|
||||||
|
*/
|
||||||
|
private Integer useCount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分类
|
* 分类
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user