package com.gk.hotwork.doublePrevention.scheduls; import com.gk.hotwork.doublePrevention.entity.PreventDangerCheckTask; import com.gk.hotwork.doublePrevention.enums.CheckTaskStatusEnum; import com.gk.hotwork.doublePrevention.enums.StatusEnum; import com.gk.hotwork.doublePrevention.service.baseService.PreventDangerCheckTaskService; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.util.Date; import java.util.List; @Component public class PreventResetTaskSchedule { private static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(PreventDangerCheckWorkSchedule.class); @Autowired private PreventDangerCheckTaskService preventDangerCheckTaskService; @Transactional @Scheduled(cron = "0 0/30 * * * ?") // @PostConstruct public void resetTask(){ //确定检查时间为8小时内的任务 Date endTime = new Date(); Date startTime = new Date(endTime.getTime() - 8 * 60 * 60 * 1000L); /**查询应该已经过期,但是还在执行中状态的任务*/ List overTaskList = preventDangerCheckTaskService.listOverTask(startTime, endTime); if (ObjectUtils.isNotEmpty(overTaskList)){ for (PreventDangerCheckTask overTask : overTaskList) { preventDangerCheckTaskService.updateTaskStatus(overTask.getId(), CheckTaskStatusEnum.STATU_OVERTIME.getStatus()); } } /**查询应该已经开始,但是还在待执行状态的任务*/ //查询开始时间小于当前时间,有效期大于当前时间的任务 List waitExecTaskList = preventDangerCheckTaskService.listWaitExecTask(endTime); if (ObjectUtils.isNotEmpty(waitExecTaskList)){ for (PreventDangerCheckTask waitExecTask : waitExecTaskList) { preventDangerCheckTaskService.updateTaskStatus(waitExecTask.getId(), CheckTaskStatusEnum.STATU_EXEUTE.getStatus()); } } /**查询应该已经结束,但是还在执行中状态的任务*/ //查询开始时间小于当前时间,有效期大于当前时间的任务 List timeOutTaskList = preventDangerCheckTaskService.listTimeOutTask(endTime); if (ObjectUtils.isNotEmpty(timeOutTaskList)){ for (PreventDangerCheckTask timeOutTask : timeOutTaskList) { preventDangerCheckTaskService.updateTaskStatus(timeOutTask.getId(), CheckTaskStatusEnum.STATU_OVERTIME.getStatus()); } } } }