package org.wjw.mt.job;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import xyz.erupt.annotation.config.Comment;
import xyz.erupt.core.annotation.EruptHandlerNaming;
import xyz.erupt.job.handler.EruptJobHandler;
/**
* 定期清理Job产生的正常处理结果日志表里的记录
*
* @author White Stone
*
* 2021年5月8日
*/
@Service
@EruptHandlerNaming(value="定期清理Job产生的正常处理结果日志表里的记录")
public class CleanJobLogHandler implements EruptJobHandler {
@Resource
private JdbcTemplate jdbcTemplate;
/**
* @param code 任务编码
* @param param 任务参数
*/
@Override
@Comment(value = "定期清理Job产生的正常处理结果日志表里的记录")
public String exec(@Comment(value = "任务编码") String code, @Comment(value = "任务参数") String param) {
LocalDateTime dateTime = LocalDateTime.now();
dateTime = dateTime.minusDays(15); //删除15天前的成功日志记录
//@wjw_note: 如果想要在JDBC中,使用Java8的日期LocalDate、LocalDateTime,则必须要求数据库驱动的版本不能低于4.2
int rowsDeleted = jdbcTemplate.update("DELETE FROM e_job_log WHERE status=1 and end_time < ?", dateTime);
//老的java.util.Date方式: int rowsDeleted = jdbcTemplate.update("DELETE FROM e_job_log WHERE status=1 and end_time < ?", LocalDateTimeToUdate(dateTime));
return "清理的记录数:" + rowsDeleted;
}
//java.time.LocalDateTime --> java.util.Date
public java.util.Date LocalDateTimeToUdate(LocalDateTime localDateTime) {
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
return java.util.Date.from(instant);
}
}
这篇文章还没有评论