From 66d041ed14b3ed3ed7183a28a5c588e235fc21d0 Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期二, 26 五月 2026 11:14:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro_河南鹤壁' into dev_鹤壁_强信宇_pro

---
 src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java |   62 +++++++++++++++++++++---------
 1 files changed, 43 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
index 0c00da7..c666f3f 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -11,8 +11,8 @@
 import com.ruoyi.inspectiontask.service.impl.TimingTaskServiceImpl;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
@@ -24,19 +24,13 @@
  */
 @Service
 @Slf4j
+@RequiredArgsConstructor
 public class MaintenanceTaskServiceImpl extends ServiceImpl<MaintenanceTaskMapper, MaintenanceTask> implements MaintenanceTaskService {
 
-    @Autowired
-    private MaintenanceTaskMapper maintenanceTaskMapper;
-
-    @Autowired
-    private SysUserMapper sysUserMapper;
-
-    @Autowired
-    private TimingTaskServiceImpl timingTaskService;
-
-    @Autowired
-    private MaintenanceTaskScheduler maintenanceTaskScheduler;
+    private final MaintenanceTaskMapper maintenanceTaskMapper;
+    private final SysUserMapper sysUserMapper;
+    private final TimingTaskServiceImpl timingTaskService;
+    private final MaintenanceTaskScheduler maintenanceTaskScheduler;
 
     @Override
     public AjaxResult listPage(Page page, MaintenanceTask maintenanceTask) {
@@ -73,7 +67,6 @@
 
     @Override
     public AjaxResult add(MaintenanceTask maintenanceTask) {
-        maintenanceTask.setActive(true);
         // 璁$畻棣栨鎵ц鏃堕棿
         TimingTask task = new TimingTask();
         task.setFrequencyType(maintenanceTask.getFrequencyType());
@@ -82,7 +75,10 @@
         maintenanceTask.setNextExecutionTime(firstExecutionTime);
         int insert = maintenanceTaskMapper.insert(maintenanceTask);
         if (insert > 0) {
-            maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask);
+            // 鍙湁褰� isActive 涓� 1 鏃舵墠娣诲姞鍒板畾鏃朵换鍔¤皟搴﹀櫒
+            if (maintenanceTask.getIsActive() != null && maintenanceTask.getIsActive() == 1) {
+                maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask);
+            }
         }
         return AjaxResult.success("娣诲姞鎴愬姛");
     }
@@ -93,22 +89,50 @@
         if (maintenanceTask1 == null) {
             return AjaxResult.warn("娌℃湁姝ゆ暟鎹�");
         }
+
+        // 淇濆瓨鏃х殑 isActive 鐘舵��
+        Integer oldIsActive = maintenanceTask1.getIsActive();
+        Integer newIsActive = maintenanceTask.getIsActive();
+
         BeanUtils.copyProperties(maintenanceTask, maintenanceTask1);
         int update = maintenanceTaskMapper.updateById(maintenanceTask1);
         if (update > 0) {
-            maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1);
+            // 澶勭悊 isActive 鐘舵�佸彉鍖�
+            if (newIsActive != null && newIsActive == 1) {
+                // 鏂扮姸鎬佷负鍚敤锛氭坊鍔犲埌瀹氭椂浠诲姟璋冨害鍣�
+                if (oldIsActive == null || oldIsActive != 1) {
+                    // 浠庢湭鍚敤鍙樹负鍚敤锛屾坊鍔犲埌璋冨害鍣�
+                    maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask1);
+                } else {
+                    // 宸茬粡鍚敤锛屾洿鏂拌皟搴﹀櫒涓殑浠诲姟
+                    maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1);
+                }
+            } else {
+                // 鏂扮姸鎬佷负鍋滅敤锛氫粠瀹氭椂浠诲姟璋冨害鍣ㄤ腑绉婚櫎
+                if (oldIsActive != null && oldIsActive == 1) {
+                    maintenanceTaskScheduler.unscheduleMaintenanceTask(maintenanceTask1.getId());
+                }
+            }
         }
         return AjaxResult.success("鏇存柊鎴愬姛");
     }
 
     @Override
     public AjaxResult delete(List<Long> ids) {
+        // 鍏堜粠瀹氭椂浠诲姟璋冨害鍣ㄤ腑绉婚櫎鎵�鏈夊緟鍒犻櫎鐨勪换鍔�
+        ids.forEach(id -> {
+            try {
+                maintenanceTaskScheduler.unscheduleMaintenanceTask(id);
+            } catch (Exception e) {
+                log.error("鍒犻櫎瀹氭椂浠诲姟璋冨害澶辫触, id: {}", id, e);
+            }
+        });
+
+        // 鍐嶄粠鏁版嵁搴撲腑鍒犻櫎璁板綍
         int delete = maintenanceTaskMapper.deleteBatchIds(ids);
         if (delete > 0) {
-            ids.forEach(id -> {
-                maintenanceTaskScheduler.unscheduleMaintenanceTask(id);
-            });
+            return AjaxResult.success("鍒犻櫎鎴愬姛");
         }
-        return AjaxResult.success("鍒犻櫎鎴愬姛");
+        return AjaxResult.error("鍒犻櫎澶辫触");
     }
 }

--
Gitblit v1.9.3