From 97ee5904ad00373cd60e1e12d26bad6b5cdb6b66 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期五, 23 五月 2025 13:12:31 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java |   68 +++++++++++++++++++++++++--------
 1 files changed, 51 insertions(+), 17 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..ce61324 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);
         }
         
         // 鎵归噺鎻掑叆鏁版嵁
@@ -1458,26 +1502,15 @@
         
         // 閬嶅巻鍘熷鏁版嵁锛屾寜澶氱淮搴﹀垎缁勮繘琛岃仛鍚�
         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 +1522,7 @@
             // 鏋勫缓鍒嗙粍閿� - 鍩轰簬row鍒嗙粍瀛楁鍜屽彲閫夌殑鍏朵粬缁村害
             String plant = getStringValue(data, "plant");
             String major = getStringValue(data, "major");
+            String workshop = getStringValue(data, "workshop");
             
             StringBuilder groupKeyBuilder = new StringBuilder(rowGroupValue);
             
@@ -1590,7 +1624,7 @@
             rowEntry.put(rowGroupValue, rowDetail);
             plantTable.add(rowEntry);
         }
-        
+
         result.put("plantTable", plantTable);
         result.put("timePoints", timePoints);
         result.put("rowGroupBy", rowGroupBy);

--
Gitblit v1.9.3