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