package com.project.core.config; import com.project.common.exception.job.TaskException; import com.project.quartz.domain.SysJob; import com.project.quartz.mapper.SysJobMapper; import com.project.quartz.service.ISysJobDelayService; import com.project.quartz.util.DelayScheduleUtils; import com.project.quartz.util.ScheduleUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.List; @Slf4j @Component @RequiredArgsConstructor(onConstructor_ = @Autowired) public class JobInitConfig { private final ISysJobDelayService delayService; private final Scheduler scheduler; private final SysJobMapper jobMapper; private final DelayScheduleUtils delayScheduleUtils; /** * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据) */ @PostConstruct public void initJob() throws SchedulerException, TaskException { log.info("初始化定时器,延时器---------------"); scheduler.clear(); List jobList = jobMapper.selectJobAll(); for (SysJob job : jobList) { ScheduleUtils.createScheduleJob(scheduler, job); } // List delays = delayService.list(); // if (StringUtils.isNotEmpty(delays)){ // for (SysJobDelay delay : delays) { // Map extraParam = new HashMap<>(); extraParam.put("orderNo", delay.getJobOrder()); // log.info("初始化延时任务:"+delay.getJobName()); // delayScheduleUtils.addSimpleJob(delay.getJobName(), delay.getTriggerTime(),extraParam , OrderCancelJob.class); // } // } } }