From 789bacf67ee22c7fd2c214ac5014507d2df1e1b9 Mon Sep 17 00:00:00 2001 From: hongjli <3117313295@qq.com> Date: 星期五, 23 五月 2025 10:24:44 +0800 Subject: [PATCH] row按workshop聚合统计时添加processName的参数的补充 --- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java | 91 ++++++++++++++++++++++++++++++++++++--------- 1 files changed, 72 insertions(+), 19 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java index 99c75aa..247add4 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java @@ -6,10 +6,12 @@ import com.aps.common.core.utils.uuid.IdUtils; import com.aps.common.security.utils.SecurityUtils; import com.aps.core.domain.*; +import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireError; import com.aps.core.mapper.*; import com.aps.core.service.IApsGasMaterialUsageService; import com.aps.core.service.IApsGasPipingRouteStatService; import com.aps.core.service.IApsStandardProcessService; +import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.*; @@ -58,6 +60,9 @@ @Autowired private IApsStandardProcessService apsStandardProcessService; + + @Autowired + private ApsPlateStandardRequireErrorMapper apsPlateStandardRequireErrorMapper; /** * 鏌ヨ姘斾綋绠¤矾浜ц兘璐熻浇缁熻 @@ -1117,6 +1122,12 @@ // 澶勭悊鎵嬪伐姘斾綋宸ュ崟鏁版嵁 - 浣跨敤鑱斿悎鏌ヨ鑾峰彇鎵�鏈夌浉鍏虫暟鎹� List<Map<String, Object>> moDataList = apsGasPipingRouteStatMapper.selectMoRouteData(); + // 鑾峰彇鎵�鏈夌殑MO鏁版嵁锛岀敤浜庢鏌ュ摢浜汳O娌℃湁鍏宠仈鍒板伐鑹鸿矾绾� + List<Map<String, Object>> allMoData = apsGasPipingRouteStatMapper.selectAllMoData(); + + // 璁板綍宸插叧鑱斿伐鑹鸿矾绾跨殑MO缂栧彿 + Set<String> processedMoSet = new HashSet<>(); + // 鎸夊伐鍗曞彿鍒嗙粍锛屼究浜庡鐞嗗悓涓�宸ュ崟鐨勪笉鍚屽伐搴� Map<String, List<Map<String, Object>>> moGroups = moDataList.stream() .collect(Collectors.groupingBy(data -> data.get("work_order_no").toString())); @@ -1124,6 +1135,9 @@ // 澶勭悊姣忎釜宸ュ崟鐨勫伐鑹鸿矾绾� for (String workOrderNo : moGroups.keySet()) { List<Map<String, Object>> workOrderData = moGroups.get(workOrderNo); + + // 鏍囪璇ュ伐鍗曞凡澶勭悊 + processedMoSet.add(workOrderNo); // 鎸夊伐搴忓彿鎺掑簭 workOrderData.sort((a, b) -> { @@ -1202,6 +1216,36 @@ statList.addAll(processList); } + } + + // 澶勭悊娌℃湁鍏宠仈鍒板伐鑹鸿矾绾跨殑MO鏁版嵁 + List<ApsPlateStandardRequireError> errorList = new ArrayList<>(); + for (Map<String, Object> moData : allMoData) { + String workOrderNo = moData.get("mo").toString(); + // 濡傛灉璇ュ伐鍗曟病鏈夎澶勭悊杩囷紝璇存槑娌℃湁鍏宠仈鍒板伐鑹鸿矾绾� + if (!processedMoSet.contains(workOrderNo)) { + ApsPlateStandardRequireError error = ApsPlateStandardRequireError.builder() + .id(Long.valueOf(IdUtils.fastSimpleUUID().hashCode())) + .batchNumber(batchNumber) + .requireId(IdUtil.getSnowflakeNextId()) + .docNum(workOrderNo) + .itemNum(moData.get("material_code").toString()) + .orgCode(moData.get("factory").toString()) + .message("鏍囧噯宸ヨ壓璺嚎涓嶅瓨鍦�") + .delFlag("0") + .build(); + + // 璁剧疆鍩虹被灞炴�� + error.setCreateBy(SecurityUtils.getUsername()); + error.setCreateTime(truncateToSeconds(DateUtils.getNowDate())); + + errorList.add(error); + } + } + + // 鎵归噺鎻掑叆寮傚父鏁版嵁 + if (!errorList.isEmpty()) { + apsPlateStandardRequireErrorMapper.batchInsert(errorList); } // 鎵归噺鎻掑叆鏁版嵁 @@ -1455,29 +1499,20 @@ // 浣跨敤缁勫悎key鏉ュ疄鐜板缁村害鍒嗙粍锛堝姩鎬乺owGroupBy瀛楁 + 鍙�夌殑宸ュ巶/涓撲笟/杞﹂棿锛� Map<String, Map<String, Object>> groupInfoMap = new HashMap<>(); Map<String, Map<String, BigDecimal>> groupTimeDataMap = new HashMap<>(); + // 瀛樺偍姣忎釜groupKey瀵瑰簲鐨刾rocessName闆嗗悎 + Map<String, Set<String>> groupProcessNamesMap = new HashMap<>(); // 閬嶅巻鍘熷鏁版嵁锛屾寜澶氱淮搴﹀垎缁勮繘琛岃仛鍚� for (Map<String, Object> data : rawData) { - // 杩囨护宸ュ簭鍚嶇О涓虹┖鐨勬暟鎹� - String processName = getStringValue(data, "processName"); - if (processName == null || processName.trim().isEmpty()) { - log.warn("璺宠繃澶勭悊锛氬伐搴忓悕绉颁负绌�"); - continue; - } - - // 杩囨护杞﹂棿涓虹┖鐨勬暟鎹� - String workshop = getStringValue(data, "workshop"); - if (workshop == null || workshop.trim().isEmpty()) { - log.warn("璺宠繃澶勭悊锛氳溅闂翠负绌猴紝宸ュ簭鍚嶇О={}", processName); - continue; - } - // 鑾峰彇琛屽垎缁勫瓧娈靛�� String rowGroupValue = getStringValue(data, rowGroupBy); - if (rowGroupValue == null) { - log.warn("璺宠繃澶勭悊锛歿} 瀛楁鍊间负null", rowGroupBy); + if (rowGroupValue == null || rowGroupValue.trim().isEmpty()) { + log.warn("璺宠繃澶勭悊锛歿} 瀛楁鍊间负绌�", rowGroupBy); continue; } + + // 鑾峰彇宸ュ簭鍚嶇О锛堢敤浜庢棩蹇楀拰鍚庣画澶勭悊锛� + String processName = getStringValue(data, "processName"); // 澶勭悊寮�宸ユ棩鏈� Date processPlanStartDay = (Date) data.get("processPlanStartDay"); @@ -1489,6 +1524,7 @@ // 鏋勫缓鍒嗙粍閿� - 鍩轰簬row鍒嗙粍瀛楁鍜屽彲閫夌殑鍏朵粬缁村害 String plant = getStringValue(data, "plant"); String major = getStringValue(data, "major"); + String workshop = getStringValue(data, "workshop"); StringBuilder groupKeyBuilder = new StringBuilder(rowGroupValue); @@ -1514,6 +1550,14 @@ groupInfo.put("workshop", workshop); groupInfo.put("processName", processName); groupInfoMap.put(groupKey, groupInfo); + } + + // 鏀堕泦processName + if (processName != null && !processName.trim().isEmpty()) { + if (!groupProcessNamesMap.containsKey(groupKey)) { + groupProcessNamesMap.put(groupKey, new HashSet<>()); + } + groupProcessNamesMap.get(groupKey).add(processName); } // 璁$畻鏃堕棿鐐筀ey @@ -1562,8 +1606,17 @@ rowDetail.put("workshop", groupInfo.get("workshop")); } - // 淇濈暀宸ュ簭鍚嶇О淇℃伅锛屼互渚垮墠绔睍绀� - if (!"processName".equals(rowGroupBy)) { + // 澶勭悊processName - 濡傛灉rowGroupBy涓簑orkshop锛屽垯灏嗘墍鏈塸rocessName鐢ㄥ垎鍙疯繛鎺� + if ("workshop".equals(rowGroupBy)) { + Set<String> processNames = groupProcessNamesMap.getOrDefault(groupKey, new HashSet<>()); + if (!processNames.isEmpty()) { + String joinedProcessNames = String.join(";", processNames); + rowDetail.put("processName", joinedProcessNames); + } else { + rowDetail.put("processName", groupInfo.get("processName")); + } + } else if (!"processName".equals(rowGroupBy)) { + // 淇濈暀宸ュ簭鍚嶇О淇℃伅锛屼互渚垮墠绔睍绀� rowDetail.put("processName", groupInfo.get("processName")); } @@ -1590,7 +1643,7 @@ rowEntry.put(rowGroupValue, rowDetail); plantTable.add(rowEntry); } - + result.put("plantTable", plantTable); result.put("timePoints", timePoints); result.put("rowGroupBy", rowGroupBy); -- Gitblit v1.9.3