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/MaintenanceTaskScheduler.java |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskScheduler.java b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskScheduler.java
index ec7a8e3..6fd5a8d 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskScheduler.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskScheduler.java
@@ -160,6 +160,8 @@
                 return convertMonthlyToCron(task.getFrequencyDetail());
             case "QUARTERLY":
                 return convertQuarterlyToCron(task.getFrequencyDetail());
+            case "YEARLY":
+                return convertYearlyToCron(task.getFrequencyDetail());
             default:
                 throw new IllegalArgumentException("涓嶆敮鎸佺殑棰戠巼绫诲瀷: " + task.getFrequencyType());
         }
@@ -204,6 +206,22 @@
                 quarterStartMonth);
     }
 
+    // 姣忓勾浠诲姟杞崲
+    private String convertYearlyToCron(String frequencyDetail) {
+        String[] parts = validateAndSplit(frequencyDetail, ",", 3);
+        int month = validateMonth(parts[0]);  // 楠岃瘉鏈堜唤(1-12)
+        int day = validateDayOfMonth(parts[1]);  // 楠岃瘉鏃ユ湡
+        LocalTime time = parseTime(parts[2]);  // 瑙f瀽鏃堕棿
+
+        // Cron琛ㄨ揪寮�: 绉� 鍒� 鏃� 鏃� 鏈� 鍛�
+        // 姣忓勾鎸囧畾鏈堜唤鐨勬寚瀹氭棩鎵ц
+        return String.format("0 %d %d %d %d ?",
+                time.getMinute(),
+                time.getHour(),
+                day,
+                month);
+    }
+
     // 鏂板楠岃瘉鏈堜唤鐨勬柟娉�(1-12)
     private int validateMonth(String monthStr) {
         try {

--
Gitblit v1.9.3