package com.eju.ess.quartz; import org.quartz.CronScheduleBuilder; import org.quartz.CronTrigger; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.TriggerBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.quartz.SchedulerFactoryBean; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; @Slf4j @Service public class SchedulerService { @Autowired private SchedulerFactoryBean schedulerFactoryBean; public boolean setJob(String jobId,String timeStr){ log.info(">> 添加计划任务 >> jobId >> {} >> 下次执行 >> {}",new Object[]{jobId,timeStr}); // String jobId=getUUID(); try { Scheduler scheduler = schedulerFactoryBean.getScheduler(); scheduler.getContext().put("jobId", jobId); JobDetail job = JobBuilder.newJob(ProcessJob.class).withIdentity(jobId, "group1").build(); CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(jobId, "group1").withSchedule(CronScheduleBuilder.cronSchedule(getCron(timeStr))).build(); scheduler.scheduleJob(job, trigger); return true; } catch (SchedulerException e) { e.printStackTrace(); } return false; } private String getCron(String timeStr){ // yyyy-MM-dd-HH-mm-ss String [] dateItem=timeStr.split("-"); String year=dateItem[0]; String month=dateItem[1]; String day=dateItem[2]; String hour=dateItem[3]; String minute=dateItem[4]; String second=dateItem[5]; String cronStr="%s %s %s %s %s ? %s-%s"; // 0 52 14 26 8 ? 2016-2016 return String.format(cronStr, new Object[]{second,minute,hour,day,month,year,year}); } }