From 0bc74278ff8130936bc7aed763e8901fedb4f3b0 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期五, 01 八月 2025 11:44:49 +0800 Subject: [PATCH] 故障报修新增hf编码 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamEquipmentController.java | 204 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 190 insertions(+), 14 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 31595fe..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 @@ -11,10 +11,14 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.TranslateDictTextUtils; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.eam.dto.EamEquipmentDto; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamEquipmentExtend; import org.jeecg.modules.eam.request.EamEquipmentQuery; @@ -22,22 +26,31 @@ 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; +import org.jeecg.modules.system.service.IEamBaseRepairDepartService; import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; 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.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: 璁惧鍙拌处 @@ -63,7 +76,10 @@ private ObjectMapper objectMapper; @Autowired private TranslateDictTextUtils translateDictTextUtils; - + @Autowired + private IBaseFactoryService baseFactoryService; + @Autowired + private IEamBaseRepairDepartService eamBaseRepairDepartService; /** * 鍒嗛〉鍒楄〃鏌ヨ * @@ -198,13 +214,44 @@ /** * 瀵煎嚭excel - * - * @param request * @param eamEquipment */ @RequestMapping(value = "/exportXls") - public ModelAndView exportXls(HttpServletRequest request, EamEquipment eamEquipment) { - return super.exportXls(request, eamEquipment, EamEquipment.class, "璁惧鍙拌处"); + public ModelAndView exportXls(HttpServletRequest request,EamEquipmentQuery eamEquipment) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + List<EamEquipment> equipmentList=eamEquipmentService.exportList(eamEquipment); + List<EamEquipmentDto> eamEquipmentDtos=new ArrayList<>(); + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List<String> selectionList = Arrays.asList(selections.split(",")); + equipmentList = equipmentList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } + 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 + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject(NormalExcelConstants.FILE_NAME, "璁惧鍙拌处"); //姝ゅ璁剧疆鐨刦ilename鏃犳晥 ,鍓嶇浼氶噸鏇存柊璁剧疆涓�涓� + mv.addObject(NormalExcelConstants.CLASS, EamEquipmentDto.class); + mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("璁惧鍙拌处" + "鎶ヨ〃", "瀵煎嚭浜�:" + sysUser.getRealname(), "璁惧鍙拌处")); + mv.addObject(NormalExcelConstants.DATA_LIST, eamEquipmentDtos); + return mv; + } /** @@ -248,12 +295,74 @@ sb.append(String.format("璁惧缂栫爜[%s]宸插瓨鍦紝鏃犳硶閲嶅瀵煎叆\n\r", eamEquipment.getEquipmentCode())); continue; } + BaseFactory baseFactory=baseFactoryService.searchCenterByKeyWord(eamEquipment.getFactoryOrgCode()); + if(baseFactory==null){ + sb.append(String.format("EAM涓績淇℃伅[%s]涓嶅瓨鍦紝鏃犳硶瀵煎叆\n\r", eamEquipment.getFactoryOrgCode())); + continue; + }else { + eamEquipment.setFactoryOrgCode(baseFactory.getOrgCode()); + } + EamBaseRepairDepart eamBaseRepairDepart=eamBaseRepairDepartService.searchCenterByKeyWord(eamEquipment.getRepairDepartOrgCode()); + if(eamBaseRepairDepart==null){ + sb.append(String.format("缁翠慨鐝粍淇℃伅[%s]涓嶅瓨鍦紝鏃犳硶瀵煎叆\n\r", eamEquipment.getRepairDepartOrgCode())); + continue; + }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:鎵归噺鎻掑叆鏁版嵁 @@ -296,6 +405,20 @@ return result; } + @ApiOperation(value = "璁惧琛�-閫氳繃EAM涓績ids鑾峰彇璁惧鏍�", notes = "璁惧琛�-閫氳繃EAM涓績ids鑾峰彇璁惧鏍�") + @GetMapping(value = "/loadTreeListByEamCenterIds") + public Result<List<EamEquipmentTree>> loadTreeListByEamCenterIds(@RequestParam(name = "ids", required = true) String ids) { + Result<List<EamEquipmentTree>> result = new Result<>(); + try { + List<EamEquipmentTree> mdcEquipmentTreeList = eamEquipmentService.loadTreeListByEamCenterIds(ids); + result.setSuccess(true); + result.setResult(mdcEquipmentTreeList); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + return result; + } + /** * 妫�绱㈣澶� * @param keyword 鏌ヨ鍏抽敭璇� 璁惧缂栧彿锛岃澶囧悕绉版ā绯婂尮閰� @@ -307,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