From d76b518341ec0644c3500555d5c4121bc30d581e Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期四, 31 七月 2025 09:24:09 +0800 Subject: [PATCH] 台账导入导出字段修改 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java | 97 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 92 insertions(+), 5 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java index c9b3516..a0a1d4e 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java @@ -41,15 +41,16 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; - +import org.apache.commons.lang3.time.DateUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.text.ParseException; +import java.util.*; +import java.util.function.Consumer; import java.util.stream.Collectors; +import java.time.LocalDate; +import java.time.ZoneId; /** * @Description: 璁惧鍙拌处 @@ -308,6 +309,51 @@ }else { eamEquipment.setRepairDepartOrgCode(eamBaseRepairDepart.getOrgCode()); } + // 瀛楁鏍¢獙涓庡~鍏� + if (StringUtils.isNotBlank(eamEquipment.getLeaveFactory())) { + String leaveFactoryStr = eamEquipment.getLeaveFactory(); + try { + // 瀹氫箟鏀寔瑙f瀽鐨勬棩鏈熸牸寮� + String[] parsePatterns = { + "yyyy/MM/dd", "yyyy-MM-dd", "yyyyMMdd" + }; + // 鏍煎紡1: 鍖呭惈鍒嗛殧绗︾殑鏃ユ湡鏍煎紡 (濡�2025/07/30, 2025-07-30绛�) + if (leaveFactoryStr.contains("/") || leaveFactoryStr.contains("-") || + (leaveFactoryStr.length() == 8 && leaveFactoryStr.matches("\\d{8}"))) { + + // 浣跨敤鎸囧畾鐨勬牸寮忔暟缁勮В鏋愭棩鏈� + Date leaveFactoryDate = DateUtils.parseDate(leaveFactoryStr, parsePatterns); + eamEquipment.setLeaveFactoryDate(leaveFactoryDate); + } else { + log.warn("绂诲紑宸ュ巶鏃ユ湡鏍煎紡鏃犳晥: {}", leaveFactoryStr); + } + } catch (ParseException e) { + log.error("鏃ユ湡瑙f瀽澶辫触: {}", leaveFactoryStr, e); + } + } + // 璁$畻涓変繚鏃ユ湡 + if (eamEquipment.getNextThirdMaintenance() != null && + eamEquipment.getThirdMaintenancePeriod() != null) { + + calculateMaintenanceDates( + eamEquipment.getNextThirdMaintenance(), + eamEquipment.getThirdMaintenancePeriod(), + newDate -> eamEquipment.setNextThirdMaintenance(newDate), + latestDate -> eamEquipment.setLatestThirdMaintenance(latestDate) + ); + } + + // 璁$畻鎶�鏈姸鎬侀壌瀹氭棩鏈� + if (eamEquipment.getNextTechnologyCheck() != null && + eamEquipment.getTechnologyCheckPeriod() != null) { + + calculateMaintenanceDates( + eamEquipment.getNextTechnologyCheck(), + eamEquipment.getTechnologyCheckPeriod(), + newDate -> eamEquipment.setNextTechnologyCheck(newDate), + latestDate -> eamEquipment.setLatestTechnologyCheck(latestDate) + ); + } EamEquipment equipment = eamEquipmentService.saveEquipment(eamEquipment); if (equipment == null) { //淇濆瓨澶辫触锛岃烦杩囨湰娆″惊鐜� @@ -401,4 +447,45 @@ } } + // 鏃ユ湡璁$畻宸ュ叿鏂规硶 + private 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