From 0d06048c5d560e301bf17fad476975c8ffffcb56 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期五, 05 九月 2025 16:07:31 +0800 Subject: [PATCH] 添加三级保养工作计划单生成规则 --- lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java | 66 ++++++++++++++++++++++++++++++++ 1 files changed, 65 insertions(+), 1 deletions(-) diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java index c702b27..97fb3a2 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java @@ -11,6 +11,7 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; +import java.util.function.Consumer; import org.jeecg.common.constant.SymbolConstant; import org.springframework.util.StringUtils; @@ -795,4 +796,67 @@ calendar.add(Calendar.YEAR, year); return calendar.getTime(); } -} \ No newline at end of file + + /** + * 妫�鏌ユ棩鏈熸槸鍚﹀湪浠婂ぉ鎴栦箣鍓嶏紙蹇界暐鏃堕棿閮ㄥ垎锛� + */ + public static boolean isBeforeOrEqualToday(Date targetDate) { + if (targetDate == null) return false; + + Calendar calTarget = Calendar.getInstance(); + calTarget.setTime(targetDate); + clearTime(calTarget); + + Calendar calToday = Calendar.getInstance(); + clearTime(calToday); + + return !calTarget.after(calToday); + } + + private static void clearTime(Calendar cal) { + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + } + + public static void calculateMaintenanceDates(Date nextDate, Integer periodYears, + Consumer<Date> setNextMaintenance, + Consumer<Date> setLatestMaintenance) { + if (nextDate == null || periodYears == null || periodYears <= 0) { + return; + } + + // 杞崲涓篔ava 8鏃ユ湡绫诲瀷 + LocalDate nextLocal = nextDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate today = LocalDate.now(); + + // 纭繚鏈夋晥鐨勮绠楀懆鏈� + int period = Math.max(1, periodYears); // 闃叉浼犲叆0鎴栬礋鍊� + + if (nextLocal.isAfter(today)) { + // 鏈繃鏈燂細璁$畻鏈�杩戠淮鎶ゆ棩鏈� + setLatestMaintenance.accept( + Date.from(nextLocal.minusYears(period).atStartOfDay() + .atZone(ZoneId.systemDefault()).toInstant()) + ); + } else { + // 宸茶繃鏈燂細璁$畻鏂扮殑涓嬫缁存姢鏃ユ湡 + while (!nextLocal.isAfter(today)) { + nextLocal = nextLocal.plusYears(period); + } + + // 璁剧疆鏂版棩鏈� + setNextMaintenance.accept( + Date.from(nextLocal.atStartOfDay() + .atZone(ZoneId.systemDefault()).toInstant()) + ); + + // 璁$畻鏈�杩戠淮鎶ゆ棩鏈� + setLatestMaintenance.accept( + Date.from(nextLocal.minusYears(period).atStartOfDay() + .atZone(ZoneId.systemDefault()).toInstant()) + ); + } + } +} -- Gitblit v1.9.3