package com.stylefeng.guns.modular.system.service.impl;
|
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.stylefeng.guns.modular.system.dao.MyJobMapper;
|
import com.stylefeng.guns.modular.system.model.MyJob;
|
import com.stylefeng.guns.modular.system.service.IMyJobService;
|
import org.quartz.*;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
public class MyJobServiceImpl extends ServiceImpl<MyJobMapper, MyJob> implements IMyJobService {
|
|
|
@Override
|
public void addJob(Scheduler scheduler, String jobClassName, String jobGroupName, String cronExpression,String description) throws Exception {
|
// 启动调度器
|
scheduler.start();
|
Class<?> clazz = Class.forName(jobClassName);
|
//构建job信息
|
JobDetail jobDetail = JobBuilder.newJob(((Job) clazz.newInstance()).getClass())
|
.withIdentity(jobClassName, jobGroupName)
|
.build();
|
//表达式调度构建器(即任务执行的时间)
|
CronScheduleBuilder builder = CronScheduleBuilder.cronSchedule(cronExpression);
|
//按新的cronExpression表达式构建一个新的trigger
|
CronTrigger trigger = TriggerBuilder.newTrigger()
|
.withIdentity(jobClassName, jobGroupName)
|
.withSchedule(builder)
|
.withDescription(description)
|
.build();
|
// 配置scheduler相关参数
|
scheduler.scheduleJob(jobDetail, trigger);
|
}
|
|
@Override
|
public void pauseJob(Scheduler scheduler, String jobClassName, String jobGroupName) throws Exception {
|
scheduler.pauseJob(JobKey.jobKey(jobClassName, jobGroupName));
|
}
|
|
@Override
|
public void resumeJob(Scheduler scheduler, String jobClassName, String jobGroupName) throws Exception {
|
scheduler.resumeJob(JobKey.jobKey(jobClassName, jobGroupName));
|
}
|
|
@Override
|
public void rescheduleJob(Scheduler scheduler, String jobClassName, String jobGroupName, String cronExpression,String description) throws Exception {
|
TriggerKey triggerKey = TriggerKey.triggerKey(jobClassName, jobGroupName);
|
CronScheduleBuilder builder = CronScheduleBuilder.cronSchedule(cronExpression);
|
CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey);
|
// 按新的cronExpression表达式重新构建trigger
|
trigger = trigger.getTriggerBuilder()
|
.withIdentity(jobClassName, jobGroupName)
|
.withSchedule(builder)
|
.withDescription(description)
|
.build();
|
// 按新的trigger重新设置job执行
|
scheduler.rescheduleJob(triggerKey, trigger);
|
}
|
|
@Override
|
public void deleteJob(Scheduler scheduler, String jobClassName, String jobGroupName) throws Exception {
|
scheduler.pauseTrigger(TriggerKey.triggerKey(jobClassName, jobGroupName));
|
scheduler.unscheduleJob(TriggerKey.triggerKey(jobClassName, jobGroupName));
|
scheduler.deleteJob(JobKey.jobKey(jobClassName, jobGroupName));
|
}
|
|
@Override
|
public List<Map<String, Object>> findList() {
|
return this.baseMapper.findList();
|
}
|
}
|