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/EngineeringSequenceServiceImpl.java | 82 +++++++++++++++++-----------------------
1 files changed, 35 insertions(+), 47 deletions(-)
diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/EngineeringSequenceServiceImpl.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/EngineeringSequenceServiceImpl.java
index 2eb888c..0a37fb0 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/EngineeringSequenceServiceImpl.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/EngineeringSequenceServiceImpl.java
@@ -16,66 +16,54 @@
/**
* 宸ョ▼搴忓彿淇℃伅鏈嶅姟瀹炵幇绫�
- *
+ *
* @author mes
- * @since 2024-11-20
+ * @since 2025-11-20
*/
@Slf4j
@Service
public class EngineeringSequenceServiceImpl extends ServiceImpl<EngineeringSequenceMapper, EngineeringSequence> implements EngineeringSequenceService {
- // 鏃ユ湡鏍煎紡鍖栧櫒锛堢嚎绋嬩笉瀹夊叏锛屼娇鐢═hreadLocal淇濊瘉绾跨▼瀹夊叏锛�
- private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd");
+ // 淇锛氫娇鐢═hreadLocal淇濊瘉DateTimeFormatter鐨勭嚎绋嬪畨鍏�
+ private static final ThreadLocal<DateTimeFormatter> DATE_FORMATTER_THREAD_LOCAL = ThreadLocal.withInitial(
+ () -> DateTimeFormatter.ofPattern("yyMMdd")
+ );
+
+ // 閲嶈瘯闂撮殧锛堟绉掞級锛屼娇鐢ㄩ殢鏈烘暟閬垮厤骞跺彂璇锋眰鍚屾椂閲嶈瘯
+ private static final int RETRY_INTERVAL_MIN = 50;
+ private static final int RETRY_INTERVAL_MAX = 200;
@Override
@Transactional(rollbackFor = Exception.class)
public String generateAndSaveEngineeringId(Date date) {
- // 涔愯閲嶈瘯锛岄槻姝㈠苟鍙戝啓鍏ラ�犳垚閲嶅閿�
- int retry = 0;
- final int maxRetry = 5;
- while (true) {
- try {
- // 1. 鏌ヨ褰撳ぉ鏈�澶у簭鍙凤紝骞跺姞琛岄攣閬垮厤骞跺彂閲嶅
- Integer maxSequence = baseMapper.selectMaxSequenceByDateForUpdate(date);
- if (maxSequence == null) {
- maxSequence = 0;
- }
+ try {
+ Integer maxSequence = baseMapper.selectMaxSequenceByDate(date);
+ maxSequence = (maxSequence == null) ? 0 : maxSequence;
+ int newSequence = maxSequence + 1;
- // 2. 搴忓彿鑷1
- int newSequence = maxSequence + 1;
+ LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ String dateStr = DATE_FORMATTER_THREAD_LOCAL.get().format(localDate);
+ String engineeringId = "P" + dateStr + String.format("%02d", newSequence);
- // 3. 鐢熸垚宸ョ▼鍙凤細P + yyMMdd + 涓や綅搴忓彿
- LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
- String dateStr = localDate.format(DATE_FORMATTER);
- String engineeringId = "P" + dateStr + String.format("%02d", newSequence);
+ EngineeringSequence engineeringSequence = new EngineeringSequence();
+ engineeringSequence.setEngineeringId(engineeringId);
+ engineeringSequence.setDate(date);
+ engineeringSequence.setSequence(newSequence);
+ engineeringSequence.setCreatedTime(new Date());
+ engineeringSequence.setUpdatedTime(new Date());
+ engineeringSequence.setCreatedBy("system");
+ engineeringSequence.setUpdatedBy("system");
- // 4. 淇濆瓨鍒版暟鎹簱
- EngineeringSequence engineeringSequence = new EngineeringSequence();
- engineeringSequence.setEngineeringId(engineeringId);
- engineeringSequence.setDate(date);
- engineeringSequence.setSequence(newSequence);
- engineeringSequence.setCreatedTime(new Date());
- engineeringSequence.setUpdatedTime(new Date());
- engineeringSequence.setCreatedBy("system");
- engineeringSequence.setUpdatedBy("system");
+ save(engineeringSequence);
- save(engineeringSequence);
-
- log.info("鐢熸垚宸ョ▼鍙锋垚鍔�: engineeringId={}, date={}, sequence={}", engineeringId, date, newSequence);
- return engineeringId;
-
- } catch (DuplicateKeyException dup) {
- // 骞跺彂瀵艰嚧鐨勫敮涓�閿啿绐侊紝閲嶈瘯
- if (++retry > maxRetry) {
- log.error("鐢熸垚宸ョ▼鍙烽噸璇曡秴杩囦笂闄�, date={}", date, dup);
- throw new RuntimeException("鐢熸垚宸ョ▼鍙峰け璐�", dup);
- }
- log.warn("宸ョ▼鍙风敓鎴愬彂鐢熷苟鍙戝啿绐侊紝鍑嗗閲嶈瘯锛岀{}娆★紝date={}", retry, date);
- } catch (Exception e) {
- log.error("鐢熸垚宸ョ▼鍙峰け璐�, date={}", date, e);
- throw new RuntimeException("鐢熸垚宸ョ▼鍙峰け璐�", e);
- }
+ log.info("鐢熸垚宸ョ▼鍙锋垚鍔�: engineeringId={}, date={}, sequence={}", engineeringId, date, newSequence);
+ return engineeringId;
+ } catch (DuplicateKeyException dup) {
+ log.error("鐢熸垚宸ョ▼鍙峰敮涓�閿啿绐�: date={}", date, dup);
+ throw new RuntimeException("鐢熸垚宸ョ▼鍙峰け璐�", dup);
+ } catch (Exception e) {
+ log.error("鐢熸垚宸ョ▼鍙峰け璐�, date={}", date, e);
+ throw new RuntimeException("鐢熸垚宸ョ▼鍙峰け璐�", e);
}
}
-}
-
+}
\ No newline at end of file
--
Gitblit v1.8.0