|
@@ -1,60 +1,62 @@
|
|
package com.example.demo.service;
|
|
package com.example.demo.service;
|
|
|
|
|
|
|
|
+import com.example.demo.domain.QrtzTask;
|
|
|
|
+import com.example.demo.model.dto.QuartzTaskDTO;
|
|
|
|
+import com.example.demo.model.vo.QuartzVO;
|
|
|
|
+import io.swagger.v3.oas.models.security.SecurityScheme;
|
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.quartz.*;
|
|
import org.quartz.*;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
|
|
+@Slf4j
|
|
|
|
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
|
|
public class JobService {
|
|
public class JobService {
|
|
- @Autowired
|
|
|
|
- private Scheduler scheduler;
|
|
|
|
|
|
+
|
|
|
|
+ private final Scheduler scheduler;
|
|
|
|
+
|
|
|
|
+ private final QrTaskService qrTaskService;
|
|
/**
|
|
/**
|
|
* 删除job
|
|
* 删除job
|
|
*
|
|
*
|
|
- * @param triggerName 触发器名称
|
|
|
|
- * @param triggerGroup 触发器分组
|
|
|
|
- * @param jobName 任务名称
|
|
|
|
- * @param jobGroup 任务分组
|
|
|
|
* @throws SchedulerException
|
|
* @throws SchedulerException
|
|
*/
|
|
*/
|
|
- public void deleteJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException {
|
|
|
|
- TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup);
|
|
|
|
|
|
+ public void deleteJob(Integer taskId) throws SchedulerException {
|
|
|
|
+ QuartzVO quartzVO=this.generateQuartzVO(taskId);
|
|
|
|
+ TriggerKey triggerKey = TriggerKey.triggerKey(quartzVO.getTriggerName(), quartzVO.getTriggerGroupName());
|
|
scheduler.pauseTrigger(triggerKey);
|
|
scheduler.pauseTrigger(triggerKey);
|
|
scheduler.unscheduleJob(triggerKey);
|
|
scheduler.unscheduleJob(triggerKey);
|
|
- JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
|
|
|
|
|
|
+ JobKey jobKey = JobKey.jobKey(quartzVO.getJobName(), quartzVO.getJobGroupName());
|
|
scheduler.deleteJob(jobKey);
|
|
scheduler.deleteJob(jobKey);
|
|
}
|
|
}
|
|
/**
|
|
/**
|
|
* 暂停job
|
|
* 暂停job
|
|
*
|
|
*
|
|
- * @param triggerName 触发器名称
|
|
|
|
- * @param triggerGroup 触发器分组
|
|
|
|
- * @param jobName 任务名称
|
|
|
|
- * @param jobGroup 任务分组
|
|
|
|
* @throws SchedulerException
|
|
* @throws SchedulerException
|
|
*/
|
|
*/
|
|
- public void pauseJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException {
|
|
|
|
- TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup);
|
|
|
|
|
|
+ public void pauseJob(Integer taskId) throws SchedulerException {
|
|
|
|
+ QuartzVO quartzVO=this.generateQuartzVO(taskId);
|
|
|
|
+ TriggerKey triggerKey = TriggerKey.triggerKey(quartzVO.getTriggerName(), quartzVO.getTriggerGroupName());
|
|
scheduler.pauseTrigger(triggerKey);
|
|
scheduler.pauseTrigger(triggerKey);
|
|
scheduler.unscheduleJob(triggerKey);
|
|
scheduler.unscheduleJob(triggerKey);
|
|
- JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
|
|
|
|
|
|
+ JobKey jobKey = JobKey.jobKey(quartzVO.getJobName(),quartzVO.getJobGroupName());
|
|
scheduler.pauseJob(jobKey);
|
|
scheduler.pauseJob(jobKey);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 恢复job
|
|
* 恢复job
|
|
*
|
|
*
|
|
- * @param triggerName 触发器名称
|
|
|
|
- * @param triggerGroup 触发器分组
|
|
|
|
- * @param jobName 任务名称
|
|
|
|
- * @param jobGroup 任务分组
|
|
|
|
* @throws SchedulerException
|
|
* @throws SchedulerException
|
|
*/
|
|
*/
|
|
- public void resumeJob(String triggerName, String triggerGroup, String jobName, String jobGroup) throws SchedulerException {
|
|
|
|
- TriggerKey triggerKey = TriggerKey.triggerKey(triggerName, triggerGroup);
|
|
|
|
|
|
+ public void resumeJob(Integer taskId) throws SchedulerException {
|
|
|
|
+ QuartzVO quartzVO=this.generateQuartzVO(taskId);
|
|
|
|
+ TriggerKey triggerKey = TriggerKey.triggerKey(quartzVO.getTriggerName(), quartzVO.getTriggerGroupName());
|
|
scheduler.pauseTrigger(triggerKey);
|
|
scheduler.pauseTrigger(triggerKey);
|
|
scheduler.unscheduleJob(triggerKey);
|
|
scheduler.unscheduleJob(triggerKey);
|
|
- JobKey jobKey = JobKey.jobKey(jobName, jobGroup);
|
|
|
|
|
|
+ JobKey jobKey = JobKey.jobKey(quartzVO.getJobName(), quartzVO.getJobGroupName());
|
|
scheduler.resumeJob(jobKey);
|
|
scheduler.resumeJob(jobKey);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -63,10 +65,10 @@ public class JobService {
|
|
*
|
|
*
|
|
* @param cron 新的cron表达式
|
|
* @param cron 新的cron表达式
|
|
*/
|
|
*/
|
|
- public void updateJob(String triggerName, String triggerGroup, String cron) {
|
|
|
|
|
|
+ public void updateJob(Integer taskId, String cron) {
|
|
|
|
+ QuartzVO quartzVO=this.generateQuartzVO(taskId);
|
|
JobDataMap jobDataMap =new JobDataMap();
|
|
JobDataMap jobDataMap =new JobDataMap();
|
|
- jobDataMap.put("msg","update1");
|
|
|
|
- TriggerKey oldTriggerKey = TriggerKey.triggerKey(triggerName, triggerGroup);
|
|
|
|
|
|
+ TriggerKey oldTriggerKey = TriggerKey.triggerKey(quartzVO.getTriggerName(), quartzVO.getTriggerGroupName());
|
|
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
|
|
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
|
|
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
|
|
CronTrigger cronTrigger = TriggerBuilder.newTrigger()
|
|
.withIdentity(oldTriggerKey).usingJobData(jobDataMap).withSchedule(scheduleBuilder).build();
|
|
.withIdentity(oldTriggerKey).usingJobData(jobDataMap).withSchedule(scheduleBuilder).build();
|
|
@@ -80,22 +82,29 @@ public class JobService {
|
|
/**
|
|
/**
|
|
* 新增job任务
|
|
* 新增job任务
|
|
*
|
|
*
|
|
- * @param jobName job名称
|
|
|
|
- * @param jobGroupName job分组名称
|
|
|
|
- * @param triggerName 触发器名称
|
|
|
|
- * @param triggerGroupName 触发器分组名称
|
|
|
|
- * @param jobClass 需要执行的job.class
|
|
|
|
- * @param cron cron 表达式
|
|
|
|
* @throws SchedulerException
|
|
* @throws SchedulerException
|
|
*/
|
|
*/
|
|
- public void addJob(String jobName, String jobGroupName,
|
|
|
|
- String triggerName, String triggerGroupName, Class jobClass, String cron) throws SchedulerException {
|
|
|
|
|
|
+ public void addJob(QuartzTaskDTO quartzTaskDTO) throws SchedulerException {
|
|
|
|
+ //添加一条任务记录
|
|
|
|
+ QrtzTask qrtzTask= qrTaskService.addQuartzTask(quartzTaskDTO);
|
|
|
|
+ QuartzVO quartzVO=this.generateQuartzVO(qrtzTask.getId());
|
|
JobDataMap jobDataMap =new JobDataMap();
|
|
JobDataMap jobDataMap =new JobDataMap();
|
|
- jobDataMap.put("msg","add");
|
|
|
|
- CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cron);
|
|
|
|
- JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName, jobGroupName).build();
|
|
|
|
- Trigger trigger = TriggerBuilder.newTrigger().withIdentity(triggerName, triggerGroupName)
|
|
|
|
|
|
+ jobDataMap.put("qrtzTask",qrtzTask);
|
|
|
|
+ CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(quartzTaskDTO.getCron());
|
|
|
|
+ JobDetail jobDetail = JobBuilder.newJob(WebUploadJob.class).withIdentity(quartzVO.getJobName(),quartzVO.getJobGroupName()).build();
|
|
|
|
+ Trigger trigger = TriggerBuilder.newTrigger().withIdentity(quartzVO.getTriggerName(), quartzVO.getTriggerGroupName())
|
|
.withSchedule(cronScheduleBuilder).usingJobData(jobDataMap).build();
|
|
.withSchedule(cronScheduleBuilder).usingJobData(jobDataMap).build();
|
|
scheduler.scheduleJob(jobDetail, trigger);
|
|
scheduler.scheduleJob(jobDetail, trigger);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public QuartzVO generateQuartzVO(Integer taskId){
|
|
|
|
+ QuartzVO quartzVO =new QuartzVO();
|
|
|
|
+ quartzVO.setJobName("Job_"+taskId);
|
|
|
|
+ quartzVO.setJobGroupName("Default");
|
|
|
|
+ quartzVO.setTriggerName("Trigger_"+taskId);
|
|
|
|
+ quartzVO.setTriggerGroupName("Default");
|
|
|
|
+ return quartzVO;
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|