From a217dbfc7378ff9cf5b6d3ca8b229a2b9d932e51 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 02 六月 2026 11:52:19 +0800
Subject: [PATCH] feat(device): 添加设备保养验收功能和年度定时任务支持

---
 src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 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 1450a35..8aa02aa 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -147,4 +147,47 @@
         }
         return AjaxResult.success("鍒犻櫎鎴愬姛");
     }
+
+    @Override
+    public AjaxResult changeEnable(Long id, Integer isEnabled) {
+        MaintenanceTask oldTask = maintenanceTaskMapper.selectById(id);
+        if (oldTask == null) {
+            return AjaxResult.error("淇濆吇浠诲姟涓嶅瓨鍦�");
+        }
+
+        MaintenanceTask update = new MaintenanceTask();
+        update.setId(id);
+        update.setIsEnabled(isEnabled);
+        update.setActive(isEnabled != null && isEnabled == 1);
+
+        int result = maintenanceTaskMapper.updateById(update);
+        if (result > 0) {
+            try {
+                if (isEnabled != null && isEnabled == 1) {
+                    // 鍚敤锛氭仮澶嶆垨閲嶆柊璋冨害
+                    if (oldTask.getIsEnabled() != null && oldTask.getIsEnabled() == 0) {
+                        // 浠庣鐢ㄦ敼涓哄惎鐢紝閲嶆柊璁$畻涓嬫鎵ц鏃堕棿锛堝鏋滄病鏈夛級
+                        if (oldTask.getNextExecutionTime() == null || oldTask.getNextExecutionTime().isBefore(LocalDateTime.now())) {
+                            TimingTask tempTask = new TimingTask();
+                            tempTask.setFrequencyType(oldTask.getFrequencyType());
+                            tempTask.setFrequencyDetail(oldTask.getFrequencyDetail());
+                            LocalDateTime nextTime = timingTaskService.calculateFirstExecutionTime(tempTask);
+                            update.setNextExecutionTime(nextTime);
+                            maintenanceTaskMapper.updateById(update);
+                        }
+                        maintenanceTaskScheduler.scheduleMaintenanceTask(oldTask);
+                    } else {
+                        maintenanceTaskScheduler.resumeMaintenanceTask(id);
+                    }
+                } else {
+                    // 绂佺敤锛氭殏鍋滆皟搴�
+                    maintenanceTaskScheduler.pauseMaintenanceTask(id);
+                }
+            } catch (Exception e) {
+                log.error("璋冩暣淇濆吇浠诲姟璋冨害鐘舵�佸け璐�", e);
+            }
+            return AjaxResult.success("鏇存柊鎴愬姛");
+        }
+        return AjaxResult.error("鏇存柊澶辫触");
+    }
 }

--
Gitblit v1.9.3