From 548de3053898bc6571c90d014a40050c39a7d195 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期六, 02 八月 2025 15:33:07 +0800 Subject: [PATCH] 二保添加流转节点 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java | 133 +++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 123 insertions(+), 10 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 16f06a7..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 @@ -26,8 +26,6 @@ import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.vo.EamEquipmentTree; import org.jeecg.modules.eam.vo.EquipmentSearchResult; -//import org.jeecg.modules.mdc.entity.MdcEquipment; -//import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.system.entity.BaseFactory; import org.jeecg.modules.system.entity.EamBaseRepairDepart; import org.jeecg.modules.system.service.IBaseFactoryService; @@ -43,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: 璁惧鍙拌处 @@ -230,6 +229,19 @@ equipmentList.forEach(item -> { EamEquipmentDto eamEquipmentDto = new EamEquipmentDto(); BeanUtils.copyProperties(item,eamEquipmentDto); + if (eamEquipmentDto.getFactoryOrgCode().length()==12){ + eamEquipmentDto.setFactoryOrgCode( + baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getZxfactoryOrgCode()) + +"/"+baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getGqfactoryOrgCode())+"/"+ + baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getFactoryOrgCode())); + }else { + eamEquipmentDto.setFactoryOrgCode( + baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getZxfactoryOrgCode()) + +"/"+ baseFactoryService.factoryDataNameByOrgCode(eamEquipmentDto.getFactoryOrgCode())); + } + if (eamEquipmentDto.getEquipmentWeight()!=null){ + eamEquipmentDto.setEquipmentWeightStr(eamEquipmentDto.getEquipmentWeight().toEngineeringString()); + } eamEquipmentDtos.add(eamEquipmentDto); }); // Step.3 AutoPoi 瀵煎嚭Excel @@ -297,12 +309,60 @@ }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) { //淇濆瓨澶辫触锛岃烦杩囨湰娆″惊鐜� sb.append(String.format("璁惧缂栫爜[%s]淇濆瓨澶辫触锛屾棤娉曞鍏n\r", eamEquipment.getEquipmentCode())); continue; } + EamEquipmentExtend eamEquipmentExtend=new EamEquipmentExtend(); + BeanUtils.copyProperties(eamEquipmentExtend,equipment); + eamEquipmentExtendService.save(eamEquipmentExtend); } log.info("娑堣�楁椂闂�" + (System.currentTimeMillis() - start) + "姣"); //update-end-author:taoyan date:20190528 for:鎵归噺鎻掑叆鏁版嵁 @@ -370,9 +430,62 @@ @GetMapping(value = "/asyncLoadEquipment") public Result<?> asyncLoadEquipment(@RequestParam(name="keyword",required = false) String keyword, @RequestParam(value = "pageSize", required = false, defaultValue = "20") Integer pageSize, - @RequestParam(name="id",required = false) String id) { - List<EquipmentSearchResult> resultList = eamEquipmentService.asyncLoadEquipment(keyword, pageSize, id); - return Result.ok(resultList); + @RequestParam(name="id",required = false) String id, + @RequestParam(name="factoryOrgCode",required = false) String factoryOrgCode) { + List<EquipmentSearchResult> resultList = eamEquipmentService.asyncLoadEquipment(keyword, pageSize, id, factoryOrgCode); + List<JSONObject> items = new ArrayList<>(); + try { + for(EquipmentSearchResult vo : resultList) { + String json = objectMapper.writeValueAsString(vo); + JSONObject item = JSONObject.parseObject(json, Feature.OrderedField); + translateDictTextUtils.translateField("factoryOrgCode", vo.getFactoryOrgCode(), item, "eam_base_factory,factory_name,org_code"); + items.add(item); + } + return Result.OK(items); + }catch (Exception e) { + return Result.error("鏁版嵁杞瘧澶辫触锛�"); + } + } + + // 鏃ユ湡璁$畻宸ュ叿鏂规硶 + 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