From fbda2f16d63dcad15de13ab0997ef51257e5815b Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期五, 26 六月 2026 10:53:52 +0800
Subject: [PATCH] feat: 更新定时任务调度逻辑,支持启用状态下重新调度任务

---
 src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
index 0af9a9f..6bc7e51 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -168,6 +168,10 @@
             TimingTask oldTask = timingTaskMapper.selectById(timingTaskDto.getId());
             Integer oldIsActive = oldTask != null ? oldTask.getIsActive() : 0;
             Integer newIsActive = timingTask.getIsActive();
+            if (Integer.valueOf(1).equals(newIsActive)) {
+                LocalDateTime firstExecutionTime = calculateFirstExecutionTime(timingTask);
+                timingTask.setNextExecutionTime(firstExecutionTime);
+            }
             int result = timingTaskMapper.updateById(timingTask);
             if (result > 0) {
                 // 浠庡惎鐢ㄥ彉涓哄仠鐢紝绉婚櫎浠诲姟
@@ -178,9 +182,6 @@
                 // 浠庡仠鐢ㄥ彉涓哄惎鐢紝娣诲姞浠诲姟
                 else if (!Integer.valueOf(1).equals(oldIsActive)
                         && Integer.valueOf(1).equals(newIsActive)) {
-                    // 璁$畻棣栨鎵ц鏃堕棿
-                    LocalDateTime firstExecutionTime = calculateFirstExecutionTime(timingTask);
-                    timingTask.setNextExecutionTime(firstExecutionTime);
                     try {
                         timingTaskScheduler.scheduleTimingTask(timingTask);
                     } catch (Exception e) {
@@ -188,6 +189,16 @@
                         throw new ServiceException("娣诲姞宸℃浠诲姟澶辫触");
                     }
                 }
+                // 淇濇寔鍚敤鐘舵�侊紝閲嶆柊璋冨害浠诲姟
+                else if (Integer.valueOf(1).equals(oldIsActive)
+                        && Integer.valueOf(1).equals(newIsActive)) {
+                    try {
+                        timingTaskScheduler.rescheduleTimingTask(timingTask);
+                    } catch (Exception e) {
+                        log.error("鏇存柊宸℃浠诲姟澶辫触 : {}", e.getMessage(), e);
+                        throw new ServiceException("鏇存柊宸℃浠诲姟澶辫触");
+                    }
+                }
             }
             return result;
         }

--
Gitblit v1.9.3