From 7068307fa5a395b2027e9dd9ce8b2a4819d8ee9d Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期六, 16 八月 2025 15:33:14 +0800
Subject: [PATCH] 修复4号堆垛机不出一个入一个情况

---
 src/main/java/com/zy/service/impl/MainServiceImpl.java |  356 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 314 insertions(+), 42 deletions(-)

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index 86c7f4d..4b06fd2 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -41,6 +41,7 @@
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -77,6 +78,7 @@
 
     // 鎴愬搧搴撳爢鍨涙満鍑哄簱绔欑偣鍒皉gv鎺ラ┏鐐�
     public static final Map<Integer,Short>  crnOutSiteToRgvSite = new HashMap<>();
+    public static final Map<Integer,Short>  crnOutSiteToRgvSite2 = new HashMap<>();
 
     static {
         emptyPalletSiteMap.put(1001,"M"); // emptyPalletSiteMap.put(1002,"M");
@@ -104,6 +106,9 @@
         outGzxSiteList.add(1081);outGzxSiteList.add(1084);outGzxSiteList.add(1087);
 
         crnOutSiteToRgvSite.put(1093, (short) 1091);crnOutSiteToRgvSite.put(1099, (short) 1097);crnOutSiteToRgvSite.put(1107, (short) 1105);
+
+        crnOutSiteToRgvSite2.put(1087, (short) 1089);crnOutSiteToRgvSite2.put(1084, (short) 1086);crnOutSiteToRgvSite2.put(1081, (short) 1083);
+        crnOutSiteToRgvSite2.put(1043, (short) 1041);crnOutSiteToRgvSite2.put(1016, (short) 1018);
     }
 
     @Autowired
@@ -146,6 +151,9 @@
 
     @Resource
     private ConfigService configService;
+
+    @Resource
+    private BasDevpErrLogService basDevpErrLogService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -613,15 +621,23 @@
                         crnProtocol.setLastIo("O");
                     } else if (basCrnp.getOutEnable().equals("Y")) {
                         //mark - 2 - ....
-                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
+                        AtomicInteger atomicInteger = new AtomicInteger(mark);
+                        this.locToCrnStn(crn, crnProtocol,atomicInteger); //  鍑哄簱
                         crnProtocol.setLastIo("I");
+                        if(atomicInteger.get() == 99) { // 涓嬩竴娆¤繕鏄嚭搴�
+                            crnProtocol.setLastIo("O");
+                        }
                     }
                 }
                 // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
                 else if (crnProtocol.getLastIo().equals("O")) {
                     if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
+                        AtomicInteger atomicInteger = new AtomicInteger(mark);
+                        this.locToCrnStn(crn, crnProtocol,atomicInteger); //  鍑哄簱
                         crnProtocol.setLastIo("I");
+                        if(atomicInteger.get() == 99) { // 涓嬩竴娆¤繕鏄嚭搴�
+                            crnProtocol.setLastIo("O");
+                        }
                     } else if (basCrnp.getInEnable().equals("Y")) {
                         this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
                         crnProtocol.setLastIo("O");
@@ -742,7 +758,7 @@
                         wrkMast.setIoPri(14D);
                         wrkMastMapper.updateById(wrkMast);
                         // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                        moveLocForDeepLoc(slave, shallowLoc,mark);
+                        moveLocForDeepLoc(slave, shallowLoc,new AtomicInteger(mark));
                         // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
 //                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
                     }
@@ -820,12 +836,19 @@
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
+    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,AtomicInteger mark) {
         News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
         boolean crnAvailableOut = false;
         Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","removeCrnAvailableOut"));
-        if (config != null && config.getStatus() == 1) {
-            crnAvailableOut = true;
+        if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) {
+            // 闇�瑕佽嚜鍔ㄨˉ绌烘《鐨勭珯鐐�
+            String[] split = config.getValue().split("=");
+            for (String item : split) {
+                if (slave.getId() == Integer.parseInt(item)) {
+                    crnAvailableOut = true;
+                    break;
+                }
+            }
         }
         // 闄愬埗鍘绘崋缁戞満鍣ㄤ换鍔℃暟
         int kbWrks = wrkMastMapper.selectCountByKb();
@@ -836,8 +859,16 @@
                 if (wrkMast == null) {
                     continue;
                 }
-                if (wrkMast.getStaNo() == 1031 && kbWrks > 1) {
-                    continue;
+                if (wrkMast.getStaNo() == 1031) {
+                    // 鑾峰彇1033鏃犵姸鎬佹椂浠诲姟鏁�+1
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                    StaProtocol staProtocol = devpThread.getStation().get(1033);
+                    if (staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
+                        kbWrks ++;
+                    }
+                    if (kbWrks > 2) {
+                        continue;
+                    }
                 }
                 // 宸ヤ綔妗g姸鎬佸垽鏂�
                 if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
@@ -977,6 +1008,7 @@
                                 wrkMast1.setSourceStaNo(1056);
                                 wrkMastService.updateById(wrkMast1);
                             }
+                            mark.set(99);
                             break;
                         }
                     }
