From 9dcde5b27b70a4b0c0885347af5405eb2d1ef089 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期五, 12 十二月 2025 17:00:54 +0800
Subject: [PATCH] 修改前端状态显示变更,保持前端实时更新
---
mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 98 insertions(+), 21 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 36e73b8..e0c1ea0 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
@@ -16,6 +16,7 @@
import java.math.BigDecimal;
import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import static java.util.stream.IntStream.range;
@@ -241,6 +242,27 @@
final String filmsIdDefaultFinal = filmsIdDefault;
final double thicknessDefaultFinal = thicknessDefault;
+ // 鐢ㄤ簬鎸� flowCardId 鍏ㄥ眬璁℃暟搴忓彿
+ Map<String, Integer> flowCardSequenceCounter = new HashMap<>();
+ // 鐢ㄤ簬鎸� flowCardId 璁℃暟 temperingFeedSequence
+ Map<String, Integer> temperingFeedSequenceCounter = new HashMap<>();
+ // 鐢ㄤ簬鎸� flowCardId 鍒嗛厤 temperingLayoutId
+ Map<String, Integer> temperingLayoutIdMap = new HashMap<>();
+ AtomicInteger nextTemperingLayoutId = new AtomicInteger(1);
+
+ // 鍏堝缓绔嬪師鐗囨槧灏勶紝鐢ㄤ簬鍚庣画鍖归厤 rawSequence
+ Map<String, Integer> rawSequenceMap = new HashMap<>();
+ for (Map<String, Object> row : excelRows) {
+ double width = parseDouble(row.get("width"), 0d);
+ double height = parseDouble(row.get("height"), 0d);
+ double thickness = parseDouble(row.get("thickness"), thicknessDefaultFinal);
+ String filmsId = strOrDefault(row.get("filmsId"), filmsIdDefaultFinal);
+ String key = width + "_" + height + "_" + thickness + "_" + filmsId;
+ if (!rawSequenceMap.containsKey(key)) {
+ rawSequenceMap.put(key, rawSequenceMap.size() + 1);
+ }
+ }
+
List<Map<String, Object>> glassInfolList = excelRows.stream()
.flatMap(row -> {
Object qtyObj = row.getOrDefault("quantity", 1);
@@ -249,21 +271,41 @@
String glassId = str(row.get("glassId"));
String filmsId = strOrDefault(row.get("filmsId"), filmsIdDefaultFinal);
String flowCardId = str(row.get("flowCardId"));
+ // orderNumber 鏄暣鍨嬶紙鐜荤拑绫诲瀷锛夛紝浠� Excel 璇诲彇鎴栦娇鐢ㄩ粯璁ゅ�� 1
+ Object orderNumberObj = row.get("orderNumber");
+ final Integer finalOrderNumber = orderNumberObj != null
+ ? (int) parseDouble(orderNumberObj, 1)
+ : 1;
String productName = str(row.get("productName"));
String customerName = str(row.get("customerName"));
double width = parseDouble(row.get("width"), 0d);
double height = parseDouble(row.get("height"), 0d);
double thickness = parseDouble(row.get("thickness"), thicknessDefaultFinal);
+
+ // 璁$畻 rawSequence
+ String rawKey = width + "_" + height + "_" + thickness + "_" + filmsId;
+ Integer rawSequence = rawSequenceMap.get(rawKey);
int finalQty = qty;
log.info("瑙f瀽鍒版暟閲忥細row={}, quantity={}, 鏈�缁坬ty={}", row, qtyObj, finalQty);
return range(0, qty).mapToObj(idx -> {
String baseGlassId = engineerIdFinal + glassId;
- String finalGlassId = finalQty > 1 ? baseGlassId + "_" + (idx + 1) : baseGlassId;
+ String finalGlassId = finalQty > 1 ? baseGlassId + (idx + 1) : baseGlassId;
String baseFlowCardId = flowCardId.isEmpty() ? baseGlassId : flowCardId;
- String finalFlowCardSequence = baseFlowCardId + "/" + (idx + 1);
- String finalFlowCardId = baseFlowCardId;
+ // 濡傛灉 baseFlowCardId 宸茬粡鍖呭惈灏鹃儴 "/鏁板瓧"锛屽厛鍘绘帀锛屽啀鐢卞悗绔粺涓�杩藉姞搴忓彿
+ baseFlowCardId = baseFlowCardId.replaceFirst("/\\d+$", "");
+ // 鎸� flowCardId 鍏ㄥ眬閫掑搴忓彿
+ int sequenceNum = flowCardSequenceCounter.compute(baseFlowCardId, (k, v) -> (v == null ? 0 : v) + 1);
+ String finalFlowCardSequence = baseFlowCardId + "/" + 1;
+
+ // 鎸� flowCardId 鍒嗛厤 temperingLayoutId
+ Integer temperingLayoutId = temperingLayoutIdMap.computeIfAbsent(baseFlowCardId, k -> nextTemperingLayoutId.getAndIncrement());
+ // 鎸� flowCardId 閫掑 temperingFeedSequence
+ int temperingFeedSequence = temperingFeedSequenceCounter.compute(baseFlowCardId, (k, v) -> (v == null ? 0 : v) + 1);
+
+ log.debug("鐢熸垚flowCardSequence: idx={}, baseFlowCardId={}, sequenceNum={}, finalFlowCardSequence={}, temperingLayoutId={}, temperingFeedSequence={}",
+ idx, baseFlowCardId, sequenceNum, finalFlowCardSequence, temperingLayoutId, temperingFeedSequence);
Map<String, Object> m = new HashMap<>();
m.put("xAxis", 0);
@@ -272,24 +314,25 @@
m.put("yCoordinate", 0);
m.put("glassId", finalGlassId);
m.put("engineerId", engineerIdFinal);
- m.put("flowCardId", finalFlowCardId);
- m.put("productSortNumber", idx + 1);
- m.put("hollowCombineDirection", "0");
+ m.put("flowCardId", baseFlowCardId);
+ m.put("orderNumber", finalOrderNumber);
+ m.put("productSortNumber", 1); // 缁熶竴涓�1
+ m.put("hollowCombineDirection", "");
m.put("width", width);
m.put("height", height);
m.put("thickness", thickness);
m.put("filmsId", filmsId);
- m.put("layer", 0);
- m.put("totalLayer", 0);
+ m.put("layer", 1);
+ m.put("totalLayer", 1);
m.put("edgWidth", width);
m.put("edgHeight", height);
- m.put("isMultiple", 0);
+ m.put("isMultiple", finalQty > 1 ? 1 : 0); // 鏁伴噺>1鏃朵负1
m.put("maxWidth", width);
m.put("maxHeight", height);
m.put("isHorizontal", 0);
- m.put("rawSequence", 0);
- m.put("temperingLayoutId", 0);
- m.put("temperingFeedSequence", 0);
+ m.put("rawSequence", rawSequence != null ? rawSequence : 0);
+ m.put("temperingLayoutId", temperingLayoutId);
+ m.put("temperingFeedSequence", temperingFeedSequence);
m.put("angle", 0);
m.put("ruleId", 0);
m.put("combine", 0);
@@ -328,19 +371,27 @@
List<Map<String, Object>> engineeringRawQueueList = rawGlassMap.values().stream().collect(Collectors.toList());
- // 娴佺▼鍗′俊鎭�
+ // 娴佺▼鍗′俊鎭紙闇�瑕佺粺璁℃瘡涓� flowCardId 鐨勫疄闄呯幓鐠冩暟閲忥紝鑰冭檻 quantity锛�
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()) {
- flowCardId = glassId;
+ flowCardId = engineerIdFinal + glassId;
}
+ // 鍘绘帀灏鹃儴 "/鏁板瓧"锛堝鏋滄湁锛�
+ flowCardId = flowCardId.replaceFirst("/\\d+$", "");
+ // orderNumber 鏄暣鍨嬶紙鐜荤拑绫诲瀷锛夛紝浠� Excel 璇诲彇鎴栦娇鐢ㄩ粯璁ゅ�� 1
+ Object orderNumberObj = row.get("orderNumber");
+ Integer orderNumber = orderNumberObj != null
+ ? (int) parseDouble(orderNumberObj, 1)
+ : 1;
+ Object qtyObj = row.getOrDefault("quantity", 1);
+ int qty = parseDouble(qtyObj, 1) > 0 ? (int) parseDouble(qtyObj, 1) : 1;
double width = parseDouble(row.get("width"), 0d);
double height = parseDouble(row.get("height"), 0d);
double thickness = parseDouble(row.get("thickness"), thicknessDefaultFinal);
String filmsId = strOrDefault(row.get("filmsId"), filmsIdDefaultFinal);
-
String productName = str(row.get("productName"));
String customerName = str(row.get("customerName"));
@@ -352,15 +403,16 @@
m.put("height", height);
m.put("thickness", thickness);
m.put("filmsId", filmsId);
- m.put("totalLayer", 0);
- m.put("layer", 0);
- m.put("glassTotal", 1);
+ m.put("totalLayer", 1);
+ m.put("layer", 1);
+ m.put("glassTotal", qty); // 浣跨敤瀹為檯鏁伴噺
+ m.put("orderNumber", orderNumber);
m.put("productName", productName);
m.put("customerName", customerName);
flowCardMap.put(flowCardId, m);
} else {
- int count = (int) exist.getOrDefault("glassTotal", 1);
- exist.put("glassTotal", count + 1);
+ int count = (int) exist.getOrDefault("glassTotal", 0);
+ exist.put("glassTotal", count + qty); // 绱姞鏁伴噺
}
}
List<Map<String, Object>> flowCardInfoList = flowCardMap.values().stream().collect(Collectors.toList());
@@ -374,8 +426,33 @@
.mapToDouble(m -> parseDouble(m.get("rawGlassWidth"), 0d) * parseDouble(m.get("rawGlassHeight"), 0d) / 1_000_000d)
.sum();
+ // 璁$畻鏈�澶ц礋杞藉昂瀵革紙鐢ㄤ簬閽㈠寲鍙傛暟锛�
+ double maxLoadWidth = glassInfolList.stream()
+ .mapToDouble(m -> parseDouble(m.get("width"), 0d))
+ .max().orElse(2000);
+ double maxLoadLength = glassInfolList.stream()
+ .mapToDouble(m -> parseDouble(m.get("height"), 0d))
+ .max().orElse(3000);
+
+ // 鐢熸垚閽㈠寲鍙傛暟
+ List<Map<String, Object>> temperingParameterList = new ArrayList<>();
+ Map<String, Object> temperingParam = new HashMap<>();
+ temperingParam.put("engineerId", engineerIdFinal);
+ temperingParam.put("heatMode", 1);
+ temperingParam.put("chaosPct", 50);
+ temperingParam.put("maxLoadPct", 100);
+ temperingParam.put("loadWidth", (int) Math.round(maxLoadWidth));
+ temperingParam.put("loadLength", (int) Math.round(maxLoadLength));
+ temperingParam.put("xSpace", 50);
+ temperingParam.put("ySpace", 50);
+ temperingParam.put("rotateMode", 0);
+ temperingParam.put("allowRotate", 0);
+ temperingParam.put("tempering", 1);
+ temperingParam.put("curtainWall", 0);
+ temperingParameterList.add(temperingParam);
+
result.put("engineerId", engineerIdFinal);
- result.put("engineerName", "宸ョ▼_" + engineerIdFinal);
+ result.put("engineerName", thicknessDefaultFinal + "mm" + filmsIdDefaultFinal);
result.put("avgAvailability", "90");
result.put("validAvailability", "90");
result.put("lastAvailability", "90");
--
Gitblit v1.8.0