From 04914a9997afbbead6f8adbb9d9c40e05b2edbd1 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 17 十二月 2025 17:04:34 +0800
Subject: [PATCH] 修复调用导入工程失败 重复保存;修复分批出片逻辑

---
 mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/GlassInfoImportController.java |   93 +++++++++++++++++++++++++---------------------
 1 files changed, 51 insertions(+), 42 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/GlassInfoImportController.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/GlassInfoImportController.java
index aac3b58..191d48c 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/GlassInfoImportController.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/controller/GlassInfoImportController.java
@@ -42,6 +42,11 @@
      */
     @PostMapping("/importExcel")
     public ResponseEntity<?> importEngineer(@RequestBody Map<String, Object> body) {
+        // 鍒濆鍖栬繑鍥炵粨鏋滃拰鍏抽敭鏍囪
+        Map<String, Object> errorResponse = new HashMap<>();
+        boolean mesSuccess = false;
+        String engineeringId = null;
+        // 1. 鏍¢獙
         Object rowsObj = body.get("excelRows");
         if (!(rowsObj instanceof List)) {
             return ResponseEntity.badRequest().body("excelRows 蹇呴』鏄暟缁�");
@@ -52,71 +57,75 @@
             return ResponseEntity.badRequest().body("excelRows 涓嶈兘涓虹┖");
         }
 
-        Map<String, Object> payload = glassInfoService.buildEngineerImportPayload(excelRows);
-        log.info("鏋勫缓鐨� MES 瀵煎叆鏁版嵁: {}", payload);
+         try {
+            // 2. 鏋勫缓MES瀵煎叆鏁版嵁
+            Map<String, Object> payload = glassInfoService.buildEngineerImportPayload(excelRows);
+            log.info("鏋勫缓鐨� MES 瀵煎叆鏁版嵁: {}", payload);
 
-        // 浠巔ayload涓彁鍙栧伐绋嬪彿锛坧ayload涓娇鐢ㄧ殑鏄痚ngineerId锛�
-        String engineeringId = (String) payload.get("engineerId");
-        if (engineeringId == null || engineeringId.isEmpty()) {
-            // 濡傛灉payload涓病鏈塭ngineerId锛屽皾璇曚粠glassInfolList涓幏鍙�
-            @SuppressWarnings("unchecked")
-            List<Map<String, Object>> glassInfoList = (List<Map<String, Object>>) payload.get("glassInfolList");
-            if (glassInfoList != null && !glassInfoList.isEmpty()) {
-                Object firstEngineerId = glassInfoList.get(0).get("engineerId");
-                if (firstEngineerId != null) {
-                    engineeringId = firstEngineerId.toString();
+            // 3. 鎻愬彇宸ョ▼鍙�
+            engineeringId = (String) payload.get("engineerId");
+            if (engineeringId == null || engineeringId.isEmpty()) {
+                @SuppressWarnings("unchecked")
+                List<Map<String, Object>> glassInfoList = (List<Map<String, Object>>) payload.get("glassInfolList");
+                if (glassInfoList != null && !glassInfoList.isEmpty()) {
+                    Object firstEngineerId = glassInfoList.get(0).get("engineerId");
+                    if (firstEngineerId != null) {
+                        engineeringId = firstEngineerId.toString();
+                    }
                 }
             }
-        }
 
-        String mesEngineeringImportUrl = glassInfoService.getMesEngineeringImportUrl();
-
-        try {
+          // 4. 璋冪敤MES鎺ュ彛
+            String mesEngineeringImportUrl = glassInfoService.getMesEngineeringImportUrl();
             ResponseEntity<Map> mesResp = restTemplate.postForEntity(mesEngineeringImportUrl, payload, Map.class);
             Map<String, Object> mesBody = mesResp.getBody();
-            
-            // 妫�鏌ES鍝嶅簲鏄惁鐪熸鎴愬姛锛堜笉浠呮鏌TTP鐘舵�佺爜锛岃繕瑕佹鏌ュ搷搴斾綋涓殑code瀛楁锛�
-            boolean mesSuccess = false;
+
+            // 5. 妫�鏌ES鍝嶅簲鏄惁鐪熸鎴愬姛锛堜紭鍖栧悗鐨勫垽鏂�昏緫锛屽鍔犲紓甯告崟鑾凤級
             if (mesResp.getStatusCode().is2xxSuccessful() && mesBody != null) {
                 Object codeObj = mesBody.get("code");
                 if (codeObj != null) {
-                    int code = codeObj instanceof Number ? ((Number) codeObj).intValue() : 
-                              Integer.parseInt(String.valueOf(codeObj));
-                    // MES鎴愬姛閫氬父杩斿洖code=200鎴�0
-                    mesSuccess = (code == 200 || code == 0);
+                    try {
+                        // 瀹夊叏杞崲code涓烘暣鏁帮紝閬垮厤绫诲瀷杞崲寮傚父
+                        int code = codeObj instanceof Number ? ((Number) codeObj).intValue() :
+                                Integer.parseInt(String.valueOf(codeObj).trim());
+                        // MES鎴愬姛閫氬父杩斿洖code=200鎴�0
+                        mesSuccess = (code == 200 || code == 0);
+                    } catch (NumberFormatException e) {
+                        log.warn("MES鍝嶅簲code瀛楁涓嶆槸鏈夋晥鏁板瓧锛歿}", codeObj, e);
+                    }
                 } else {
-                    // 濡傛灉娌℃湁code瀛楁锛岃涓篐TTP 2xx灏辨槸鎴愬姛
+                    // 娌℃湁code瀛楁锛岃涓篐TTP 2xx灏辨槸鎴愬姛
                     mesSuccess = true;
                 }
-            }
-            
-            // 鍙湁MES瀵煎叆鐪熸鎴愬姛鏃讹紝鎵嶄繚瀛樼幓鐠冧俊鎭埌鏈湴鏁版嵁搴擄紝骞跺叧鑱攅ngineering_id
-            if (mesSuccess && engineeringId != null) {
-                try {
-                    glassInfoService.saveGlassInfosFromExcel(excelRows, engineeringId);
-                    log.info("MES瀵煎叆鎴愬姛锛屽凡淇濆瓨鐜荤拑淇℃伅鍒版湰鍦版暟鎹簱锛屽伐绋嬪彿: {}", engineeringId);
-                } catch (Exception e) {
-                    log.error("MES瀵煎叆鎴愬姛锛屼絾淇濆瓨鐜荤拑淇℃伅鍒版湰鍦版暟鎹簱澶辫触: engineeringId={}", engineeringId, e);
-                    // 鍗充娇淇濆瓨澶辫触锛屼篃杩斿洖MES鐨勬垚鍔熷搷搴旓紝浣嗚褰曢敊璇棩蹇�
-                }
             } else {
-                log.warn("MES瀵煎叆鏈垚鍔燂紝涓嶄繚瀛樼幓鐠冧俊鎭埌鏈湴鏁版嵁搴�: engineeringId={}, mesSuccess={}", engineeringId, mesSuccess);
+                // HTTP鐘舵�佺爜涓嶆槸2xx鎴栧搷搴斾綋涓虹┖锛岃涓哄け璐�
+                mesSuccess = false;
+                log.warn("MES鎺ュ彛杩斿洖闈�2xx鐘舵�佺爜鎴栫┖鍝嶅簲浣擄紝鐘舵�佺爜锛歿}", mesResp.getStatusCode());
             }
-            
-            // 鐩存帴杩斿洖 MES 鐨勫搷搴旓紝璁╁墠绔牴鎹搷搴斾綋涓殑 code 瀛楁鍒ゆ柇鏄惁鎴愬姛
+
+            // 6. 鍙湁MES瀵煎叆鐪熸鎴愬姛涓斿伐绋嬪彿涓嶄负绌烘椂锛屾墠淇濆瓨鍒版湰鍦版暟鎹簱
+            if (mesSuccess && engineeringId != null && !engineeringId.isEmpty()) {
+                // 鍏堜繚瀛樺伐绋嬪彿
+                engineeringSequenceService.saveEngineeringId(new Date(), engineeringId);
+                // 鍐嶄繚瀛樼幓鐠冧俊鎭�
+                glassInfoService.saveGlassInfosFromExcel(excelRows, engineeringId);
+                log.info("MES瀵煎叆鎴愬姛锛屽凡淇濆瓨宸ョ▼鍙峰拰鐜荤拑淇℃伅鍒版湰鍦版暟鎹簱锛屽伐绋嬪彿: {}", engineeringId);
+            } else {
+                log.warn("MES瀵煎叆鏈垚鍔燂紝涓嶄繚瀛樺伐绋嬪彿鍜岀幓鐠冧俊鎭埌鏈湴鏁版嵁搴�: engineeringId={}, mesSuccess={}", engineeringId, mesSuccess);
+            }
+
+            // 7. 杩斿洖MES鐨勫搷搴�
             return ResponseEntity.status(mesResp.getStatusCode()).body(mesBody);
         } catch (org.springframework.web.client.ResourceAccessException e) {
             // 杩炴帴瓒呮椂鎴栨棤娉曡繛鎺�
-            log.error("杞彂 MES 瀵煎叆鎺ュ彛澶辫触锛堣繛鎺ラ棶棰橈級 url={}, error={}", mesEngineeringImportUrl, e.getMessage(), e);
-            Map<String, Object> errorResponse = new java.util.HashMap<>();
+            log.error("杞彂 MES 瀵煎叆鎺ュ彛澶辫触锛堣繛鎺ラ棶棰橈級 url={}, error={}", glassInfoService.getMesEngineeringImportUrl(), e.getMessage(), e);
             errorResponse.put("code", 500);
             errorResponse.put("message", "鏃犳硶杩炴帴鍒� MES 鎺ュ彛锛岃妫�鏌ョ綉缁滆繛鎺ユ垨鑱旂郴绠$悊鍛�");
             errorResponse.put("data", false);
             return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse);
         } catch (Exception e) {
             // 鍏朵粬寮傚父
-            log.error("杞彂 MES 瀵煎叆鎺ュ彛澶辫触 url={}, error={}", mesEngineeringImportUrl, e.getMessage(), e);
-            Map<String, Object> errorResponse = new java.util.HashMap<>();
+            log.error("杞彂 MES 瀵煎叆鎺ュ彛澶辫触 url={}, error={}", glassInfoService.getMesEngineeringImportUrl(), e.getMessage(), e);
             errorResponse.put("code", 500);
             errorResponse.put("message", "杞彂 MES 澶辫触: " + e.getMessage());
             errorResponse.put("data", false);

--
Gitblit v1.8.0