From cc6aa321c50a855a4eeed8f8e2f420709522b2f4 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期三, 17 九月 2025 10:26:58 +0800
Subject: [PATCH] 堆垛机输送线掉线重置设备表

---
 src/main/java/com/zy/service/impl/MainServiceImpl.java |  191 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 181 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index ddfcc62..560ca8d 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -39,10 +39,8 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
+import javax.annotation.Resource;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -88,6 +86,9 @@
     private WrkMastService wrkMastService;
     @Autowired
     private BasRgvMapService basRgvMapService;
+
+    @Resource
+    private BasDevpErrLogService basDevpErrLogService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -907,13 +908,14 @@
             if (crnProtocol == null) {
                 continue;
             }
+            if (crnProtocol.getModeType() != CrnModeType.STOP) {
                 // 鏈変换鍔�
                 if (crnProtocol.getTaskNo() != 0) {
 
                     BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue());
                     // 鏈夊紓甯�
                     if (latest == null) {
-                        News.warnNoLog(""+mark+" - 1"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
+                        News.warnNoLog("" + mark + " - 1" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
                         if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
                             WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
                             if (wrkMast == null) {
@@ -945,7 +947,7 @@
                                     "浠诲姟涓紓甯�"    // 澶囨敞
                             );
                             if (!basErrLogService.insert(basErrLog)) {
-                                News.error(""+mark+" - 2"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+                                News.error("" + mark + " - 2" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
                             }
                         }
                     } else {
@@ -955,7 +957,7 @@
                             latest.setUpdateTime(now);
                             latest.setStatus(2);
                             if (!basErrLogService.updateById(latest)) {
-                                News.error(""+mark+" - 3"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+                                News.error("" + mark + " - 3" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
                             }
                         }
                     }
@@ -964,7 +966,7 @@
                     BasErrLog latest = basErrLogService.findLatest(crn.getId());
                     // 鏈夊紓甯�
                     if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
-                        News.warnNoLog(""+mark+" - 4"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏃犱换鍔★紝鏈夊紓甯�");
+                        News.warnNoLog("" + mark + " - 4" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏃犱换鍔★紝鏈夊紓甯�");
                         // 璁板綍鏂板紓甯�
                         if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
                             BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
@@ -993,7 +995,7 @@
                                     "鏃犱换鍔″紓甯�"    // 澶囨敞
                             );
                             if (!basErrLogService.insert(basErrLog)) {
-                                News.error(""+mark+" - 5"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+                                News.error("" + mark + " - 5" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
                             }
                         }
                         // 鏃犲紓甯�
@@ -1004,11 +1006,12 @@
                             latest.setUpdateTime(now);
                             latest.setStatus(2);
                             if (!basErrLogService.updateById(latest)) {
-                                News.error(""+mark+" - 6"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+                                News.error("" + mark + " - 6" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
                             }
                         }
                     }
                 }
+            }
         }
     }
 
@@ -1123,6 +1126,174 @@
     }
 
     /**
+     * 杈撻�佺嚎寮傚父
+     */
+    public synchronized void recDevpErr() {
+        Date now = new Date();
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            Integer devpId = devp.getId();
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+            Map<Integer, StaProtocol> station = devpThread.getStation();
+            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
+                Integer siteNo = entry.getKey();
+                StaProtocol staProtocol = entry.getValue();
+                Integer workNo = staProtocol.getWorkNo();
+                // 杈撻�佺嚎鎶ヨ
+                String plcErr = staPlcErr(staProtocol);
+                if (staProtocol.isAutoing()) {
+                    // 鏈変换鍔�
+                    if (staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() <= 9000) {
+
+                        // 鑾峰彇杈撻�佺嚎鎶ヨ淇℃伅
+                        BasDevpErrLog latestByTaskNo = basDevpErrLogService.findLatestByTaskNo(siteNo, workNo);
+
+                        // 鏈夊紓甯�
+                        if (latestByTaskNo == null) {
+                            if (!plcErr.equals("")) {
+                                WrkMast wrkMast = wrkMastMapper.selectById(workNo);
+                                if (wrkMast == null) {
+                                    continue;
+                                }
+
+                                BasDevpErrLog basErrLog = new BasDevpErrLog(
+                                        null,    // 缂栧彿
+                                        wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
+                                        now,    // 鍙戠敓鏃堕棿
+                                        null,    // 缁撴潫鏃堕棿
+                                        wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
+                                        wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
+                                        wrkMast.getCrnNo(),    // 鍫嗗灈鏈�
+                                        devpId,    // plc
+                                        wrkMast.getLocNo(),    // 鐩爣搴撲綅
+                                        wrkMast.getStaNo(),    // 鐩爣绔�
+                                        siteNo,    // 婧愮珯
+                                        wrkMast.getSourceLocNo(),    // 婧愬簱浣�
+                                        wrkMast.getBarcode(),    // 鏉$爜
+                                        0,    // 寮傚父鐮�
+                                        plcErr,    // 寮傚父
+                                        1,    // 寮傚父鎯呭喌
+                                        now,    // 娣诲姞鏃堕棿
+                                        null,    // 娣诲姞浜哄憳
+                                        now,    // 淇敼鏃堕棿
+                                        null,    // 淇敼浜哄憳
+                                        "浠诲姟涓紓甯�"    // 澶囨敞
+                                );
+                                if (!basDevpErrLogService.insert(basErrLog)) {
+                                    log.error("杈撻�佺嚎寮傚父淇℃伅鎻掑叆琛╝sr_bas_devp_err_log寮傚父锛歿}", basErrLog);
+                                }
+                            }
+                        } else {
+                            // 寮傚父淇
+                            if (plcErr.equals("")) {
+                                latestByTaskNo.setEndTime(now);
+                                latestByTaskNo.setUpdateTime(now);
+                                latestByTaskNo.setStatus(2);
+                                if (!basDevpErrLogService.updateById(latestByTaskNo)) {
+                                    log.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latestByTaskNo);
+                                }
+                            }
+                        }
+                        // 鏃犱换鍔�
+                    } else {
+                        BasDevpErrLog latest = basDevpErrLogService.findLatest(siteNo);
+                        // 鏈夊紓甯�
+                        if (!plcErr.equals("")) {
+                            // 璁板綍鏂板紓甯�
+                            if (latest == null || !latest.getError().equals(plcErr) || latest.getStatus() == 2 ) {
+                                BasDevpErrLog basErrLog = new BasDevpErrLog(
+                                        null,    // 缂栧彿
+                                        null,    // 宸ヤ綔鍙�
+                                        now,    // 鍙戠敓鏃堕棿
+                                        null,    // 缁撴潫鏃堕棿
+                                        null,    // 宸ヤ綔鐘舵��
+                                        null,    // 鍏ュ嚭搴撶被鍨�
+                                        0,    // 鍫嗗灈鏈�
+                                        devpId,    // plc
+                                        null,    // 鐩爣搴撲綅
+                                        null,    // 鐩爣绔�
+                                        siteNo,    // 婧愮珯
+                                        null,    // 婧愬簱浣�
+                                        null,    // 鏉$爜
+                                        0,    // 寮傚父鐮�
+                                        plcErr,    // 寮傚父
+                                        1,    // 寮傚父鎯呭喌
+                                        now,    // 娣诲姞鏃堕棿
+                                        null,    // 娣诲姞浜哄憳
+                                        now,    // 淇敼鏃堕棿
+                                        null,    // 淇敼浜哄憳
+                                        "鏃犱换鍔″紓甯�"    // 澶囨敞
+                                );
+                                if (!basDevpErrLogService.insert(basErrLog)) {
+                                    log.error("杈撻�佺嚎寮傚父璁板綍asr_bas_devp_err_log寮傚父锛歿}", basErrLog);
+                                }
+                            }
+                            // 鏃犲紓甯�
+                        } else {
+                            // 寮傚父淇
+                            if (latest != null && latest.getStatus() == 1) {
+                                latest.setEndTime(now);
+                                latest.setUpdateTime(now);
+                                latest.setStatus(2);
+                                if (!basDevpErrLogService.updateById(latest)) {
+                                    log.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latest);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    // 鑾峰彇杈撻�佺嚎鎶ヨ
+    public String staPlcErr(StaProtocol staProtocol){
+        Integer siteId = staProtocol.getSiteId();
+        if (staProtocol.getBreakerErr()){
+            return "鏂矾鍣ㄦ晠闅�";
+        }
+        if (staProtocol.getInfraredErr()){
+            return "鍏夌數寮傚父";
+        }
+        if (staProtocol.getOutTimeErr()){
+            return "杩愯瓒呮椂";
+        }
+        if (staProtocol.getSeizeSeatErr()){
+            return "鍗犱綅瓒呮椂";
+        }
+        if (staProtocol.getWrkYgoodsN()){
+            return "鏈変换鍔℃棤璐ф晠闅�";
+        }
+        if (staProtocol.getInverterErr()){
+            return "鍙橀鍣ㄦ晠闅�";
+        }
+        if (staProtocol.getContactErr()){
+            return "鐢垫満鎺ヨЕ鍣ㄦ晠闅�";
+        }
+        if (staProtocol.getUpcontactErr()){
+            return "椤跺崌鐢垫満鎺ヨЕ鍣ㄦ晠闅�";
+        }
+        if (staProtocol.isFrontErr()){
+            return "鍓嶈秴闄�";
+        }
+        if (staProtocol.isBackErr()){
+            return "鍚庤秴闄�";
+        }
+        if (staProtocol.isHighErr()){
+            return "楂樿秴闄�";
+        }
+        if (staProtocol.isLeftErr()){
+            return "宸﹁秴闄�";
+        }
+        if (staProtocol.isRightErr()){
+            return "鍙宠秴闄�";
+        }
+        if (staProtocol.isBarcodeErr() && siteId != 1083 && siteId != 1086 && siteId != 1089 ){
+            return "鎵爜澶辫触";
+        }
+        return "";
+    }
+
+    /**
      * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
      */
     public synchronized void ledExecute(Integer mark) {

--
Gitblit v1.9.1