/**
* 检测过期任务
* initialDelay 延迟执行时间
* fixedRate 间隔执行时间
*/
@Scheduled(initialDelay = 5000, fixedRate = 60000)
public void overdueTask() {
//当任务截止时间小于当前时间认为超时
StringBuilder sql = new StringBuilder("SELECT id FROM tbl_task_recoder WHERE ");
sql.append("endTime<'").append(DateTimeUtils.dateShiftString()).append("'");
List<Integer> list = entityManager.createNativeQuery(sql.toString()).getResultList();
list.forEach(id -> {
//根据任务ID查询到任务数据后,循环改变任务的超时标记
EquipmentTask equipmentTask = equipmentTaskRepository.findOne(id);
//标记任务超时
equipmentTask.setOverdue(true);
equipmentTaskRepository.save(equipmentTask);
});
}