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 |   30 +++++++++++++++++++++++++++---
 1 files changed, 27 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 97f2de1..6bc7e51 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskServiceImpl.java
@@ -53,6 +53,7 @@
         if (StringUtils.isNotBlank(timingTask.getTaskName())) {
             queryWrapper.like(TimingTask::getTaskName, timingTask.getTaskName());
         }
+        queryWrapper.orderByDesc(TimingTask::getCreateTime);
         IPage<TimingTask> taskPage = timingTaskMapper.selectPage(page, queryWrapper);
 
         // 2. 濡傛灉娌℃湁鏁版嵁锛岀洿鎺ヨ繑鍥炵┖鍒嗛〉
@@ -78,6 +79,13 @@
                         .filter(StringUtils::isNotBlank)
                         .map(Long::valueOf)
                         .forEach(userIds::add);
+            }
+        });
+
+        // 鏀堕泦楠屾敹鍏D
+        taskPage.getRecords().forEach(task -> {
+            if (task.getInspectionAcceptorId() != null) {
+                userIds.add(task.getInspectionAcceptorId());
             }
         });
 
@@ -109,6 +117,11 @@
                     }
                 }
                 dto.setInspector(inspectorNickNames);
+            }
+
+            // 璁剧疆楠屾敹浜烘樀绉�
+            if (task.getInspectionAcceptorId() != null) {
+                dto.setInspectionAcceptor(userNickNameMap.getOrDefault(task.getInspectionAcceptorId(), "鏈煡鐢ㄦ埛"));
             }
 
             return dto;
@@ -155,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) {
                 // 浠庡惎鐢ㄥ彉涓哄仠鐢紝绉婚櫎浠诲姟
@@ -165,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) {
@@ -175,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