From cf330c6a6c2ae7ec86d20de465d5af27a4684cf6 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 03 十一月 2026 19:16:58 +0800
Subject: [PATCH] 巡检任务频次增加“每年”支持
---
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
index 910ef4b..19e32f0 100644
--- a/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
+++ b/src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
@@ -146,6 +146,8 @@
LocalDateTime currentTime) {
try {
switch (frequencyType) {
+ case "YEARLY":
+ return calculateYearlyNextTime(frequencyDetail, currentTime);
case "DAILY":
return calculateDailyNextTime(frequencyDetail, currentTime);
case "WEEKLY":
@@ -162,6 +164,30 @@
}
}
+ /** 姣忓勾宸℃榛樿鎵ц鏃堕棿锛�07:00锛堥〉闈笂涓嶇簿纭埌鏃跺垎锛� */
+ private static final LocalTime DEFAULT_EXECUTION_TIME = LocalTime.of(7, 0);
+
+ /**
+ * 璁$畻姣忓勾浠诲姟鐨勪笅娆℃墽琛屾椂闂�
+ * frequencyDetail 鏍煎紡涓� "鏈�,鏃�"锛屽彲閫� "鏈�,鏃�,HH:mm"锛堥粯璁� 07:00锛�
+ */
+ private LocalDateTime calculateYearlyNextTime(String detail, LocalDateTime current) {
+ String[] parts = detail.split(",");
+ int month = Integer.parseInt(parts[0].trim());
+ int day = Integer.parseInt(parts[1].trim());
+ LocalTime time = parts.length >= 3 ? LocalTime.parse(parts[2].trim()) : DEFAULT_EXECUTION_TIME;
+
+ int year = current.getYear();
+ LocalDateTime target = LocalDateTime.of(
+ year, month, Math.min(day, YearMonth.of(year, month).lengthOfMonth()), time.getHour(), time.getMinute());
+ if (!current.isBefore(target)) {
+ year++;
+ target = LocalDateTime.of(
+ year, month, Math.min(day, YearMonth.of(year, month).lengthOfMonth()), time.getHour(), time.getMinute());
+ }
+ return target;
+ }
+
/**
* 璁$畻姣忔棩浠诲姟鐨勪笅娆℃墽琛屾椂闂�
*/
--
Gitblit v1.9.3