scheduledTaskVo为定时任务需要处理的数据
public void sendSMS(ScheduledTaskVo scheduledTaskVo) throws SchedulerException {
//创建schedule实例 三 调度器 StdSchedulerFactory 工厂模式
StdSchedulerFactory factory = new StdSchedulerFactory();
//获取调度器实例
Scheduler scheduler = factory.getScheduler();
JobDataMap map = new JobDataMap();
map.put(“scheduledTaskVo”,scheduledTaskVo);
System.out.println(“下次执行时间”+scheduledTaskVo.getNextStartData());
JobDetail jobDetail= JobBuilder
.newJob(ImplTimingFun.class)
.setJobData(map)
.withIdentity(“demo”+String.format(ApiConstant.FORMAT, new Date().getTime()))
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.forJob(jobDetail)
.startAt(scheduledTaskVo.getStartData())
.endAt(scheduledTaskVo.getEndData())
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInHours(scheduledTaskVo.getNextStartData())
.repeatForever())
.build();
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
}
ImplTimingFun类 要实现Job bean不能够注入只能通过getBean的方式获取
public class ImplTimingFun implements Job {
private static final Logger logger = LogManager.getLogger(ImplTimingFun.class);
private SurveyquestionDao surveyquestionDao;
private SurveyquestionoptionDao surveyquestionoptionDao;
private TjHyglRwglService tjHyglRwglService;
private SurveyuseranswerRepo surveyuseranswerRepo;
private TjHyglRwglRepo tjHyglRwglRepo;
private PersonMatchRulesUtil personMatchRulesUtil;
private TjJcglJkjhRepo tjJcglJkjhRepo;
private TjJkjhRycxDao tjJkjhRycxDao;
@Resource
private DataBaseUtils dataBaseUtils;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
surveyquestionDao = AppContextHolder.getBean(Introspector.decapitalize(SurveyquestionDao.class.getSimpleName()),SurveyquestionDao.class);
surveyquestionoptionDao = AppContextHolder.getBean(Introspector.decapitalize(SurveyquestionoptionDao.class.getSimpleName()),SurveyquestionoptionDao.class);
tjHyglRwglService = AppContextHolder.getBean(Introspector.decapitalize(TjHyglRwglService.class.getSimpleName()),TjHyglRwglService.class);
surveyuseranswerRepo = AppContextHolder.getBean(Introspector.decapitalize(SurveyuseranswerRepo.class.getSimpleName()),SurveyuseranswerRepo.class);
tjHyglRwglRepo = AppContextHolder.getBean(Introspector.decapitalize(TjHyglRwglRepo.class.getSimpleName()),TjHyglRwglRepo.class);
personMatchRulesUtil = AppContextHolder.getBean(Introspector.decapitalize(PersonMatchRulesUtil.class.getSimpleName()),PersonMatchRulesUtil.class);
tjJcglJkjhRepo = AppContextHolder.getBean(Introspector.decapitalize(TjJcglJkjhRepo.class.getSimpleName()),TjJcglJkjhRepo.class);
tjJkjhRycxDao = AppContextHolder.getBean(Introspector.decapitalize(TjJkjhRycxDao.class.getSimpleName()),TjJkjhRycxDao.class);
dataBaseUtils = AppContextHolder.getBean("dataBaseUtils",DataBaseUtils.class);
JobDetail jobDetail = jobExecutionContext.getJobDetail();
JobDataMap jobDataMap = jobDetail.getJobDataMap();
ScheduledTaskVo scheduledTaskVo = BeanUtil.toBean(jobDataMap.get("scheduledTaskVo"), ScheduledTaskVo.class, null);
try {
createRw(scheduledTaskVo);
} catch (NoSuchFieldException | IllegalAccessException | ServiceException e) {
e.printStackTrace();
}
}