Parcourir la source

优化任务过期不执行调度

RuoYi il y a 3 ans
Parent
commit
1295177393

+ 2 - 2
ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/controller/SysJobController.java

@@ -168,8 +168,8 @@ public class SysJobController extends BaseController
168
     @PutMapping("/run")
168
     @PutMapping("/run")
169
     public AjaxResult run(@RequestBody SysJob job) throws SchedulerException
169
     public AjaxResult run(@RequestBody SysJob job) throws SchedulerException
170
     {
170
     {
171
-        jobService.run(job);
172
-        return AjaxResult.success();
171
+        boolean result = jobService.run(job);
172
+        return result ? success() : error("任务不存在或已过期!");
173
     }
173
     }
174
 
174
 
175
     /**
175
     /**

+ 1 - 1
ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/ISysJobService.java

@@ -74,7 +74,7 @@ public interface ISysJobService
74
      * @param job 调度信息
74
      * @param job 调度信息
75
      * @return 结果
75
      * @return 结果
76
      */
76
      */
77
-    public void run(SysJob job) throws SchedulerException;
77
+    public boolean run(SysJob job) throws SchedulerException;
78
 
78
 
79
     /**
79
     /**
80
      * 新增任务
80
      * 新增任务

+ 9 - 2
ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/service/SysJobServiceImpl.java

@@ -173,15 +173,22 @@ public class SysJobServiceImpl implements ISysJobService
173
      */
173
      */
174
     @Override
174
     @Override
175
     @Transactional(rollbackFor = Exception.class)
175
     @Transactional(rollbackFor = Exception.class)
176
-    public void run(SysJob job) throws SchedulerException
176
+    public boolean run(SysJob job) throws SchedulerException
177
     {
177
     {
178
+        boolean result = false;
178
         Long jobId = job.getJobId();
179
         Long jobId = job.getJobId();
179
         String jobGroup = job.getJobGroup();
180
         String jobGroup = job.getJobGroup();
180
         SysJob properties = selectJobById(job.getJobId());
181
         SysJob properties = selectJobById(job.getJobId());
181
         // 参数
182
         // 参数
182
         JobDataMap dataMap = new JobDataMap();
183
         JobDataMap dataMap = new JobDataMap();
183
         dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
184
         dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
184
-        scheduler.triggerJob(ScheduleUtils.getJobKey(jobId, jobGroup), dataMap);
185
+        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
186
+        if (scheduler.checkExists(jobKey))
187
+        {
188
+            result = true;
189
+            scheduler.triggerJob(jobKey, dataMap);
190
+        }
191
+        return result;
185
     }
192
     }
186
 
193
 
187
     /**
194
     /**

+ 6 - 1
ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/util/ScheduleUtils.java

@@ -83,7 +83,12 @@ public class ScheduleUtils
83
             scheduler.deleteJob(getJobKey(jobId, jobGroup));
83
             scheduler.deleteJob(getJobKey(jobId, jobGroup));
84
         }
84
         }
85
 
85
 
86
-        scheduler.scheduleJob(jobDetail, trigger);
86
+        // 判断任务是否过期
87
+        if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression())))
88
+        {
89
+            // 执行调度任务
90
+            scheduler.scheduleJob(jobDetail, trigger);
91
+        }
87
 
92
 
88
         // 暂停任务
93
         // 暂停任务
89
         if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))
94
         if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))