From a7cd354c8f259a4ee947e0580326aa4fd5a30eb5 Mon Sep 17 00:00:00 2001
From: mrzhssss <pro6@qq.com>
Date: 星期六, 19 十一月 2022 16:31:54 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  457 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 297 insertions(+), 160 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index a0587a3..72d06fc 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -106,9 +106,9 @@
                     continue;
                 }
                 String barcode = barcodeThread.getBarcode();
-                if(!Cools.isEmpty(barcode)) {
+                if (!Cools.isEmpty(barcode)) {
                     log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                         continue;
                     }
                 } else {
@@ -124,14 +124,17 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( inSta.getStaNo()==180 && devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
+                // 鍏ュ嚭搴撴ā寮忓垽鏂�
+//                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
+                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
 
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing() && staProtocol.isLoading()
                         && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
-                        && staProtocol.isPakMk()){// && !Cools.isEmpty(barcode)) {
+                        && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990)
+                        && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
 
 //                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
 //                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
@@ -187,7 +190,7 @@
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
                         } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                         }
 
 
@@ -280,7 +283,9 @@
                 }
 
 //                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
+                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) {
+                    continue;
+                }
 
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
@@ -288,7 +293,9 @@
                         && staProtocol.isPakMk()) {
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo());
-                    if (wrkMast == null) { continue; }
+                    if (wrkMast == null) {
+                        continue;
+                    }
 
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
@@ -319,24 +326,24 @@
     /**
      * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
      */
-    public synchronized void stnToCrnStnPick(){
+    public synchronized void stnToCrnStnPick() {
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鎷f枡鍏ュ簱鍙�
             for (DevpSlave.Sta pickSta : devp.getPickSta()) {
-                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-                if (barcodeThread == null) {
-                    continue;
-                }
-                String barcode = barcodeThread.getBarcode();
-                if(!Cools.isEmpty(barcode)) {
-                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                        continue;
-                    }
-                } else {
-                    continue;
-                }
+//                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+//                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+//                if (barcodeThread == null) {
+//                    continue;
+//                }
+//                String barcode = barcodeThread.getBarcode();
+//                if(!Cools.isEmpty(barcode)) {
+//                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+//                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+//                        continue;
+//                    }
+//                } else {
+//                    continue;
+//                }
 
                 // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -350,28 +357,15 @@
 //                // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
 
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
-
-//                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-//                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-//                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
-//                        staProtocol.setWorkNo((short)9999);
-//                        staProtocol.setStaNo((short)172);
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        if (!result) {
-//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                        }
-//                        continue;
-//                    }
-
-                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+//                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
+                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
                     if (wrkMast == null) {
                         // 鏃犳嫞鏂欐暟鎹�
                         continue;
                     }
                     if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
-                        || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) {
+                            || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
                         continue;
                     }
 
@@ -455,7 +449,7 @@
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
     @Async
-    public void crnStnToOutStn() {
+    public synchronized void crnStnToOutStn() {
         for (CrnSlave crnSlave : slaveProperties.getCrn()) {
             // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
             for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
@@ -518,22 +512,24 @@
     /**
      * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
      */
-    public synchronized void crnIoExecute(){
+    public synchronized void crnIoExecute() {
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) { continue; }
+            if (crnProtocol == null) {
+                continue;
+            }
             BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
             if (basCrnp == null) {
                 log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
                 continue;
             }
 
-            //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓�
-            if(crnThread.isBackHpFlag()){
-                continue;
-            }
+//            //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓�
+//            if(crnThread.isBackHpFlag()){
+//                continue;
+//            }
 
             // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
             if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
@@ -561,7 +557,7 @@
             }
             // 搴撲綅绉昏浆
             this.locToLoc(crn, crnProtocol);
-            this.crnRebackHp(crnProtocol, crnThread);
+//            this.crnRebackHp(crnProtocol, crnThread);
 
         }
     }
@@ -569,7 +565,7 @@
     /**
      * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
      */
-    public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread){
+    public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
 //        for (CrnSlave crn : slaveProperties.getCrn()) {
 //            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
 //            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
@@ -582,50 +578,50 @@
 //                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
 //                continue;
 //            }
-            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                if(crnProtocol.getBay() ==1 && crnProtocol.getLevel()==1){
-                    return;
-                }
-
-                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
-                if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
-                    return;
-                }
-
-                //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
-                if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
-                    return;
-                }
-
-                //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
-                if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
-                    return;
-                }
-                log.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
-                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                CrnCommand crnCommand = new CrnCommand();
-                crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-                crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
-                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
-                crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
-                crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-                crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
-                crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
-                crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
-                crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
-                if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
-                    log.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
-                }
-                crnThread.setBackHpFlag(true);
+        if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+            if (crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) {
+                return;
             }
