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/service/impl/EngineeringSequenceServiceImpl.java |   55 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 40 insertions(+), 15 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 0a37fb0..f5eaab5 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
@@ -34,36 +34,61 @@
     private static final int RETRY_INTERVAL_MAX = 200;
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public String generateAndSaveEngineeringId(Date date) {
-        try {
-            Integer maxSequence = baseMapper.selectMaxSequenceByDate(date);
-            maxSequence = (maxSequence == null) ? 0 : maxSequence;
-            int newSequence = maxSequence + 1;
+    public String generateEngineeringId(Date date) {
+        Integer maxSequence = baseMapper.selectMaxSequenceByDate(date);
+        maxSequence = (maxSequence == null) ? 0 : maxSequence;
+        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);
+
+        log.info("鐢熸垚宸ョ▼鍙凤紙鏈繚瀛橈級: engineeringId={}, date={}, sequence={}", engineeringId, date, newSequence);
+        return engineeringId;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean saveEngineeringId(Date date, String engineeringId) {
+        try {
+            // 瑙f瀽宸ョ▼鍙疯幏鍙栧簭鍙�
             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);
+            String sequenceStr = engineeringId.substring(engineeringId.length() - 2);
+            int sequence = Integer.parseInt(sequenceStr);
 
             EngineeringSequence engineeringSequence = new EngineeringSequence();
             engineeringSequence.setEngineeringId(engineeringId);
             engineeringSequence.setDate(date);
-            engineeringSequence.setSequence(newSequence);
+            engineeringSequence.setSequence(sequence);
             engineeringSequence.setCreatedTime(new Date());
             engineeringSequence.setUpdatedTime(new Date());
             engineeringSequence.setCreatedBy("system");
             engineeringSequence.setUpdatedBy("system");
 
-            save(engineeringSequence);
+            boolean result = save(engineeringSequence);
 
-            log.info("鐢熸垚宸ョ▼鍙锋垚鍔�: engineeringId={}, date={}, sequence={}", engineeringId, date, newSequence);
-            return engineeringId;
+            if (result) {
+                log.info("淇濆瓨宸ョ▼鍙锋垚鍔�: engineeringId={}, date={}, sequence={}", engineeringId, date, sequence);
+            } else {
+                log.error("淇濆瓨宸ョ▼鍙峰け璐�: engineeringId={}, date={}, sequence={}", engineeringId, date, sequence);
+            }
+
+            return result;
         } catch (DuplicateKeyException dup) {
-            log.error("鐢熸垚宸ョ▼鍙峰敮涓�閿啿绐�: date={}", date, dup);
-            throw new RuntimeException("鐢熸垚宸ョ▼鍙峰け璐�", dup);
+            log.error("淇濆瓨宸ョ▼鍙峰敮涓�閿啿绐�: date={}, engineeringId={}", date, engineeringId, dup);
+            throw new RuntimeException("淇濆瓨宸ョ▼鍙峰け璐�", dup);
         } catch (Exception e) {
-            log.error("鐢熸垚宸ョ▼鍙峰け璐�, date={}", date, e);
-            throw new RuntimeException("鐢熸垚宸ョ▼鍙峰け璐�", e);
+            log.error("淇濆瓨宸ョ▼鍙峰け璐�, date={}, engineeringId={}", date, engineeringId, e);
+            throw new RuntimeException("淇濆瓨宸ョ▼鍙峰け璐�", e);
         }
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String generateAndSaveEngineeringId(Date date) {
+        String engineeringId = generateEngineeringId(date);
+        saveEngineeringId(date, engineeringId);
+        return engineeringId;
+    }
 }
\ No newline at end of file

--
Gitblit v1.8.0