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 tasks = timingTaskMapper.selectList( new QueryWrapper().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); } } }