From 0fe6cc1996a8edfc93f86728da58d2a1894110de Mon Sep 17 00:00:00 2001
From: Lius <Lius2225@163.com>
Date: 星期一, 08 四月 2024 10:16:43 +0800
Subject: [PATCH] 更新

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java         |   39 ++++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java            |   18 ++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java |   26 ++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java          |   91 ++++++++++++++++++++++++++++++
 4 files changed, 171 insertions(+), 3 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java
new file mode 100644
index 0000000..bed9ddd
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java
@@ -0,0 +1,91 @@
+package org.jeecg.modules.mdc.job;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.mdc.entity.Equipment;
+import org.jeecg.modules.mdc.service.IEquipmentService;
+import org.jeecg.modules.mdc.util.DateUtils;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+import org.jeecg.modules.quartz.entity.QuartzJob;
+import org.jeecg.modules.quartz.entity.SysQuartzLog;
+import org.jeecg.modules.quartz.service.IQuartzJobService;
+import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.jeecg.modules.system.service.ISysAnnouncementService;
+import org.quartz.*;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description 鏁版嵁杩佺Щ浠诲姟
+ * @author Lius
+ * @date 2024/4/3 10:39
+ */
+@PersistJobDataAfterExecution
+@DisallowConcurrentExecution
+@Slf4j
+public class TransferTableDataJob implements Job {
+
+    @Resource
+    private ISysQuartzLogService sysQuartzLogService;
+
+    @Resource
+    private IQuartzJobService quartzJobService;
+
+    @Resource
+    private ISysAnnouncementService sysAnnouncementService;
+
+    @Resource
+    private IEquipmentService equipmentService;
+
+    @Override
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        log.info("鏁版嵁杩佺Щ浠诲姟 TransferTableDataJob start!  鏃堕棿:" + DateUtils.getNow());
+        long startTime = System.currentTimeMillis();
+        try {
+            List<Equipment> list = equipmentService.list();
+            Equipment info = new Equipment();
+            info.setSavetablename("EquipmentLog");
+            list.add(info);
+            String day = DateUtils.format(DateUtils.plusTime(DateUtils.getNow(), -30), DateUtils.STR_DATE_TIME_SMALL);
+            for (Equipment equipment : list) {
+                if (StringUtils.isNotBlank(equipment.getSavetablename())) {
+                    String tableName = equipmentService.checkTableExists(equipment.getSavetablename());
+                    if (StringUtils.isNotBlank(tableName)) {
+                        String backupTableName = equipmentService.checkTableExists(equipment.getSavetablename() + "_backup");
+                        if (StringUtils.isNotBlank(backupTableName)) {
+                            Integer num = equipmentService.checkTableDataNum(equipment.getSavetablename(), day);
+                            if (num > 0) {
+                                equipmentService.insertTableData(backupTableName, tableName, day);
+                                equipmentService.deleteTableData(tableName, day);
+                            }
+                        } else {
+                            //澶囦唤琛ㄤ笉瀛樺湪鍒涘缓澶囦唤琛ㄥ苟杩佺Щ鏁版嵁
+                            equipmentService.insertNoTableData(tableName + "_backup", tableName, day);
+                            equipmentService.deleteTableData(tableName, day);
+                        }
+                    }
+                }
+            }
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+            // 鍙戦�佹秷鎭�氱煡
+            sysAnnouncementService.jobSendMessage("鏁版嵁杩佺Щ浠诲姟", quartzLog.getExceptionDetail());
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java
index 9a8c00f..5cdf91e 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java
@@ -1,6 +1,10 @@
 package org.jeecg.modules.mdc.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.mdc.entity.Equipment;
 
 /**
@@ -12,4 +16,18 @@
 
 public interface EquipmentMapper extends BaseMapper<Equipment> {
 
+    @Select(" SELECT name FROM SysObjects Where XType='U' AND name = '${saveTableName}' ")
+    String checkTableExists(@Param("saveTableName") String saveTableName);
+
+    @Select(" SELECT COUNT(CollectTime) num FROM ${saveTableName} WHERE CollectTime < '${day}' ")
+    Integer checkTableDataNum(@Param("saveTableName") String saveTableName, @Param("day") String day);
+
+    @Insert(" INSERT INTO ${tableName} SELECT * FROM ${lastTableName}  WHERE CollectTime < '${date}' ")
+    void insertTableData(@Param("tableName") String tableName, @Param("lastTableName") String lastTableName, @Param("date") String date);
+
+    @Delete(" delete from ${tableName} where CollectTime < '${day}' ")
+    void deleteTableData(@Param("tableName") String saveTableName, @Param("day") String day);
+
+    @Insert(" SELECT * INTO ${tableName} FROM ${lastTableName} WHERE CollectTime < '${date}' ")
+    void insertNoTableData(@Param("tableName") String tableName, @Param("lastTableName") String lastTableName, @Param("date") String date);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java
index 02dbaa7..8dfe74b 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java
@@ -1,7 +1,7 @@
 package org.jeecg.modules.mdc.service;
 
-import org.jeecg.modules.mdc.entity.Equipment;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mdc.entity.Equipment;
 
 /**
  * @Description: 閲囬泦璁惧琛�
@@ -11,4 +11,41 @@
  */
 public interface IEquipmentService extends IService<Equipment> {
 
+    /**
+     * 鏍规嵁鏁版嵁琛ㄥ悕绉版煡璇㈡暟鎹〃鏄惁瀛樺湪
+     * @param saveTableName
+     * @return
+     */
+    String checkTableExists(String saveTableName);
+
+    /**
+     * 鏌ヨ闇�澶囦唤鏁版嵁閲�
+     * @param saveTableName
+     * @param day
+     * @return
+     */
+    Integer checkTableDataNum(String saveTableName, String day);
+
+    /**
+     * 鏁版嵁杩佺Щ
+     * @param backupTableName
+     * @param tableName
+     * @param day
+     */
+    void insertTableData(String backupTableName, String tableName, String day);
+
+    /**
+     * 鍒犻櫎鍘熸暟鎹〃鏁版嵁
+     * @param tableName
+     * @param day
+     */
+    void deleteTableData(String tableName, String day);
+
+    /**
+     * 鍒涘缓澶囦唤琛�
+     * @param backupTableName
+     * @param tableName
+     * @param day
+     */
+    void insertNoTableData(String backupTableName, String tableName, String day);
 }
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java
index f6295e2..3db46bc 100644
--- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java
@@ -6,8 +6,6 @@
 import org.jeecg.modules.mdc.service.IEquipmentService;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-
 /**
  * @Description: 閲囬泦璁惧琛�
  * @Author: liuS
@@ -17,4 +15,28 @@
 @Service
 public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment> implements IEquipmentService {
 
+    @Override
+    public String checkTableExists(String saveTableName) {
+        return this.baseMapper.checkTableExists(saveTableName);
+    }
+
+    @Override
+    public Integer checkTableDataNum(String saveTableName, String day) {
+        return this.baseMapper.checkTableDataNum(saveTableName, day);
+    }
+
+    @Override
+    public void insertTableData(String backupTableName, String tableName, String day) {
+        this.baseMapper.insertTableData(backupTableName, tableName, day);
+    }
+
+    @Override
+    public void deleteTableData(String tableName, String day) {
+        this.baseMapper.deleteTableData(tableName, day);
+    }
+
+    @Override
+    public void insertNoTableData(String backupTableName, String tableName, String day) {
+        this.baseMapper.insertNoTableData(backupTableName, tableName, day);
+    }
 }

--
Gitblit v1.9.3