+
+            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
+            if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
+                return;
+            }
+
+            //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
+            if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
+                return;
+            }
+
+            //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
+            if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+                return;
+            }
+            log.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
+            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+            CrnCommand crnCommand = new CrnCommand();
+            crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+            crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+            crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
+            crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
+            crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
+            crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
+            crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+            crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+            crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+            if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
+                log.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
+            }
+            crnThread.setBackHpFlag(true);
+        }
 //        }
     }
 
     /**
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
-    public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol){
+    public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
         for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
             boolean flag = false;
             // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
@@ -643,7 +639,7 @@
                 continue;
             }
             if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
-                    && staDetl.getCanining()!=null && staDetl.getCanining().equals("Y")) {
+                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
                 flag = true;
             }
             if (!flag) {
@@ -651,7 +647,7 @@
             }
             // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
             WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
-            if(null == wrkMast) {
+            if (null == wrkMast) {
 //                log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
                 continue;
             }
@@ -673,7 +669,7 @@
 
             // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
             if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                return;
+                continue;
             }
 
             // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
@@ -706,9 +702,9 @@
 //                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
                     }
                     continue;
-                } else if (shallowLoc.getLocSts().equals("Q")){
+                } else if (shallowLoc.getLocSts().equals("Q")) {
                     WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                    if (null != waitWrkMast && waitWrkMast.getWrkSts()==4) {
+                    if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
                         continue;
                     }
                 }
@@ -758,23 +754,23 @@
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
+    public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
 //            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
             List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
-            for (WrkMast wrkMast : wrkMasts){
+            for (WrkMast wrkMast : wrkMasts) {
                 if (wrkMast == null) {
                     continue;
                 }
                 // 宸ヤ綔妗g姸鎬佸垽鏂�
-                if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null){
+                if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
                     log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
                     continue;
                 }
                 // 鑾峰彇婧愬簱浣嶄俊鎭�
                 LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-                if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
+                if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
                     log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
                     continue;
                 }
@@ -790,6 +786,9 @@
 
 //            // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
+                if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
 
                 // 鏌ヨ绔欑偣璇︾粏淇℃伅
                 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
@@ -799,7 +798,7 @@
 //                    continue;
                 }
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
+                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
                         && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
@@ -819,7 +818,7 @@
                             if (null == waitWrkMast) {
                                 log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
                             } else {
-                                if(waitWrkMast.getWrkSts() == 11) {
+                                if (waitWrkMast.getWrkSts() == 11) {
                                     waitWrkMast.setIoPri(15D);
                                     waitWrkMast.setModiTime(new Date());
                                     if (wrkMastMapper.updateById(waitWrkMast) == 0) {
@@ -831,20 +830,23 @@
                                 }
                             }
                         } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+                            //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
+                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
                             // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
-                                || Cools.isEmpty(waitWrkMast)) {
+//                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
+//                                || Cools.isEmpty(waitWrkMast)) {
+                            if (Cools.isEmpty(waitWrkMast)) {
                                 wrkMast.setUpdMk("Y");
                                 wrkMastMapper.updateById(wrkMast);
                                 // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
                                 moveLocForDeepLoc(slave, shallowLoc);
                             }
-                            log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
+                            log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
                             continue;
-                        } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")){
+                        } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
                             WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                            if (null != waitWrkMast && waitWrkMast.getWrkSts()==4) {
+                            if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
                                 continue;
                             }
                         }
@@ -1006,7 +1008,7 @@
     /**
      * 搴撲綅绉昏浆
      */
