Pārlūkot izejas kodu

fix: 优化大屏预览数据处理

优化大屏预览数据处理
hong.yang 1 gadu atpakaļ
vecāks
revīzija
c5811ca4c0

+ 1 - 1
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/basic/entity/PagePreviewEntity.java

@@ -21,7 +21,7 @@ import java.util.Date;
 @Data
 @Data
 @TableName(value = "big_screen_page_preview", autoResultMap = true)
 @TableName(value = "big_screen_page_preview", autoResultMap = true)
 @ApiModel
 @ApiModel
-public class PagePreviewEntity extends SuperEntity implements Serializable {
+public class PagePreviewEntity implements Serializable {
 
 
     @TableId
     @TableId
     @ApiModelProperty(notes = "主键")
     @ApiModelProperty(notes = "主键")

+ 33 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/basic/task/PreviewClearTask.java

@@ -0,0 +1,33 @@
+package com.gccloud.dataroom.core.module.basic.task;
+
+import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 每日定时清理预览临时表数据
+ * @author hongyang
+ * @version 1.0
+ * @date 2023/9/13 10:37
+ */
+@EnableScheduling
+@Component
+@Slf4j
+public class PreviewClearTask {
+
+    @Resource
+    private IDataRoomPagePreviewService previewService;
+
+
+    @Scheduled(cron = "0 0 1 * * ?")
+    private void clear() {
+        log.info("开始清理预览数据");
+        previewService.clear();
+    }
+
+
+}

+ 5 - 0
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/IDataRoomPagePreviewService.java

@@ -28,4 +28,9 @@ public interface IDataRoomPagePreviewService extends ISuperService<PagePreviewEn
      */
      */
     PagePreviewEntity getByCode(String code);
     PagePreviewEntity getByCode(String code);
 
 
+    /**
+     * 清理预览数据
+     */
+    void clear();
+
 }
 }

+ 11 - 3
DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPagePreviewServiceImpl.java

@@ -11,6 +11,7 @@ import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewServi
 import com.gccloud.dataroom.core.utils.CodeGenerateUtils;
 import com.gccloud.dataroom.core.utils.CodeGenerateUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -21,9 +22,6 @@ import java.util.List;
 @Service
 @Service
 public class DataRoomPagePreviewServiceImpl extends ServiceImpl<DataRoomPagePreviewDao, PagePreviewEntity> implements IDataRoomPagePreviewService {
 public class DataRoomPagePreviewServiceImpl extends ServiceImpl<DataRoomPagePreviewDao, PagePreviewEntity> implements IDataRoomPagePreviewService {
 
 
-
-
-
     @Override
     @Override
     public String add(DataRoomPageDTO bigScreenPageDTO) {
     public String add(DataRoomPageDTO bigScreenPageDTO) {
         String code = CodeGenerateUtils.generate(PREVIEW_KEY);
         String code = CodeGenerateUtils.generate(PREVIEW_KEY);
@@ -43,4 +41,14 @@ public class DataRoomPagePreviewServiceImpl extends ServiceImpl<DataRoomPagePrev
         }
         }
         return list.get(0);
         return list.get(0);
     }
     }
+
+    @Override
+    public void clear() {
+        // 清除创建时间超过一天的预览数据
+        Date date = new Date();
+        date.setTime(date.getTime() - 24 * 60 * 60 * 1000);
+        LambdaQueryWrapper<PagePreviewEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.le(PagePreviewEntity::getCreateDate, date);
+        this.delete(queryWrapper);
+    }
 }
 }

+ 1 - 1
DataRoom/doc/init.sql

@@ -33,7 +33,7 @@ CREATE TABLE `big_screen_page`
     `icon_color`  varchar(100) NOT NULL DEFAULT '' COMMENT '图标颜色',
     `icon_color`  varchar(100) NOT NULL DEFAULT '' COMMENT '图标颜色',
     `type`        varchar(100) NOT NULL DEFAULT 'custom' COMMENT '页面类型',
     `type`        varchar(100) NOT NULL DEFAULT 'custom' COMMENT '页面类型',
     `layout`      varchar(255) NOT NULL DEFAULT '' COMMENT '组件布局,记录组件的相对位置和顺序',
     `layout`      varchar(255) NOT NULL DEFAULT '' COMMENT '组件布局,记录组件的相对位置和顺序',
-    `config`      longtext COMMENT '表单属性,只有表单类型时才有这个值',
+    `config`      longtext COMMENT '页面配置',
     `parent_code` varchar(255) NOT NULL DEFAULT '' COMMENT '父级目录编码',
     `parent_code` varchar(255) NOT NULL DEFAULT '' COMMENT '父级目录编码',
     `order_num`   bigint(64)   NOT NULL DEFAULT '0' COMMENT '排序',
     `order_num`   bigint(64)   NOT NULL DEFAULT '0' COMMENT '排序',
     `remark`      varchar(100) NOT NULL DEFAULT '' COMMENT '备忘',
     `remark`      varchar(100) NOT NULL DEFAULT '' COMMENT '备忘',

+ 19 - 0
DataRoom/doc/update.sql

@@ -1,3 +1,9 @@
+###########################################################################
+# 该sql文件只用于版本升级,如果您执行init.sql文件的时间在如下时间之后,您可以忽略该文件
+# 否则您需要按照时间顺序选择性执行该文件中的sql语句
+###########################################################################
+
+
 
 
 #20230621 配置表中的类名替换
 #20230621 配置表中的类名替换
 UPDATE big_screen_page SET config = REPLACE(config, '"className":"com.gccloud.bigscreen', '"className":"com.gccloud.dataroom');
 UPDATE big_screen_page SET config = REPLACE(config, '"className":"com.gccloud.bigscreen', '"className":"com.gccloud.dataroom');
@@ -126,3 +132,16 @@ CREATE TABLE `big_screen_map`
     PRIMARY KEY (`id`) USING BTREE
     PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8 COMMENT ='地图数据维护表';
   DEFAULT CHARSET = utf8 COMMENT ='地图数据维护表';
+
+
+# 20230913 新增大屏页面预览缓存表
+DROP TABLE IF EXISTS `big_screen_page_preview`;
+CREATE TABLE `big_screen_page_preview`
+(
+    `id`          bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',
+    `code`        varchar(255) NOT NULL DEFAULT '' COMMENT '页面编码,页面唯一标识符',
+    `config`      longtext COMMENT '页面配置',
+    `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8mb4 COMMENT ='页面预览缓存表,每日定时删除';