package com.ruoyi.inspectiontask.init;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.ruoyi.inspectiontask.mapper.TimingTaskMapper;
|
import com.ruoyi.inspectiontask.pojo.TimingTask;
|
import com.ruoyi.inspectiontask.service.impl.TimingTaskScheduler;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.boot.ApplicationArguments;
|
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.stereotype.Component;
|
|
import java.util.List;
|
|
/**
|
* 启动时把已启用的巡检定时任务注册到调度器,保证历史数据(直接写库、从未经过 service)也能被执行
|
*/
|
@Slf4j
|
@Component
|
@RequiredArgsConstructor
|
public class TimingTaskRegistrar implements ApplicationRunner {
|
|
private final TimingTaskMapper timingTaskMapper;
|
private final TimingTaskScheduler timingTaskScheduler;
|
|
@Override
|
public void run(ApplicationArguments args) {
|
try {
|
List<TimingTask> tasks = timingTaskMapper.selectList(
|
new QueryWrapper<TimingTask>().eq("deleted", 0).eq("is_enabled", 1));
|
int registered = 0;
|
for (TimingTask task : tasks) {
|
try {
|
if (timingTaskScheduler.isRegistered(task.getId())) {
|
continue;
|
}
|
timingTaskScheduler.scheduleTimingTask(task);
|
registered++;
|
} catch (Exception e) {
|
log.warn("巡检定时任务注册失败 id={} name={}", task.getId(), task.getTaskName(), e);
|
}
|
}
|
log.info("巡检定时任务注册完成:待注册 {} 条,本次新注册 {} 条", tasks.size(), registered);
|
} catch (Exception e) {
|
log.error("巡检定时任务启动注册失败", e);
|
}
|
}
|
}
|