-    public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){
+    public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
         // 鑾峰彇宸ヤ綔妗d俊鎭�
         WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
         if (null == wrkMast) {
@@ -1080,13 +1082,15 @@
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) { continue; }
+            if (crnProtocol == null) {
+                continue;
+            }
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
-                if(crnProtocol.getTaskNo()==9999){
+                if (crnProtocol.getTaskNo() == 9999) {
                     // 鍫嗗灈鏈哄浣�
                     crnThread.setResetFlag(true);
-                }else {
+                } else {
                     // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
                     if (wrkMast == null) {
@@ -1117,7 +1121,7 @@
      * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
      */
     @Async
-    public void recCrnErr(){
+    public void recCrnErr() {
         Date now = new Date();
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -1139,7 +1143,7 @@
                                 continue;
                             }
                             BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
-                            String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName();
+                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                             BasErrLog basErrLog = new BasErrLog(
                                     null,    // 缂栧彿
                                     wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
@@ -1178,7 +1182,7 @@
                             }
                         }
                     }
-                // 鏃犱换鍔�
+                    // 鏃犱换鍔�
                 } else {
                     BasErrLog latest = basErrLogService.findLatest(crn.getId());
                     // 鏈夊紓甯�
@@ -1186,7 +1190,7 @@
                         // 璁板綍鏂板紓甯�
                         if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
                             BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
-                            String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName();
+                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                             BasErrLog basErrLog = new BasErrLog(
                                     null,    // 缂栧彿
                                     null,    // 宸ヤ綔鍙�
@@ -1201,7 +1205,7 @@
                                     null,    // 婧愮珯
                                     null,    // 婧愬簱浣�
                                     null,    // 鏉$爜
-                                    (int)crnProtocol.getAlarm(),    // 寮傚父鐮�
+                                    (int) crnProtocol.getAlarm(),    // 寮傚父鐮�
                                     errName,    // 寮傚父
                                     1,    // 寮傚父鎯呭喌
                                     now,    // 娣诲姞鏃堕棿
@@ -1214,7 +1218,7 @@
                                 log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
                             }
                         }
-                    // 鏃犲紓甯�
+                        // 鏃犲紓甯�
                     } else {
                         // 寮傚父淇
                         if (latest != null && latest.getStatus() == 1) {
@@ -1239,7 +1243,7 @@
      * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
      */
     @Async
-    public void storeEmptyPlt(){
+    public void storeEmptyPlt() {
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻绌烘澘鍏ュ簱鍙�
             for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
@@ -1252,12 +1256,9 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
-
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999 || staProtocol.getWorkNo() == 9990 || staProtocol.getWorkNo() == 9997) && staProtocol.isPakMk()) {
+                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) {
 
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -1285,14 +1286,12 @@
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
                         } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                         }
                     } catch (Exception e) {
                         e.printStackTrace();
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     }
-
-
 
 
 //                    // 妫�绱㈠簱浣�
@@ -1377,13 +1376,23 @@
                 }
                 // 鑾峰彇宸ヤ綔妗f暟鎹�
                 WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
-                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
+//                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
+                if (null == wrkMast) {
+                    continue;
+                }
                 wrkMasts.add(wrkMast);
                 // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
                 ledCommand.setWorkNo(wrkMast.getWrkNo());
+                ledCommand.setIoType(wrkMast.getIoType());
                 // 鍑哄簱妯″紡
                 switch (wrkMast.getIoType()) {
+                    case 1:
+                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+                        break;
+                    case 10:
+                        ledCommand.setTitle("绌烘澘鍏ュ簱");
+                        break;
                     case 101:
                         ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
                         break;
@@ -1405,10 +1414,12 @@
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+                ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
-                if (wrkMast.getIoType() != 110) {
+//                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
+                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatNo(), wrkDetl.getMatName(), wrkDetl.getQty())));
+                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme())));
                 }
                 commands.add(ledCommand);
             }
@@ -1421,12 +1432,22 @@
             }
             // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
             if (!commands.isEmpty()) {
-                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
-                    log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                    continue;
+                if (led.getId() == 7) {
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
+                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                        continue;
+                    } else {
+                        ledThread.setLedMk(false);
+                    }
                 } else {
-                    ledThread.setLedMk(false);
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                        continue;
+                    } else {
+                        ledThread.setLedMk(false);
+                    }
                 }
