From d709e8a7117704ac4717db5201e40964b90d4791 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 28 五月 2026 16:17:03 +0800
Subject: [PATCH] Merge dev_pro_河南鹤壁 into dev_山西_晋和园_pro

---
 src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java |   44 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 37 insertions(+), 7 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 3aaac94..c666f3f 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -67,7 +67,6 @@
 
     @Override
     public AjaxResult add(MaintenanceTask maintenanceTask) {
-        maintenanceTask.setActive(true);
         // 璁$畻棣栨鎵ц鏃堕棿
         TimingTask task = new TimingTask();
         task.setFrequencyType(maintenanceTask.getFrequencyType());
@@ -76,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("娣诲姞鎴愬姛");
     }
@@ -87,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