定时任务后端接口变更

This commit is contained in:
zer0Black
2022-03-19 15:09:14 +08:00
parent 28428f90ee
commit 41e45abb0b
3 changed files with 39 additions and 42 deletions
@@ -89,10 +89,6 @@ public class QuartzJobController {
//@RequiresRoles("admin") //@RequiresRoles("admin")
@RequestMapping(value = "/add", method = RequestMethod.POST) @RequestMapping(value = "/add", method = RequestMethod.POST)
public Result<?> add(@RequestBody QuartzJob quartzJob) { public Result<?> add(@RequestBody QuartzJob quartzJob) {
List<QuartzJob> list = quartzJobService.findByJobClassName(quartzJob.getJobClassName());
if (list != null && list.size() > 0) {
return Result.error("该定时任务类名已存在");
}
quartzJobService.saveAndScheduleJob(quartzJob); quartzJobService.saveAndScheduleJob(quartzJob);
return Result.OK("创建定时任务成功"); return Result.OK("创建定时任务成功");
} }
@@ -155,39 +151,38 @@ public class QuartzJobController {
/** /**
* 暂停定时任务 * 暂停定时任务
* *
* @param jobClassName * @param id
* @return * @return
*/ */
//@RequiresRoles("admin") //@RequiresRoles("admin")
@GetMapping(value = "/pause") @GetMapping(value = "/pause")
@ApiOperation(value = "暂停定时任务") @ApiOperation(value = "暂停定时任务")
public Result<Object> pauseJob(@RequestParam(name = "jobClassName", required = true) String jobClassName) { public Result<Object> pauseJob(@RequestParam(name = "id") String id) {
QuartzJob job = null; QuartzJob job = quartzJobService.getById(id);
job = quartzJobService.getOne(new LambdaQueryWrapper<QuartzJob>().eq(QuartzJob::getJobClassName, jobClassName));
if (job == null) { if (job == null) {
return Result.error("定时任务不存在!"); return Result.error("定时任务不存在!");
} }
quartzJobService.pause(job); quartzJobService.pause(job);
return Result.OK("暂停定时任务成功"); return Result.ok("暂停定时任务成功");
} }
/** /**
* 启动定时任务 * 启动定时任务
* *
* @param jobClassName * @param id
* @return * @return
*/ */
//@RequiresRoles("admin") //@RequiresRoles("admin")
@GetMapping(value = "/resume") @GetMapping(value = "/resume")
@ApiOperation(value = "恢复定时任务") @ApiOperation(value = "恢复定时任务")
public Result<Object> resumeJob(@RequestParam(name = "jobClassName", required = true) String jobClassName) { public Result<Object> resumeJob(@RequestParam(name = "id") String id) {
QuartzJob job = quartzJobService.getOne(new LambdaQueryWrapper<QuartzJob>().eq(QuartzJob::getJobClassName, jobClassName)); QuartzJob job = quartzJobService.getById(id);
if (job == null) { if (job == null) {
return Result.error("定时任务不存在!"); return Result.error("定时任务不存在!");
} }
quartzJobService.resumeJob(job); quartzJobService.resumeJob(job);
//scheduler.resumeJob(JobKey.jobKey(job.getJobClassName().trim())); //scheduler.resumeJob(JobKey.jobKey(job.getJobClassName().trim()));
return Result.OK("恢复定时任务成功"); return Result.ok("恢复定时任务成功");
} }
/** /**
@@ -26,7 +26,7 @@ public class SampleParamJob implements Job {
@Override @Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info(" Job Execution key"+jobExecutionContext.getJobDetail().getKey());
log.info(String.format("welcome %s! jero-boot 带参数定时任务 SampleParamJob ! 时间:" + DateUtils.now(), this.parameter)); log.info( String.format("welcome %s! Jeecg-Boot 带参数定时任务 SampleParamJob ! 时间:" + DateUtils.now(), this.parameter));
} }
} }
@@ -41,18 +41,18 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
return quartzJobMapper.findByJobClassName(jobClassName); return quartzJobMapper.findByJobClassName(jobClassName);
} }
/**
* 保存&启动定时任务
*/
@Override @Override
public boolean saveAndScheduleJob(QuartzJob quartzJob) { public boolean saveAndScheduleJob(QuartzJob quartzJob) {
if (CommonConstant.STATUS_NORMAL.equals(quartzJob.getStatus())) {
// 定时器添加
this.schedulerAdd(quartzJob.getJobClassName().trim(), quartzJob.getCronExpression().trim(), quartzJob.getParameter());
}
// DB设置修改 // DB设置修改
quartzJob.setDelFlag(CommonConstant.DEL_FLAG_0); quartzJob.setDelFlag(CommonConstant.DEL_FLAG_0);
return this.save(quartzJob); boolean success = this.save(quartzJob);
if (success) {
if (CommonConstant.STATUS_NORMAL.equals(quartzJob.getStatus())) {
// 定时器添加
this.schedulerAdd(quartzJob.getId(), quartzJob.getJobClassName().trim(), quartzJob.getCronExpression().trim(), quartzJob.getParameter());
}
}
return success;
} }
/** /**
@@ -60,23 +60,23 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
*/ */
@Override @Override
public boolean resumeJob(QuartzJob quartzJob) { public boolean resumeJob(QuartzJob quartzJob) {
schedulerDelete(quartzJob.getJobClassName().trim()); schedulerDelete(quartzJob.getId());
schedulerAdd(quartzJob.getJobClassName().trim(), quartzJob.getCronExpression().trim(), quartzJob.getParameter()); schedulerAdd(quartzJob.getId(), quartzJob.getJobClassName().trim(), quartzJob.getCronExpression().trim(), quartzJob.getParameter());
quartzJob.setStatus(CommonConstant.STATUS_NORMAL); quartzJob.setStatus(CommonConstant.STATUS_NORMAL);
return this.updateById(quartzJob); return this.updateById(quartzJob);
} }
/** /**
* 编辑&启停定时任务 * 编辑&启停定时任务
* @throws SchedulerException * @throws SchedulerException
*/ */
@Override @Override
public boolean editAndScheduleJob(QuartzJob quartzJob) throws SchedulerException { public boolean editAndScheduleJob(QuartzJob quartzJob) throws SchedulerException {
if (CommonConstant.STATUS_NORMAL.equals(quartzJob.getStatus())) { if (CommonConstant.STATUS_NORMAL.equals(quartzJob.getStatus())) {
schedulerDelete(quartzJob.getJobClassName().trim()); schedulerDelete(quartzJob.getId());
schedulerAdd(quartzJob.getJobClassName().trim(), quartzJob.getCronExpression().trim(), quartzJob.getParameter()); schedulerAdd(quartzJob.getId(), quartzJob.getJobClassName().trim(), quartzJob.getCronExpression().trim(), quartzJob.getParameter());
}else{ }else{
scheduler.pauseJob(JobKey.jobKey(quartzJob.getJobClassName().trim())); scheduler.pauseJob(JobKey.jobKey(quartzJob.getId()));
} }
return this.updateById(quartzJob); return this.updateById(quartzJob);
} }
@@ -86,7 +86,7 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
*/ */
@Override @Override
public boolean deleteAndStopJob(QuartzJob job) { public boolean deleteAndStopJob(QuartzJob job) {
schedulerDelete(job.getJobClassName().trim()); schedulerDelete(job.getId());
boolean ok = this.removeById(job.getId()); boolean ok = this.removeById(job.getId());
return ok; return ok;
} }
@@ -98,7 +98,9 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
String ymd = DateUtils.date2Str(startDate,DateUtils.yyyymmddhhmmss.get()); String ymd = DateUtils.date2Str(startDate,DateUtils.yyyymmddhhmmss.get());
String identity = jobName + ymd; String identity = jobName + ymd;
//3秒后执行 只执行一次 //3秒后执行 只执行一次
startDate.setTime(startDate.getTime()+3000L); // update-begin--author:sunjianlei ---- date:20210511--- for:定时任务立即执行,延迟3秒改成0.1秒-------
startDate.setTime(startDate.getTime() + 100L);
// update-end--author:sunjianlei ---- date:20210511--- for:定时任务立即执行,延迟3秒改成0.1秒-------
// 定义一个Trigger // 定义一个Trigger
SimpleTrigger trigger = (SimpleTrigger)TriggerBuilder.newTrigger() SimpleTrigger trigger = (SimpleTrigger)TriggerBuilder.newTrigger()
.withIdentity(identity, JOB_TEST_GROUP) .withIdentity(identity, JOB_TEST_GROUP)
@@ -114,7 +116,7 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
@Override @Override
public void pause(QuartzJob quartzJob){ public void pause(QuartzJob quartzJob){
schedulerDelete(quartzJob.getJobClassName().trim()); schedulerDelete(quartzJob.getId());
quartzJob.setStatus(CommonConstant.STATUS_DISABLE); quartzJob.setStatus(CommonConstant.STATUS_DISABLE);
this.updateById(quartzJob); this.updateById(quartzJob);
} }
@@ -126,19 +128,19 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
* @param cronExpression * @param cronExpression
* @param parameter * @param parameter
*/ */
private void schedulerAdd(String jobClassName, String cronExpression, String parameter) { private void schedulerAdd(String id, String jobClassName, String cronExpression, String parameter) {
try { try {
// 启动调度器 // 启动调度器
scheduler.start(); scheduler.start();
// 构建job信息 // 构建job信息
JobDetail jobDetail = JobBuilder.newJob(getClass(jobClassName).getClass()).withIdentity(jobClassName).usingJobData("parameter", parameter).build(); JobDetail jobDetail = JobBuilder.newJob(getClass(jobClassName).getClass()).withIdentity(id).usingJobData("parameter", parameter).build();
// 表达式调度构建器(即任务执行的时间) // 表达式调度构建器(即任务执行的时间)
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression); CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression);
// 按新的cronExpression表达式构建一个新的trigger // 按新的cronExpression表达式构建一个新的trigger
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(jobClassName).withSchedule(scheduleBuilder).build(); CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(id).withSchedule(scheduleBuilder).build();
scheduler.scheduleJob(jobDetail, trigger); scheduler.scheduleJob(jobDetail, trigger);
} catch (SchedulerException e) { } catch (SchedulerException e) {
@@ -152,14 +154,14 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
/** /**
* 删除定时任务 * 删除定时任务
* *
* @param jobClassName * @param id
*/ */
private void schedulerDelete(String jobClassName) { private void schedulerDelete(String id) {
try { try {
scheduler.pauseTrigger(TriggerKey.triggerKey(jobClassName)); scheduler.pauseTrigger(TriggerKey.triggerKey(id));
scheduler.unscheduleJob(TriggerKey.triggerKey(jobClassName)); scheduler.unscheduleJob(TriggerKey.triggerKey(id));
scheduler.deleteJob(JobKey.jobKey(jobClassName)); scheduler.deleteJob(JobKey.jobKey(id));
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
throw new JeroBootException("删除定时任务失败"); throw new JeroBootException("删除定时任务失败");