From 16f4bb3c28fc85cffcc511718c903ada9fdab134 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期五, 26 十二月 2025 16:59:45 +0800
Subject: [PATCH] 调用mes导入工程参数修改,Excel表数据流程卡号一致;增加读取层号/工程号方法; 工程号一致覆盖更新
---
mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java | 134 +++++++++++++++++++++++++++++---------------
1 files changed, 88 insertions(+), 46 deletions(-)
diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java
index d46acfb..3e04c93 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java
@@ -233,8 +233,18 @@
return result;
}
- // 宸ョ▼鍙风敓鎴愶細姣忔瀵煎叆閮界敓鎴愭柊鐨勫伐绋嬪彿锛堝厛鍙敓鎴愶紝涓嶄繚瀛樺埌鏁版嵁搴擄紝绛夊埌MES璋冪敤鎴愬姛鍚庡啀淇濆瓨锛�
- final String engineerId = engineeringSequenceService.generateEngineeringId(new Date());
+ // 宸ョ▼鍙凤細浠h〃鏁翠釜Excel琛紝浼樺厛浣跨敤Excel涓殑宸ョ▼鍙凤紙浠庣涓�琛屾垨浠绘剰涓�琛岃幏鍙栵級锛屽鏋滄墍鏈夎閮芥病鏈夊垯鑷姩鐢熸垚
+ String engineerIdFromExcel = null;
+ for (Map<String, Object> row : excelRows) {
+ String engineeringId = str(row.get("engineeringId"));
+ if (engineeringId != null && !engineeringId.trim().isEmpty()) {
+ engineerIdFromExcel = engineeringId.trim();
+ break; // 鎵惧埌绗竴涓潪绌虹殑宸ョ▼鍙峰氨浣跨敤
+ }
+ }
+ final String engineerId = engineerIdFromExcel != null
+ ? engineerIdFromExcel
+ : engineeringSequenceService.generateEngineeringId(new Date());
final String filmsIdDefault = firstValue(excelRows, "filmsId", "鐧界幓");
final double thicknessDefault = parseDouble(firstValue(excelRows, "thickness"), 0d);
@@ -246,6 +256,15 @@
// 鐢熸垚鏃ユ湡瀛楃涓诧紙yyMMdd鏍煎紡锛夛紝鐢ㄤ簬娴佺▼鍗D鐢熸垚
LocalDate localDate = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
String dateStr = localDate.format(DateTimeFormatter.ofPattern("yyMMdd"));
+
+ // 妫�鏌ユ槸鍚︽湁娴佺▼鍗D锛氬鏋滄墍鏈夎鐨勬祦绋嬪崱ID閮戒负绌猴紝鍒欐墍鏈夎褰曞叡浜悓涓�涓祦绋嬪崱ID
+ boolean allFlowCardIdEmpty = excelRows.stream()
+ .allMatch(row -> {
+ String flowCardId = str(row.get("flowCardId"));
+ return flowCardId == null || flowCardId.trim().isEmpty();
+ });
+ // 濡傛灉鎵�鏈夋祦绋嬪崱ID閮戒负绌猴紝鐢熸垚涓�涓叡浜殑娴佺▼鍗D
+ String sharedFlowCardId = allFlowCardIdEmpty ? "NG" + dateStr + "01A001" : null;
// 鐢ㄤ簬瀛樺偍姣忎釜鐜荤拑ID瀵瑰簲鐨勬祦绋嬪崱ID锛堝悓涓�鐜荤拑ID鐨勫涓幓鐠冨叡浜悓涓�涓祦绋嬪崱ID锛�
Map<String, String> glassIdFlowCardIdMap = new HashMap<>();
@@ -276,32 +295,25 @@
String glassId = str(row.get("glassId"));
String filmsId = strOrDefault(row.get("filmsId"), filmsIdDefaultFinal);
- String flowCardId = str(row.get("flowCardId"));
-
- // 濡傛灉娴佺▼鍗D涓虹┖锛屾寜鏂拌鍒欑敓鎴愶細NG + yyMMdd + 搴忓彿锛堜袱浣嶏紝浣跨敤鐜荤拑ID锛� + A001
- if (flowCardId.isEmpty()) {
- // 妫�鏌ユ槸鍚﹀凡涓鸿鐜荤拑ID鐢熸垚杩囨祦绋嬪崱ID锛堝悓涓�鐜荤拑ID鐨勫涓幓鐠冨叡浜悓涓�涓祦绋嬪崱ID锛�
- String generatedFlowCardId = glassIdFlowCardIdMap.get(glassId);
- if (generatedFlowCardId == null) {
- // 浣跨敤鐜荤拑ID浣滀负搴忓彿锛堣В鏋愪负鏁存暟锛屽鏋滆В鏋愬け璐ュ垯浣跨敤1锛�
- int sequence;
- try {
- sequence = Integer.parseInt(glassId.trim());
- if (sequence <= 0) {
- sequence = 1;
- }
- } catch (NumberFormatException e) {
- log.warn("鐜荤拑ID鏃犳硶瑙f瀽涓烘暣鏁帮紝浣跨敤榛樿鍊�1: glassId={}", glassId);
- sequence = 1;
- }
- generatedFlowCardId = "NG" + dateStr + String.format("%02d", sequence) + "A001";
- glassIdFlowCardIdMap.put(glassId, generatedFlowCardId);
- log.info("涓虹幓鐠僆D {} 鐢熸垚娴佺▼鍗D: flowCardId={}", glassId, generatedFlowCardId);
- }
- flowCardId = generatedFlowCardId;
+ // 娴佺▼鍗D锛氬鏋淓xcel涓湁锛屼娇鐢‥xcel鐨勶紱濡傛灉涓虹┖锛屼娇鐢ㄥ叡浜殑娴佺▼鍗D
+ String flowCardIdFromExcel = str(row.get("flowCardId"));
+ String flowCardId;
+ if (flowCardIdFromExcel != null && !flowCardIdFromExcel.trim().isEmpty()) {
+ // Excel涓湁娴佺▼鍗D锛屼娇鐢‥xcel鐨�
+ flowCardId = flowCardIdFromExcel.trim();
+ } else {
+ // Excel涓祦绋嬪崱ID涓虹┖锛屼娇鐢ㄥ叡浜殑娴佺▼鍗D
+ flowCardId = sharedFlowCardId != null ? sharedFlowCardId : getOrGenerateFlowCardId(glassId, dateStr, glassIdFlowCardIdMap);
}
// 鍘绘帀灏鹃儴 "/鏁板瓧"锛堝鏋滄湁锛�
String baseFlowCardId = flowCardId.replaceFirst("/\\d+$", "");
+
+ // 灞傚彿锛氬鏋淓xcel涓湁锛屼娇鐢‥xcel鐨勶紱濡傛灉娌℃湁锛岄粯璁�1
+ Object layerObj = row.get("layer");
+ int layer = layerObj != null ? (int) parseDouble(layerObj, 1) : 1;
+ if (layer <= 0) {
+ layer = 1;
+ }
// orderNumber 鏄暣鍨嬶紙鐜荤拑绫诲瀷锛夛紝浠� Excel 璇诲彇鎴栦娇鐢ㄩ粯璁ゅ�� 1
Object orderNumberObj = row.get("orderNumber");
@@ -351,7 +363,7 @@
m.put("height", height);
m.put("thickness", thickness);
m.put("filmsId", filmsId);
- m.put("layer", 1);
+ m.put("layer", layer);
m.put("totalLayer", 1);
m.put("edgWidth", width);
m.put("edgHeight", height);
@@ -403,26 +415,15 @@
Map<String, Map<String, Object>> flowCardMap = new HashMap<>();
for (Map<String, Object> row : excelRows) {
String glassId = str(row.get("glassId"));
- String flowCardId = str(row.get("flowCardId"));
- if (flowCardId.isEmpty()) {
- // 浣跨敤宸茬敓鎴愮殑娴佺▼鍗D锛堜笌glassInfolList涓殑閫昏緫淇濇寔涓�鑷达級
- flowCardId = glassIdFlowCardIdMap.get(glassId);
- if (flowCardId == null) {
- // 濡傛灉鏈敓鎴愶紝鍒欐寜瑙勫垯鐢熸垚锛堢悊璁轰笂涓嶅簲璇ヨ蛋鍒拌繖閲岋紝鍥犱负glassInfolList宸茬粡鐢熸垚杩囷級
- int sequence;
- try {
- sequence = Integer.parseInt(glassId.trim());
- if (sequence <= 0) {
- sequence = 1;
- }
- } catch (NumberFormatException e) {
- log.warn("鐜荤拑ID鏃犳硶瑙f瀽涓烘暣鏁帮紝浣跨敤榛樿鍊�1: glassId={}", glassId);
- sequence = 1;
- }
- flowCardId = "NG" + dateStr + String.format("%02d", sequence) + "A001";
- glassIdFlowCardIdMap.put(glassId, flowCardId);
- log.warn("娴佺▼鍗D鏈湪glassInfolList涓敓鎴愶紝姝ゅ琛ュ厖鐢熸垚: flowCardId={}, glassId={}", flowCardId, glassId);
- }
+ // 娴佺▼鍗D锛氬鏋淓xcel涓湁锛屼娇鐢‥xcel鐨勶紱濡傛灉涓虹┖锛屼娇鐢ㄥ叡浜殑娴佺▼鍗D锛堜笌glassInfolList閫昏緫涓�鑷达級
+ String flowCardIdFromExcel = str(row.get("flowCardId"));
+ String flowCardId;
+ if (flowCardIdFromExcel != null && !flowCardIdFromExcel.trim().isEmpty()) {
+ // Excel涓湁娴佺▼鍗D锛屼娇鐢‥xcel鐨�
+ flowCardId = flowCardIdFromExcel.trim();
+ } else {
+ // Excel涓祦绋嬪崱ID涓虹┖锛屼娇鐢ㄥ叡浜殑娴佺▼鍗D
+ flowCardId = sharedFlowCardId != null ? sharedFlowCardId : getOrGenerateFlowCardId(glassId, dateStr, glassIdFlowCardIdMap);
}
// 鍘绘帀灏鹃儴 "/鏁板瓧"锛堝鏋滄湁锛�
flowCardId = flowCardId.replaceFirst("/\\d+$", "");
@@ -592,6 +593,40 @@
return def;
}
}
+
+ /**
+ * 鑾峰彇鎴栫敓鎴愭祦绋嬪崱ID
+ * 濡傛灉宸插瓨鍦ㄥ垯杩斿洖锛屽惁鍒欑敓鎴愭柊鐨勬祦绋嬪崱ID骞剁紦瀛�
+ * 鍓嶇鏍煎紡锛氬師濮媑lassId + 涓や綅搴忓彿锛堝"101"銆�"102"銆�"201"锛夛紝閫氳繃闄や互100鍘绘帀鏈�鍚庝袱浣嶆彁鍙栧師濮媑lassId
+ *
+ * @param glassId 鐜荤拑ID锛堝"101"銆�"102"銆�"201"锛�
+ * @param dateStr 鏃ユ湡瀛楃涓诧紙yyMMdd鏍煎紡锛�
+ * @param glassIdFlowCardIdMap 鐜荤拑ID鍒版祦绋嬪崱ID鐨勬槧灏勭紦瀛�
+ * @return 娴佺▼鍗D锛堟牸寮忥細NG + yyMMdd + 搴忓彿锛堜袱浣嶏級 + A001锛�
+ */
+ private String getOrGenerateFlowCardId(String glassId, String dateStr, Map<String, String> glassIdFlowCardIdMap) {
+ String flowCardId = glassIdFlowCardIdMap.get(glassId);
+ if (flowCardId == null) {
+ // 浠巊lassId涓彁鍙栧師濮嬫暟瀛楋細101 -> 1, 102 -> 1, 201 -> 2
+ int sequence = 1;
+ if (glassId != null && !glassId.trim().isEmpty()) {
+ try {
+ String cleaned = glassId.trim().split("[\\r\\n\\t\\s]+")[0];
+ if (cleaned.matches("\\d+")) {
+ int num = Integer.parseInt(cleaned);
+ // 濡傛灉闀垮害>=3锛岄櫎浠�100鍘绘帀鏈�鍚庝袱浣嶏紙鍓嶇杩藉姞鐨勫簭鍙凤級
+ sequence = (cleaned.length() >= 3 && num >= 100) ? num / 100 : (num > 0 ? num : 1);
+ }
+ } catch (Exception e) {
+ log.error("浠巊lassId涓彁鍙栧師濮嬫暟瀛楀け璐�: glassId={}", glassId, e);
+ }
+ }
+ flowCardId = "NG" + dateStr + String.format("%02d", sequence) + "A001";
+ glassIdFlowCardIdMap.put(glassId, flowCardId);
+ log.info("涓虹幓鐠僆D {} 鐢熸垚娴佺▼鍗D: flowCardId={}", glassId, flowCardId);
+ }
+ return flowCardId;
+ }
/**
* 淇濈暀涓や綅灏忔暟锛堝洓鑸嶄簲鍏ワ級
@@ -622,6 +657,13 @@
return;
}
+ // 濡傛灉宸ョ▼鍙峰凡瀛樺湪锛屽厛鍒犻櫎璇ュ伐绋嬪彿涓嬬殑鏃ф暟鎹紝瀹炵幇瑕嗙洊鏇存柊
+ List<GlassInfo> existingGlassInfos = getGlassInfosByEngineeringId(engineeringId.trim());
+ if (!existingGlassInfos.isEmpty()) {
+ log.info("妫�娴嬪埌宸ョ▼鍙� {} 宸插瓨鍦� {} 鏉¤褰曪紝灏嗗垹闄ゆ棫鏁版嵁骞舵洿鏂�", engineeringId, existingGlassInfos.size());
+ deleteGlassInfosByEngineeringId(engineeringId.trim());
+ }
+
List<GlassInfo> glassInfos = new ArrayList<>();
Date now = new Date();
--
Gitblit v1.8.0