From f441ac1e0793499dec98580c08e66580c88d730d Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期五, 29 七月 2022 20:29:26 +0800 Subject: [PATCH] 优化任务过期不执行调度 --- src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java | 7 ++++++- src/main/java/com/ruoyi/project/monitor/service/ISysJobService.java | 2 +- src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java | 6 +++--- src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java | 11 +++++++++-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java b/src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java index 3055084..0930519 100644 --- a/src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java +++ b/src/main/java/com/ruoyi/common/utils/job/ScheduleUtils.java @@ -83,7 +83,12 @@ scheduler.deleteJob(getJobKey(jobId, jobGroup)); } - scheduler.scheduleJob(jobDetail, trigger); + // 鍒ゆ柇浠诲姟鏄惁杩囨湡 + if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression()))) + { + // 鎵ц璋冨害浠诲姟 + scheduler.scheduleJob(jobDetail, trigger); + } // 鏆傚仠浠诲姟 if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue())) diff --git a/src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java b/src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java index ed22257..d98aef1 100644 --- a/src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java +++ b/src/main/java/com/ruoyi/project/monitor/controller/SysJobController.java @@ -167,8 +167,8 @@ @PutMapping("/run") public AjaxResult run(@RequestBody SysJob job) throws SchedulerException { - jobService.run(job); - return AjaxResult.success(); + boolean result = jobService.run(job); + return result ? success() : error("浠诲姟涓嶅瓨鍦ㄦ垨宸茶繃鏈燂紒"); } /** @@ -180,6 +180,6 @@ public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException { jobService.deleteJobByIds(jobIds); - return AjaxResult.success(); + return success(); } } diff --git a/src/main/java/com/ruoyi/project/monitor/service/ISysJobService.java b/src/main/java/com/ruoyi/project/monitor/service/ISysJobService.java index 1e881f2..e0a9f4c 100644 --- a/src/main/java/com/ruoyi/project/monitor/service/ISysJobService.java +++ b/src/main/java/com/ruoyi/project/monitor/service/ISysJobService.java @@ -74,7 +74,7 @@ * @param job 璋冨害淇℃伅 * @return 缁撴灉 */ - public void run(SysJob job) throws SchedulerException; + public boolean run(SysJob job) throws SchedulerException; /** * 鏂板浠诲姟 diff --git a/src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java b/src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java index 705bd45..fb2191e 100644 --- a/src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java +++ b/src/main/java/com/ruoyi/project/monitor/service/impl/SysJobServiceImpl.java @@ -174,15 +174,22 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public void run(SysJob job) throws SchedulerException + public boolean run(SysJob job) throws SchedulerException { + boolean result = false; Long jobId = job.getJobId(); String jobGroup = job.getJobGroup(); SysJob properties = selectJobById(job.getJobId()); // 鍙傛暟 JobDataMap dataMap = new JobDataMap(); dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties); - scheduler.triggerJob(ScheduleUtils.getJobKey(jobId, jobGroup), dataMap); + JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup); + if (scheduler.checkExists(jobKey)) + { + result = true; + scheduler.triggerJob(jobKey, dataMap); + } + return result; } /** -- Gitblit v1.9.3