@@ -1268,15 +1300,15 @@
             if (crnProtocol == null) {
                 continue;
             }
-            if (true) {
-//            if (crnProtocol.getModeType() != CrnModeType.STOP) {
+//            if (true) {
+            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) {
@@ -1379,6 +1411,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) {
@@ -1431,6 +1631,9 @@
                     case 110:
                         ledCommand.setTitle("绌烘澘鍑哄簱");
                         ledCommand.setEmptyMk(true);
+                        break;
+                    case 120:
+                        ledCommand.setTitle("鎵嬪姩杞Щ");
                         break;
                     default:
                         News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
@@ -1534,7 +1737,7 @@
      * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
      * tip锛氬悓姝�
      */
-    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) {
+    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,AtomicInteger mark) {
 
         // 鍙湁208L鑳芥斁11灞�
         String model = null;
@@ -1758,7 +1961,7 @@
             } else {
                 staProtocol = staProtocol.clone();
             }
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.isInEnable() || staProtocol.isOutEnable() && site == 1090) && staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() < 9000) {
+            if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.isInEnable() || staProtocol.isOutEnable() && site == 1090) && staProtocol.getWorkNo() != 0 && (staProtocol.getWorkNo() <= 9000 || staProtocol.getWorkNo()>=30000)) {
                 if (staProtocol.getSiteId() == 1034 && !staProtocol.isHigh()) { // 1034绌烘瘝鎷栧洖娴佷换鍔¢渶瑕侀珮淇″彿
                     continue;
                 }
@@ -1769,38 +1972,38 @@
                     continue;
                 }
                 // 1083,1086,1089 澶栧舰妫�娴嬪け璐ワ紝涓嶆槸鍘诲紓甯稿彛鐨� 鍋滃湪鍘熷
-//                if (staProtocol.getSiteId() == 1083 || staProtocol.getSiteId() == 1086 || staProtocol.getSiteId() == 1089 && wrkMast.getStaNo() != 1090) {
-//                    boolean back = false;
-//                    String errMsg = "";
-//                    if (staProtocol.isFrontErr()) {
-//                        errMsg = "鍓嶈秴闄�";
-//                        back = true;
-//                    }
-//                    if (!back && staProtocol.isBackErr()) {
-//                        errMsg = "鍚庤秴闄�";
-//                        back = true;
-//                    }
-//                    if (!back && staProtocol.isHighErr()) {
-//                        errMsg = "楂樿秴闄�";
-//                        back = true;
-//                    }
-//                    if (!back && staProtocol.isLeftErr()) {
-//                        errMsg = "宸﹁秴闄�";
-//                        back = true;
-//                    }
-//                    if (!back && staProtocol.isRightErr()) {
-//                        errMsg = "鍙宠秴闄�";
-//                        back = true;
-//                    }
-//                    if (back) {
-//                        log.error("{}绔欑偣锛屽褰㈡娴嬪け璐ワ細{}",site,errMsg);
-//                        continue;
-//                    }
-//                }
+                if (staProtocol.getSiteId() == 1083 || staProtocol.getSiteId() == 1086 || staProtocol.getSiteId() == 1089 && wrkMast.getStaNo() != 1090) {
+                    boolean back = false;
+                    String errMsg = "";
+                    if (staProtocol.isFrontErr()) {
+                        errMsg = "鍓嶈秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isBackErr()) {
+                        errMsg = "鍚庤秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isHighErr()) {
+                        errMsg = "楂樿秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isLeftErr()) {
+                        errMsg = "宸﹁秴闄�";
+                        back = true;
+                    }
+                    if (!back && staProtocol.isRightErr()) {
+                        errMsg = "鍙宠秴闄�";
+                        back = true;
+                    }
+                    if (back) {
+                        log.error("{}绔欑偣锛屽褰㈡娴嬪け璐ワ細{}",site,errMsg);
+                        continue;
+                    }
+                }
                 if (staProtocol.getSiteId() == 1090 && wrkMast.getStaNo() == 1090) {
                     continue;
                 }
