From 22e17b6db03ca58bc477a35ca067e55a09cffce7 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 10 十二月 2025 17:04:08 +0800
Subject: [PATCH] 添加工程表及相关逻辑,防止重复导入Excel表序号重复生成
---
mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java | 74 ++++++++++---------------------------
1 files changed, 20 insertions(+), 54 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 5d8b503..6c26414 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
@@ -5,17 +5,16 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.device.entity.GlassInfo;
import com.mes.device.mapper.DeviceGlassInfoMapper;
+import com.mes.device.service.EngineeringSequenceService;
import com.mes.device.service.GlassInfoService;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static java.util.stream.IntStream.range;
@@ -27,8 +26,12 @@
* @since 2024-11-20
*/
@Slf4j
+@RefreshScope
@Service("deviceGlassInfoService")
public class GlassInfoServiceImpl extends ServiceImpl<DeviceGlassInfoMapper, GlassInfo> implements GlassInfoService {
+
+ @Autowired
+ private EngineeringSequenceService engineeringSequenceService;
@Override
public GlassInfo getGlassInfo(String glassId) {
@@ -212,6 +215,14 @@
}
}
+ @Value("${mes.engineering.import-url}")
+ private String mesEngineeringImportUrl;
+
+ @Override
+ public String getMesEngineeringImportUrl() {
+ return mesEngineeringImportUrl;
+ }
+
@Override
public Map<String, Object> buildEngineerImportPayload(List<Map<String, Object>> excelRows) {
Map<String, Object> result = new HashMap<>();
@@ -219,9 +230,8 @@
return result;
}
- // 宸ョ▼鍙风敓鎴愶細P + yyMMdd + 搴忓彿(2浣�)
- AtomicInteger seq = new AtomicInteger(1);
- final String engineerId = generateEngineerId(firstValue(excelRows, "glassId"), seq.getAndIncrement());
+ // 宸ョ▼鍙风敓鎴愶細浣跨敤鏁版嵁搴撹嚜澧炲簭鍙凤紝閬垮厤閲嶅
+ final String engineerId = engineeringSequenceService.generateAndSaveEngineeringId(new Date());
final String filmsIdDefault = firstValue(excelRows, "filmsId", "鐧界幓");
final double thicknessDefault = parseDouble(firstValue(excelRows, "thickness"), 0d);
@@ -235,7 +245,6 @@
int qty = (int) parseDouble(row.getOrDefault("quantity", 1), 1);
if (qty <= 0) qty = 1;
String glassId = str(row.get("glassId"));
- Integer orderNumber = Integer.parseInt(str(row.get("orderNumber")));
String filmsId = strOrDefault(row.get("filmsId"), filmsIdDefaultFinal);
String flowCardId = str(row.get("flowCardId"));
String productName = str(row.get("productName"));
@@ -256,7 +265,6 @@
m.put("glassId", finalGlassId);
m.put("engineerId", engineerIdFinal);
m.put("flowCardId", finalFlowCardId);
- m.put("orderNumber", orderNumber);
m.put("productSortNumber", idx + 1);
m.put("hollowCombineDirection", "0");
m.put("width", width);
@@ -279,7 +287,7 @@
m.put("combine", 0);
m.put("markIcon", "");
m.put("filmRemove", 0);
- m.put("flowCardSequence", String.valueOf(idx + 1));
+ m.put("flowCardSequence", flowCardId + "/" + (idx + 1));
m.put("process", "");
m.put("rawAngle", 0);
m.put("graphNo", 0);
@@ -324,7 +332,7 @@
double height = parseDouble(row.get("height"), 0d);
double thickness = parseDouble(row.get("thickness"), thicknessDefaultFinal);
String filmsId = strOrDefault(row.get("filmsId"), filmsIdDefaultFinal);
- Integer orderNumber = Integer.parseInt(str(row.get("orderNumber")));
+
String productName = str(row.get("productName"));
String customerName = str(row.get("customerName"));
@@ -339,7 +347,6 @@
m.put("totalLayer", 0);
m.put("layer", 0);
m.put("glassTotal", 1);
- m.put("orderNumber", orderNumber);
m.put("productName", productName);
m.put("customerName", customerName);
flowCardMap.put(flowCardId, m);
@@ -381,47 +388,6 @@
return result;
}
- // 鏃ユ湡鏍煎紡鍖栧櫒锛堢嚎绋嬩笉瀹夊叏锛屼娇鐢═hreadLocal淇濊瘉绾跨▼瀹夊叏锛�
- private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd");
-
- // 鏁板瓧鍖归厤姝e垯锛堥缂栬瘧鎻愬崌鎬ц兘锛�
- private static final Pattern DIGIT_PATTERN = Pattern.compile("\\d+");
-
- /**
- * 鐢熸垚宸ョ▼甯圛D
- * 鏍煎紡瑙勫垯锛歅 + 骞存湀鏃�(yyMMdd) + 涓や綅搴忓彿
- * 搴忓彿浼樺厛浠巊lassId涓彁鍙栨湯灏句袱浣嶆暟瀛楋紝鍚﹀垯浣跨敤浼犲叆鐨刬ndex琛ラ浂
- *
- * @param glassId 鐜荤拑ID锛堝彲涓簄ull锛岀敤浜庢彁鍙栨暟瀛楀簭鍙凤級
- * @param index 澶囩敤搴忓彿锛堝綋glassId鏃犳湁鏁堟暟瀛楁椂浣跨敤锛�
- * @return 鏍煎紡鍖栫殑宸ョ▼甯圛D锛堝锛歅25010801锛�
- */
- private String generateEngineerId(Object glassId, int index) {
- // 1. 鐢熸垚鏃ユ湡鍓嶇紑锛坹yMMdd锛�
- String base = LocalDate.now().format(DATE_FORMATTER);
-
- // 2. 鍒濆鍖栧簭鍙凤紙涓や綅琛ラ浂锛�
- String seq = String.format("%02d", index);
-
- // 3. 浠巊lassId涓彁鍙栨湯灏句袱浣嶆暟瀛楋紙瑕嗙洊榛樿搴忓彿锛�
- if (glassId != null) {
- String glassIdStr = glassId.toString();
- Matcher matcher = DIGIT_PATTERN.matcher(glassIdStr);
- String lastDigitStr = null;
-
- // 閬嶅巻鍖归厤鎵�鏈夋暟瀛楁锛屽彇鏈�鍚庝竴涓�
- while (matcher.find()) {
- lastDigitStr = matcher.group();
- }
-
- // 鑻ユ暟瀛楁闀垮害鈮�2锛屽彇鏈�鍚庝袱浣嶏紱鍚﹀垯淇濈暀鍘熷簭鍙�
- if (lastDigitStr != null && lastDigitStr.length() >= 2) {
- seq = lastDigitStr.substring(lastDigitStr.length() - 2);
- }
- }
-
- return "P" + base + seq;
- }
/**
* 鎻愬彇List涓涓�涓狹ap鐨勬寚瀹歬ey鍊硷紙榛樿绌哄瓧绗︿覆锛�
--
Gitblit v1.8.0