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