+
             }
 
             try {
@@ -1493,20 +1514,29 @@
                 if (staProtocol == null) {
                     continue;
                 }
-                if (staProtocol.getWorkNo() != 0) {
+                if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
                     reset = false;
                     break;
                 }
             }
             // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
             // led鏄剧ず榛樿鍐呭
             if (reset && !ledThread.isLedMk()) {
-                ledThread.setLedMk(true);
-                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
-                    log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                } else {
+                if (led.getId() == 7) {
+                    ledThread.setLedMk(true);
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
+                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    } else {
 
+                    }
+                } else {
+                    ledThread.setLedMk(true);
+                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    } else {
+
+                    }
                 }
             }
         }
@@ -1517,7 +1547,7 @@
      * tip锛氬悓姝�
      */
     @Transactional
-    public synchronized void moveLocForDeepLocPakin(CrnSlave crn, LocMast shallowLoc, WrkMast pakinWrkMast){
+    public synchronized void moveLocForDeepLocPakin(CrnSlave crn, LocMast shallowLoc, WrkMast pakinWrkMast) {
         LocMast loc = locMastService.selectById(pakinWrkMast.getLocNo());
 
         // 鑾峰彇宸ヤ綔鍙�
@@ -1536,7 +1566,7 @@
         wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
         wrkMast.setPicking("N"); // 鎷f枡
         wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+        wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
         wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setLinkMis("N");
         wrkMast.setCtnNo("Y");  // 鍏ュ簱闃诲搴撲綅绉昏浆鏍囪
@@ -1553,7 +1583,7 @@
                 WrkDetl wrkDetl = new WrkDetl();
                 wrkDetl.setWrkNo(workNo);
                 wrkDetl.setIoTime(now);
-                wrkDetl.setQty(locDetl.getQty());
+                wrkDetl.setAnfme(locDetl.getAnfme());
                 VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
                 wrkDetl.setAppeTime(now);
                 wrkDetl.setModiTime(now);
@@ -1566,7 +1596,7 @@
         if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
             shallowLoc.setLocSts("S"); // S.鍏ュ簱棰勭害锛屽叆搴撻樆濉炲簱浣嶇Щ杞�
             shallowLoc.setModiTime(now);
-            if (!locMastService.updateById(shallowLoc)){
+            if (!locMastService.updateById(shallowLoc)) {
                 throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
             }
         } else {
@@ -1592,7 +1622,7 @@
      * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
      * tip锛氬悓姝�
      */
-    private void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc){
+    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc) {
         try {
             List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
             LocMast loc = null;
@@ -1670,7 +1700,7 @@
                     WrkDetl wrkDetl = new WrkDetl();
                     wrkDetl.setWrkNo(workNo);
                     wrkDetl.setIoTime(new Date());
-                    wrkDetl.setQty(locDetl.getQty());
+                    wrkDetl.setAnfme(locDetl.getAnfme());
                     VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
                     wrkDetl.setAppeTime(new Date());
                     wrkDetl.setModiTime(new Date());
@@ -1709,7 +1739,7 @@
     /**
      * 鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆
      */
-    public synchronized void crnDemoOfLocMove1(){
+    public synchronized void crnDemoOfLocMove1() {
         try {
             for (CrnSlave crn : slaveProperties.getCrn()) {
                 if (!crn.getDemo()) {
@@ -1810,7 +1840,7 @@
     /**
      * 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
      */
-    public synchronized void crnIoWrkMast(){
+    public synchronized void crnIoWrkMast() {
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
@@ -1823,7 +1853,9 @@
             if (crnProtocol.getStatusType() != CrnStatusType.IDLE && crnProtocol.getTaskNo() != 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
                 // 鑾峰彇宸ヤ綔妗�
                 WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
-                if (wrkMast == null) { continue; }
+                if (wrkMast == null) {
+                    continue;
+                }
                 // 鍏ュ簱
                 if (wrkMast.getWrkSts() == 1 || wrkMast.getWrkSts() == 2) {
                     log.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
@@ -1834,7 +1866,7 @@
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
                         log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                     }
-                    log.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}",  DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F),  wrkMast.getWrkNo());
+                    log.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
                 }
                 // 鍑哄簱銆佺Щ搴�
                 if (wrkMast.getWrkSts() == 11) {
@@ -1846,7 +1878,7 @@
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
                         log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                     }
-                    log.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}",  DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F),  wrkMast.getWrkNo());
+                    log.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
                 }
 
 
@@ -1864,22 +1896,51 @@
             for (DevpSlave devp : slaveProperties.getDevp()) {
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
 
-                WrkMast pakout = wrkMastMapper.selectWorkingPakout();
-                if (pakout != null) {
-                    if (devpThread.ioMode != IoModeType.PAKOUT_MODE) {
-                        // 鍑哄簱鍒囨崲涓�
-                        devpThread.ioMode = IoModeType.PAKOUT_BOOTING;
-
-                        WrkMast pakin = wrkMastMapper.selectWorkingPakin();
-                        if (pakin == null) {
-                            // 鍑哄簱妯″紡
-                            devpThread.ioMode = IoModeType.PAKOUT_MODE;
-                        }
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    if (inSta.getStaNo() == 2) {
+                        continue;
                     }
-                } else {
-                    // 鍏ュ簱妯″紡
-                    devpThread.ioMode = IoModeType.PAKIN_MODE;
+                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
+                    switch (inSta.getStaNo()) {
+                        case 203://1F
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+                                            && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading()
+                                            && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) {
+                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
+                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 401://1F
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+                                    devpThread.ioModeOf4F = IoModeType.PAKOUT_BOOTING;
+                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+                                            && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading()
+                                            && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) {
+                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
+                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                    }
                 }
+
             }
 
         } catch (Exception e) {
@@ -1903,4 +1964,80 @@
     }
 
 
+    public void autoEmptyOut() {
+        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+        Integer autoOutSite = 12;
+        //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
+        StaProtocol staProtocol = devpThread.getStation().get(autoOutSite);
+        if (staProtocol == null) {
+            return;
+        } else {
+            staProtocol = staProtocol.clone();
+        }
+        if (staProtocol.isAutoing()  //鑷姩
+                && !staProtocol.isLoading()  //鏃犵墿
+                && staProtocol.isOutEnable()  //鍙嚭淇″彿
+                && staProtocol.getWorkNo() == 0
+        ) {
+            WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(autoOutSite);
+            if (null != pakoutEmpty) {
+                return;
+            }
+            try {
+                String response = new HttpHandler.Builder()
+                        .setUri(wmsUrl)
+                        .setPath("/rpc/auto/emptyOut/v1")
+                        .build()
+                        .doPost();
+                JSONObject jsonObject = JSON.parseObject(response);
+                if (jsonObject.getInteger("code").equals(200)) {
+                    JSONObject data = (JSONObject) jsonObject.get("data");
+                    log.info((String) data.get("msg"));
+                } else {
+                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            }
+        }
+    }
+
+    public void autoEmptyIn() {
+        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+        Integer autoInSite = 12;
+        StaProtocol staProtocol = devpThread.getStation().get(autoInSite);
+        if (staProtocol == null) {
+            return;
+        } else {
+            staProtocol = staProtocol.clone();
+        }
+        if (staProtocol.isAutoing()  //鑷姩
+                && staProtocol.isLoading()  //鏈夌墿
+                && staProtocol.isInEnable()  //鍙叆淇″彿
+                && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
+        ) {
+
+            try {
+                LocTypeDto locTypeDto = new LocTypeDto((short) 1, (short) 1, (short) 1);
+
+
+                String response = new HttpHandler.Builder()
+                        .setUri(wmsUrl)
+                        .setPath("/rpc/auto/emptyIn/v1")
+                        .setJson(JSON.toJSONString(locTypeDto))
+                        .build()
+                        .doPost();
+                JSONObject jsonObject = JSON.parseObject(response);
+                if (jsonObject.getInteger("code").equals(200)) {
+                    log.info((String) jsonObject.get("msg"));
+                } else {
+                    log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            }
+        }
+    }
 }

--
Gitblit v1.9.1