Lius
2024-04-08 0fe6cc1996a8edfc93f86728da58d2a1894110de
更新
已添加1个文件
已修改3个文件
174 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/TransferTableDataJob.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}
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);
}
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);
}
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);
    }
}