From 8ec0064cd95292f14027006a8be47c1a71f69af9 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 31 十二月 2025 17:02:57 +0800
Subject: [PATCH] 添加查询所有玻璃数据

---
 mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java |    1 
 mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGlassInfoMapper.java                 |   47 +++++++++++++++
 mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/GlassInfoServiceImpl.java            |   66 ++++++++++++++++++----
 mes-processes/mes-plcSend/src/main/java/com/mes/device/service/impl/EngineeringSequenceServiceImpl.java  |   45 ++++++++++----
 4 files changed, 132 insertions(+), 27 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGlassInfoMapper.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGlassInfoMapper.java
index f0d531d..9399ef2 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGlassInfoMapper.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGlassInfoMapper.java
@@ -51,5 +51,52 @@
      */
     @Select("SELECT * FROM glass_info WHERE engineering_id = #{engineeringId} AND is_deleted = 0")
     List<GlassInfo> selectByEngineeringId(@Param("engineeringId") String engineeringId);
+
+    /**
+     * 鏍规嵁鐜荤拑ID鏌ヨ鐜荤拑淇℃伅锛堝寘鎷�昏緫鍒犻櫎鐨勮褰曪級
+     * 
+     * @param glassId 鐜荤拑ID
+     * @return 鐜荤拑淇℃伅
+     */
+    @Select("SELECT * FROM glass_info WHERE glass_id = #{glassId} LIMIT 1")
+    GlassInfo selectByGlassIdIncludingDeleted(@Param("glassId") String glassId);
+
+    /**
+     * 鎭㈠閫昏緫鍒犻櫎鐨勮褰曞苟鏇存柊瀛楁锛堢粫杩囬�昏緫鍒犻櫎鎷︽埅鍣級
+     * 
+     * @param id 璁板綍ID
+     * @param glassId 鐜荤拑ID
+     * @param glassLength 鐜荤拑闀垮害
+     * @param glassWidth 鐜荤拑瀹藉害
+     * @param glassThickness 鐜荤拑鍘氬害
+     * @param status 鐘舵��
+     * @param state 鐘舵�佸��
+     * @param engineeringId 宸ョ▼鍙�
+     * @param updatedTime 鏇存柊鏃堕棿
+     * @param updatedBy 鏇存柊浜�
+     * @return 鏇存柊琛屾暟
+     */
+    @org.apache.ibatis.annotations.Update("UPDATE glass_info SET " +
+            "is_deleted = 0, " +
+            "glass_id = #{glassId}, " +
+            "glass_length = #{glassLength}, " +
+            "glass_width = #{glassWidth}, " +
+            "glass_thickness = #{glassThickness}, " +
+            "status = #{status}, " +
+            "state = #{state}, " +
+            "engineering_id = #{engineeringId}, " +
+            "updated_time = #{updatedTime}, " +
+            "updated_by = #{updatedBy} " +
+            "WHERE id = #{id}")
+    int restoreAndUpdateById(@Param("id") Long id,
+                             @Param("glassId") String glassId,
+                             @Param("glassLength") Integer glassLength,
+                             @Param("glassWidth") Integer glassWidth,
+                             @Param("glassThickness") java.math.BigDecimal glassThickness,
+                             @Param("status") String status,
+                             @Param("state") Integer state,
+                             @Param("engineeringId") String engineeringId,
+                             @Param("updatedTime") java.util.Date updatedTime,
+                             @Param("updatedBy") String updatedBy);
 }
 
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 f5eaab5..397cbf3 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
@@ -5,7 +5,6 @@
 import com.mes.device.mapper.EngineeringSequenceMapper;
 import com.mes.device.service.EngineeringSequenceService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -57,27 +56,45 @@
             String sequenceStr = engineeringId.substring(engineeringId.length() - 2);
             int sequence = Integer.parseInt(sequenceStr);
 
+            // 妫�鏌ユ槸鍚﹀凡瀛樺湪
+            EngineeringSequence existing = baseMapper.selectByEngineeringId(engineeringId);
+            
             EngineeringSequence engineeringSequence = new EngineeringSequence();
             engineeringSequence.setEngineeringId(engineeringId);
             engineeringSequence.setDate(date);
             engineeringSequence.setSequence(sequence);
