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); } }