-                if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) {
+                if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15 || (wrkMast.getIoType() == 120 && wrkMast.getWrkSts() == 52)) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) {
                     // 鏈�1090鐨勪换鍔¤烦杩噐gv鍒嗛厤
                     if(wrkMast.getStaNo() == 1090) {
                         DevpThread devpThread2 = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
@@ -1874,6 +2077,14 @@
                         continue;
                     }
                     wrkMast.setWrkSts(15L);
+                    wrkMast.setModiTime(new Date());
+                    wrkMastService.updateById(wrkMast);
+                } else if(wrkMast.getIoType() == 120) {
+                    if(wrkMast.getWrkSts() != 53 ){
+                        log.warn("rgv鏀捐揣瀹屾垚120锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
+                        continue;
+                    }
+                    wrkMast.setWrkSts(54L);
                     wrkMast.setModiTime(new Date());
                     wrkMastService.updateById(wrkMast);
                 }
@@ -2150,6 +2361,11 @@
 
                     }
                 } else if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) { // 鍙互鍑轰袱涓�
+                    // 鑷姩鍑虹┖妗讹紝鍧囧寑鍑哄埌姣忓彴缃愯绾�
+                    Integer count1 = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", 4).eq("sta_no",wantBucket.getSite()).in("wrk_sts", 11,12));
+                    if(count1 > 0) {
+                        return;
+                    }
                     log.info("{}鑷姩琛ョ┖妗讹紝缃愯绾胯妗跺瀷淇℃伅锛歿},姝e湪鎵ц浠诲姟鏁帮細{}", wantBucket.getSite(), wantBucket.getBucketType(), count);
                     // 鍒ゆ柇搴撻噷鏈夋棤绌烘《缁�
                     List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
@@ -2419,4 +2635,60 @@
             }
         }
     }
+
+    /**
+     * 鎵嬪姩绔欎綅杞Щ
+     */
+    public synchronized void manualStationTransfer() {
+        WrkMast wrkMast = wrkMastMapper.selectByIoTypeAndWrkSts(120, 51L);
+
+        if (Cools.isEmpty(wrkMast)) {
+            return;
+        }
+        int devpId;
+        if (wrkMast.getSourceStaNo() < 1044) {
+            devpId = 1;
+        } else if (wrkMast.getSourceStaNo() < 1091) {
+            devpId = 2;
+        } else {
+            devpId = 3;
+        }
+        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+        try {
+            StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getSourceStaNo());
+
+            if (staProtocol == null) {
+                wrkMast.setIoTime(new Date());
+                wrkMastService.updateById(wrkMast);
+                return;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+
+            // 绔欑偣鏉′欢鍒ゆ柇
+            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk()) {
+                // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                StaProtocol staProtocolNew = new StaProtocol();
+                staProtocolNew.setSiteId(staProtocol.getSiteId());
+                staProtocolNew.setWorkNo(wrkMast.getWrkNo());
+                staProtocolNew.setStaNo(crnOutSiteToRgvSite2.get(wrkMast.getSourceStaNo()));
+                devpThread.setPakMk(staProtocol.getSiteId(), false);
+                boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocolNew));
+                log.info("鎵嬪姩绔欎綅杞Щ杈撻�佺嚎涓嬪彂锛�" + staProtocolNew.getWrkNo() + "," + staProtocolNew.getSiteId());
+                if (!result) {
+                    News.errorNoLog("" + " - 1" + " - 鏇存柊plc绔欑偣淇℃伅澶辫触");
+                    throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                }
+
+                wrkMast.setIoTime(new Date());
+                wrkMast.setWrkSts(52L);
+                wrkMastService.updateById(wrkMast);
+            } else {
+                wrkMast.setIoTime(new Date());
+                wrkMastService.updateById(wrkMast);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }

--
Gitblit v1.9.1