-            engineeringSequence.setCreatedTime(new Date());
-            engineeringSequence.setUpdatedTime(new Date());
-            engineeringSequence.setCreatedBy("system");
-            engineeringSequence.setUpdatedBy("system");
-
-            boolean result = save(engineeringSequence);
-
-            if (result) {
-                log.info("淇濆瓨宸ョ▼鍙锋垚鍔�: engineeringId={}, date={}, sequence={}", engineeringId, date, sequence);
+            
+            boolean result;
+            if (existing != null) {
+                // 濡傛灉宸插瓨鍦紝鍒欐洿鏂�
+                engineeringSequence.setId(existing.getId());
+                // 淇濈暀鍘熷鍒涘缓淇℃伅
+                engineeringSequence.setCreatedTime(existing.getCreatedTime());
+                engineeringSequence.setCreatedBy(existing.getCreatedBy());
+                // 鏇存柊涓哄綋鍓嶆椂闂�
+                engineeringSequence.setUpdatedTime(new Date());
+                engineeringSequence.setUpdatedBy("system");
+                result = updateById(engineeringSequence);
+                if (result) {
+                    log.info("鏇存柊宸ョ▼鍙锋垚鍔�: engineeringId={}, date={}, sequence={}", engineeringId, date, sequence);
+                } else {
+                    log.error("鏇存柊宸ョ▼鍙峰け璐�: engineeringId={}, date={}, sequence={}", engineeringId, date, sequence);
+                }
             } else {
-                log.error("淇濆瓨宸ョ▼鍙峰け璐�: engineeringId={}, date={}, sequence={}", engineeringId, date, sequence);
+                // 濡傛灉涓嶅瓨鍦紝鍒欐彃鍏�
+                engineeringSequence.setCreatedTime(new Date());
+                engineeringSequence.setUpdatedTime(new Date());
+                engineeringSequence.setCreatedBy("system");
+                engineeringSequence.setUpdatedBy("system");
+                result = save(engineeringSequence);
+                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={}, engineeringId={}", date, engineeringId, dup);
-            throw new RuntimeException("淇濆瓨宸ョ▼鍙峰け璐�", dup);
         } catch (Exception e) {
             log.error("淇濆瓨宸ョ▼鍙峰け璐�, date={}, engineeringId={}", date, engineeringId, e);
             throw new RuntimeException("淇濆瓨宸ョ▼鍙峰け璐�", e);
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 3e04c93..0de3ef9 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
@@ -107,9 +107,10 @@
             return false;
         }
         try {
-            // 妫�鏌ユ槸鍚﹀凡瀛樺湪
-            GlassInfo existing = baseMapper.selectByGlassId(glassInfo.getGlassId());
+            // 鏌ヨ鍖呮嫭閫昏緫鍒犻櫎鐨勮褰�
+            GlassInfo existing = baseMapper.selectByGlassIdIncludingDeleted(glassInfo.getGlassId());
             if (existing != null) {
+                // 瀛樺湪鍒欐洿鏂�
                 glassInfo.setId(existing.getId());
                 // 淇濈暀鍘熷鍒涘缓淇℃伅
                 if (glassInfo.getCreatedTime() == null) {
@@ -118,15 +119,42 @@
                 if (glassInfo.getCreatedBy() == null) {
                     glassInfo.setCreatedBy(existing.getCreatedBy());
                 }
-                // 鏇存柊涓哄綋鍓嶆椂闂�
+                // 璁剧疆鏇存柊鏃堕棿
                 if (glassInfo.getUpdatedTime() == null) {
                     glassInfo.setUpdatedTime(new Date());
                 }
                 if (glassInfo.getUpdatedBy() == null) {
                     glassInfo.setUpdatedBy("system");
                 }
-                return updateById(glassInfo);
+
+                if (existing.getIsDeleted() != null && existing.getIsDeleted() != 0) {
+                    log.info("鎭㈠閫昏緫鍒犻櫎鐨勭幓鐠冧俊鎭�: glassId={}, id={}", glassInfo.getGlassId(), existing.getId());
+                    int updatedRows = baseMapper.restoreAndUpdateById(
+                            existing.getId(),
+                            glassInfo.getGlassId(),
+                            glassInfo.getGlassLength(),
+                            glassInfo.getGlassWidth(),
+                            glassInfo.getGlassThickness(),
+                            glassInfo.getStatus(),
+                            glassInfo.getState(),
+                            glassInfo.getEngineeringId(),
+                            glassInfo.getUpdatedTime() != null ? glassInfo.getUpdatedTime() : new Date(),
+                            glassInfo.getUpdatedBy() != null ? glassInfo.getUpdatedBy() : "system"
+                    );
+                    boolean updated = updatedRows > 0;
+                    log.info("鎭㈠閫昏緫鍒犻櫎璁板綍缁撴灉: glassId={}, updatedRows={}, updated={}", 
+                            glassInfo.getGlassId(), updatedRows, updated);
+                    if (!updated) {
+                        log.error("鎭㈠閫昏緫鍒犻櫎璁板綍澶辫触锛屽彲鑳藉師鍥狅細鏇存柊鏉′欢涓嶅尮閰嶆垨鏁版嵁寮傚父, glassId={}, id={}", 
+                                glassInfo.getGlassId(), existing.getId());
+                    }
+                    return updated;
+                } else {
+                    // 姝e父鏇存柊
+                    return updateById(glassInfo);
+                }
             } else {
+                // 涓嶅瓨鍦ㄥ垯鏂板
                 Date now = new Date();
                 if (glassInfo.getCreatedTime() == null) {
                     glassInfo.setCreatedTime(now);
@@ -139,6 +167,9 @@
                 }
                 if (glassInfo.getUpdatedBy() == null) {
                     glassInfo.setUpdatedBy("system");
+                }
+                if (glassInfo.getIsDeleted() == null) {
+                    glassInfo.setIsDeleted(0);
                 }
                 return save(glassInfo);
             }
@@ -154,10 +185,19 @@
             return true;
         }
         try {
+            int successCount = 0;
+            int failCount = 0;
             for (GlassInfo glassInfo : glassInfos) {
-                saveOrUpdateGlassInfo(glassInfo);
+                boolean result = saveOrUpdateGlassInfo(glassInfo);
+                if (result) {
+                    successCount++;
+                } else {
+                    failCount++;
+                    log.warn("淇濆瓨鎴栨洿鏂扮幓鐠冧俊鎭け璐�: glassId={}", glassInfo != null ? glassInfo.getGlassId() : "null");
+                }
             }
-            return true;
+            log.info("鎵归噺淇濆瓨鎴栨洿鏂扮幓鐠冧俊鎭畬鎴�: 鎬绘暟={}, 鎴愬姛={}, 澶辫触={}", glassInfos.size(), successCount, failCount);
+            return failCount == 0;
         } catch (Exception e) {
             log.error("鎵归噺淇濆瓨鎴栨洿鏂扮幓鐠冧俊鎭け璐�", e);
             return false;
@@ -703,8 +743,12 @@
         }
 
         if (!glassInfos.isEmpty()) {
-            batchSaveOrUpdateGlassInfo(glassInfos);
-            log.info("宸蹭繚瀛� {} 鏉$幓鐠冧俊鎭埌鏈湴鏁版嵁搴擄紝宸ョ▼鍙�: {}", glassInfos.size(), engineeringId);
+            boolean success = batchSaveOrUpdateGlassInfo(glassInfos);
+            if (success) {
+                log.info("宸蹭繚瀛� {} 鏉$幓鐠冧俊鎭埌鏈湴鏁版嵁搴擄紝宸ョ▼鍙�: {}", glassInfos.size(), engineeringId);
+            } else {
+                log.error("淇濆瓨鐜荤拑淇℃伅鍒版湰鍦版暟鎹簱澶辫触锛屽伐绋嬪彿: {}, 鎬绘暟: {}", engineeringId, glassInfos.size());
+            }
         }
     }
 
@@ -761,14 +805,12 @@
         try {
             // 鍏堟煡璇㈣鍒犻櫎鐨勬暟閲忥紙鍒犻櫎鍓嶏級
             LambdaQueryWrapper<GlassInfo> countWrapper = new LambdaQueryWrapper<>();
-            countWrapper.eq(GlassInfo::getEngineeringId, engineeringId.trim())
-                       .eq(GlassInfo::getIsDeleted, 0); // 鏌ヨ鏈垹闄ょ殑璁板綍
+            countWrapper.eq(GlassInfo::getEngineeringId, engineeringId.trim());
             long count = this.count(countWrapper);
             
             // 浣跨敤MyBatis-Plus鐨剅emove鏂规硶锛屼細鏍规嵁@TableLogic鑷姩杩涜閫昏緫鍒犻櫎
             LambdaQueryWrapper<GlassInfo> removeWrapper = new LambdaQueryWrapper<>();
-            removeWrapper.eq(GlassInfo::getEngineeringId, engineeringId.trim())
-                        .eq(GlassInfo::getIsDeleted, 0); // 鍙垹闄ゆ湭鍒犻櫎鐨勮褰�
+            removeWrapper.eq(GlassInfo::getEngineeringId, engineeringId.trim());
             
             boolean result = this.remove(removeWrapper);
             if (result) {
diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java b/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
index fcc73ee..2a298e2 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/interaction/vehicle/handler/LoadVehicleLogicHandler.java
@@ -147,7 +147,6 @@
             VehicleStatus status = statusManager.getVehicleStatus(deviceId);
             if (status != null && !status.isAvailable()) {
                 // 瀵逛簬 feedGlass 鎿嶄綔锛屽鏋滅姸鎬佹槸 EXECUTING锛屽厑璁哥户缁墽琛�
-                // 鍥犱负瀹氭椂鍣ㄥ彲鑳戒細閲嶅璋冪敤锛屾垨鑰呴渶瑕佺瓑寰呬换鍔″畬鎴�
                 if ("feedGlass".equals(operation) && status.isExecuting()) {
                     log.debug("杞﹁締 {} 褰撳墠鐘舵�佷负 EXECUTING锛屼絾鍏佽缁х画鎵ц feedGlass锛堝畾鏃跺櫒閲嶅璋冪敤锛�", deviceId);
                     // 鍏佽缁х画鎵ц锛屼笉杩斿洖閿欒

--
Gitblit v1.8.0