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