From a566bdd94c21b60f57a0669fc923ffb9e16f0f4d Mon Sep 17 00:00:00 2001
From: whycq <123456>
Date: 星期四, 16 三月 2023 17:06:31 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  645 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 436 insertions(+), 209 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 dfdfe20..a86899e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -21,6 +21,7 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.CollectionUtils;
 import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.News;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -41,7 +42,6 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -95,23 +95,49 @@
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
      */
-    public void generateStoreWrkFile() {
+    public synchronized void generateStoreWrkFile() {
         // 鏍规嵁杈撻�佺嚎plc閬嶅巻
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鍏ュ簱鍙�
             for (DevpSlave.Sta inSta : devp.getInSta()) {
                 // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                 BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+
                 if (barcodeThread == null) {
                     continue;
                 }
                 String barcode = barcodeThread.getBarcode();
+
+
+                //101绔欐湁3涓壂鐮佸櫒锛屽綋0鎵爜鍣ㄦ病鏈夋暟鎹椂锛岃幏鍙�9銆�10涓や釜鎵爜鍣ㄦ暟鎹�
+                if((inSta.getStaNo().equals(101) || inSta.getStaNo().equals(104)) && ( "NoRead".equals(barcode) || Cools.isEmpty(barcode) )){
+                    BarcodeThread barcodeThread1 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode1());
+                    if (barcodeThread1 != null) {
+                        barcode = barcodeThread1.getBarcode();
+                    }
+
+                    if("NoRead".equals(barcode) || Cools.isEmpty(barcode)) {
+                        BarcodeThread barcodeThread2 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode2());
+                        if (barcodeThread2 != null) {
+                            barcode = barcodeThread2.getBarcode();
+
+                        }
+                    }
+                }
+
+
                 if (!Cools.isEmpty(barcode)) {
                     log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
                     if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                         continue;
                     }
                 } else {
+                    // led 寮傚父鏄剧ず
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                    if (ledThread != null) {
+                        String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                    }
                     continue;
                 }
 
@@ -125,8 +151,28 @@
                 }
 
                 // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
+                if (inSta.getStaNo() == 101 && devpThread.ioModeOf1F1 == IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 104 && devpThread.ioModeOf1F2 == IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 111 && devpThread.ioModeOf1F3 == IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 114 && devpThread.ioModeOf1F4 == IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 201 && devpThread.ioModeOf2F1 == IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 204 && devpThread.ioModeOf2F2 == IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 301 && devpThread.ioModeOf3F1 == IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 304 && devpThread.ioModeOf3F2 == IoModeType.PAKOUT_MODE) {
                     continue;
                 }
 
@@ -150,11 +196,15 @@
 //                    }
 
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
-                    if (wrkMast != null) {
-                        log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        continue;
+                    WrkMast wrkMast = new WrkMast();
+                    if (barcode.length() == 8) {
+                        wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
+                        if (wrkMast != null) {
+                            log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+                            continue;
+                        }
                     }
+
 //                    // 鑾峰彇鍏ュ簱閫氱煡妗�
 //                    List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
 //                    if (waitPakins.isEmpty()) {
@@ -171,6 +221,7 @@
                         param.setIoType(1);
                         param.setSourceStaNo(inSta.getStaNo());
                         param.setLocType1(locTypeDto.getLocType1());
+                        param.setFull(staProtocol.isFull());
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
                                 .setPath("/rpc/pakin/loc/v1")
@@ -178,6 +229,8 @@
                                 .build()
                                 .doPost();
                         JSONObject jsonObject = JSON.parseObject(response);
+//                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+//                        Integer code = jsonObject.getInteger("code");
                         if (jsonObject.getInteger("code").equals(200)) {
                             StartupDto dto = jsonObject.getObject("data", StartupDto.class);
 
@@ -192,6 +245,40 @@
                         } else {
                             log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                         }
+//                        if (jsonObject.getInteger("code").equals(200)) {
+//                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+//
+//                            barcodeThread.setBarcode("");
+//                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
+//                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//
+//                            ledThread.errorReset();
+//
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            if (!result) {
+//                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+//                            }
+//                        } else if(code == 500){
+//                            if (ledThread != null) {
+//                                String errorMsg = jsonObject.getString("msg");
+//                                if (!Cools.isEmpty(errorMsg)) {
+//                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+//                                }
+//                            }
+//                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+//                        } else if (code == 700) {
+//                            staProtocol.setWorkNo((short) 9995);
+//                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//
+//                            // led 寮傚父鏄剧ず
+//                            if (ledThread != null) {
+//                                String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
+//                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+//                            }
+//                        }
 
 
 //                        // 妫�绱㈠簱浣�
@@ -268,7 +355,7 @@
      * wms鍏ュ簱
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2
      */
-    public void generateStoreWrkFile0() {
+    public synchronized void generateStoreWrkFile0() {
         // 鏍规嵁杈撻�佺嚎plc閬嶅巻
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鍏ュ簱鍙�
@@ -283,7 +370,28 @@
                 }
 
 //                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) {
+                if (inSta.getStaNo() == 104 && devpThread.ioModeOf1F1 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 101 && devpThread.ioModeOf1F2 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 114 && devpThread.ioModeOf1F3 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 111 && devpThread.ioModeOf1F4 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 204 && devpThread.ioModeOf2F1 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 201 && devpThread.ioModeOf2F2 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 301 && devpThread.ioModeOf3F1 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 304 && devpThread.ioModeOf3F2 != IoModeType.PAKOUT_MODE) {
                     continue;
                 }
 
@@ -330,20 +438,39 @@
         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)) {
+                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+
+                if (barcodeThread == null) {
+                    continue;
+                }
+                String barcode = barcodeThread.getBarcode();
+
+
+                //101绔欐湁3涓壂鐮佸櫒锛屽綋0鎵爜鍣ㄦ病鏈夋暟鎹椂锛岃幏鍙�9銆�10涓や釜鎵爜鍣ㄦ暟鎹�
+                if((pickSta.getStaNo().equals(101) || pickSta.getStaNo().equals(104)) && ( "NoRead".equals(barcode) || Cools.isEmpty(barcode) )){
+                    BarcodeThread barcodeThread1 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode1());
+                    if (barcodeThread1 != null) {
+                        barcode = barcodeThread1.getBarcode();
+                    }
+
+                    if("NoRead".equals(barcode) || Cools.isEmpty(barcode)) {
+                        BarcodeThread barcodeThread2 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode2());
+                        if (barcodeThread2 != null) {
+                            barcode = barcodeThread2.getBarcode();
+
+                        }
+                    }
+                }
+
+                if (!Cools.isEmpty(barcode)) {
+                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+//                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
 //                        continue;
 //                    }
-//                } else {
-//                    continue;
-//                }
+                } else {
+                    continue;
+                }
 
                 // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -354,30 +481,29 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
 
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
 //                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
+                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+                    if (wrkMast == null) {
+                        wrkMast = wrkMastMapper.selectPickStep(barcode);
+                    }
                     if (wrkMast == null) {
                         // 鏃犳嫞鏂欐暟鎹�
+
+                        if (ledThread != null) {
+                            String errorMsg = "鏆傛棤鎷f枡淇℃伅锛侊紒锛�";
+                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+                        }
                         continue;
                     }
                     if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
                             || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
                         continue;
                     }
+                    ledThread.errorReset();
 
-                    // 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹�
-//                    int stnNo = 0;
-//                    if (wrkMast.getStaNo() == 109) {
-//                        stnNo = 127;
-//                    } else if (wrkMast.getStaNo() == 113) {
-//                        stnNo = 128;
-//                    } else {
-//                        log.error("{}鍙蜂换鍔℃暟鎹紓甯革紒", wrkMast.getWrkNo());
-//                    }
                     // 鑾峰彇鐩爣绔�
                     Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                             .eq("type_no", wrkMast.getIoType() - 50)
@@ -406,7 +532,37 @@
                         wrkMast.setIoTime(now);
                         wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
                         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
-                        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
+
+                        Integer sourceStaNo = 0;
+                        switch (wrkMast.getStaNo()){
+                            case 100:
+                                sourceStaNo = 101;
+                                break;
+                            case 103:
+                                sourceStaNo = 104;
+                                break;
+                            case 110:
+                                sourceStaNo = 111;
+                                break;
+                            case 113:
+                                sourceStaNo = 114;
+                                break;
+                            case 200:
+                                sourceStaNo = 201;
+                                break;
+                            case 203:
+                                sourceStaNo = 204;
+                                break;
+                            case 300:
+                                sourceStaNo = 301;
+                                break;
+                            case 303:
+                                sourceStaNo = 304;
+                                break;
+                        }
+
+                        wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
+//                        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
                         wrkMast.setStaNo(staNo); // 鐩爣绔�
                         wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
                         wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
@@ -448,8 +604,7 @@
     /**
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
-    @Async
-    public void crnStnToOutStn() {
+    public synchronized void crnStnToOutStn() {
         for (CrnSlave crnSlave : slaveProperties.getCrn()) {
             // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
             for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
@@ -610,6 +765,7 @@
             crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
             crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
             crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+            crnCommand.setLocType1((short) 0);     // 璐х墿绫诲瀷
             if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
                 log.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
             }
@@ -621,7 +777,7 @@
     /**
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
-    public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
+    public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
         for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
             boolean flag = false;
             // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
@@ -722,6 +878,7 @@
             crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
             crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
             crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+            crnCommand.setLocType1(locMast.getLocType1().shortValue());     // 璐х墿绫诲瀷
             if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                 log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
             } else {
@@ -754,11 +911,16 @@
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
+    public synchronized 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());
+            //            鑾峰彇宸ヤ綔鐘舵�佷负14鐨勫伐浣滄。
+            WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep14(slave.getId(), crnStn.getStaNo());
+            if ( wrkMast1 !=null) {
+                continue;
+            }
             for (WrkMast wrkMast : wrkMasts) {
                 if (wrkMast == null) {
                     continue;
@@ -769,9 +931,9 @@
                     continue;
                 }
                 // 鑾峰彇婧愬簱浣嶄俊鎭�
-                LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-                if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
-                    log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
+                LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+                if (!locMast.getLocSts().equals("R") && !locMast.getLocSts().equals("P")) {
+                    log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
                     continue;
                 }
                 // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
@@ -785,8 +947,28 @@
                 }
 
 //            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-                if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+                if (wrkMast.getStaNo() == 100 && devpThread.ioModeOf1F1 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (wrkMast.getStaNo() == 103 && devpThread.ioModeOf1F2 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (wrkMast.getStaNo() == 110 && devpThread.ioModeOf1F3 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (wrkMast.getStaNo() == 113 && devpThread.ioModeOf1F4 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (wrkMast.getStaNo() == 200 && devpThread.ioModeOf2F1 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (wrkMast.getStaNo() == 203 && devpThread.ioModeOf2F2 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (wrkMast.getStaNo() == 300 && devpThread.ioModeOf3F1 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (wrkMast.getStaNo() == 303 && devpThread.ioModeOf3F2 != IoModeType.PAKOUT_MODE) {
                     continue;
                 }
 
@@ -864,12 +1046,13 @@
                     crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                     crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                     crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-                    crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
-                    crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
-                    crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
+                    crnCommand.setSourcePosX(locMast.getRow1().shortValue());     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY(locMast.getBay1().shortValue());     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ(locMast.getLev1().shortValue());     // 婧愬簱浣嶅眰
                     crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
                     crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
                     crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+                    crnCommand.setLocType1(locMast.getLocType1().shortValue());     // 璐х墿绫诲瀷
                     if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                         log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                     } else {
@@ -891,7 +1074,7 @@
 //    /**
 //     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
 //     */
-//    public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
+//    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
 //        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
 //            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
 //            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
@@ -989,6 +1172,7 @@
 //                crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
 //                crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
 //                crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+//                crnCommand.setLocType1(locMast.getLocType1().shortValue());     // 璐х墿绫诲瀷
 //                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
 //                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
 //                } else {
@@ -1008,25 +1192,25 @@
     /**
      * 搴撲綅绉昏浆
      */
-    public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
+    public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
         // 鑾峰彇宸ヤ綔妗d俊鎭�
         WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
         if (null == wrkMast) {
             return;
         }
         // 鑾峰彇婧愬簱浣嶄俊鎭�
-        LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-        if (null == sourceSta) {
+        LocMast sourceLocMast = locMastService.selectById(wrkMast.getSourceLocNo());
+        if (null == sourceLocMast) {
             log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
             return;
         }
         // 婧愬簱浣�  搴撲綅鐘舵�佸垽鏂�
-        if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("S")) {
+        if (!sourceLocMast.getLocSts().equals("R") && !sourceLocMast.getLocSts().equals("S")) {
             return;
         }
         // 鑾峰彇鐩爣搴撲綅淇℃伅
-        LocMast sta = locMastService.selectById(wrkMast.getLocNo());
-        if (null == sta) {
+        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+        if (null == locMast) {
             log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
             return;
         }
@@ -1052,12 +1236,13 @@
         crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
         crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
         crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-        crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
-        crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
-        crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
-        crnCommand.setDestinationPosX(sta.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY(sta.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ(sta.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+        crnCommand.setSourcePosX(sourceLocMast.getRow1().shortValue());     // 婧愬簱浣嶆帓
+        crnCommand.setSourcePosY(sourceLocMast.getBay1().shortValue());     // 婧愬簱浣嶅垪
+        crnCommand.setSourcePosZ(sourceLocMast.getLev1().shortValue());     // 婧愬簱浣嶅眰
+        crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
+        crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+        crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+        crnCommand.setLocType1(locMast.getLocType1().shortValue());     // 璐х墿绫诲瀷
         if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
             log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
         } else {
@@ -1076,8 +1261,7 @@
     /**
      * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
      */
-    @Async
-    public void storeFinished() {
+    public synchronized void storeFinished() {
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
@@ -1120,8 +1304,7 @@
     /**
      * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
      */
-    @Async
-    public void recCrnErr() {
+    public synchronized void recCrnErr() {
         Date now = new Date();
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -1242,11 +1425,10 @@
     /**
      * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
      */
-    @Async
-    public void storeEmptyPlt() {
+    public synchronized void storeEmptyPlt() {
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻绌烘澘鍏ュ簱鍙�
-            for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
+             for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
                 // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
@@ -1258,7 +1440,8 @@
 
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) {
+                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() > 9990
+                        && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) {
 
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -1357,8 +1540,7 @@
     /**
      * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
      */
-    @Async
-    public void ledExecute() {
+    public synchronized void ledExecute() {
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1376,10 +1558,7 @@
                 }
                 // 鑾峰彇宸ヤ綔妗f暟鎹�
                 WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
-//                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
-                if (null == wrkMast) {
-                    continue;
-                }
+                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
                 wrkMasts.add(wrkMast);
                 // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
@@ -1387,12 +1566,6 @@
                 ledCommand.setIoType(wrkMast.getIoType());
                 // 鍑哄簱妯″紡
                 switch (wrkMast.getIoType()) {
-                    case 1:
-                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-                        break;
-                    case 10:
-                        ledCommand.setTitle("绌烘澘鍏ュ簱");
-                        break;
                     case 101:
                         ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
                         break;
@@ -1410,16 +1583,24 @@
                         ledCommand.setEmptyMk(true);
                         break;
                     default:
-                        log.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-                ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
-//                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
-                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+                if (wrkMast.getIoType() != 110) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme())));
+                    wrkDetls.forEach(wrkDetl -> {
+                        if (wrkMast.getIoType() == 101) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme()));
+                        }
+                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(),  wrkDetl.getAnfme()));
+                        }
+                        if (wrkMast.getIoType() == 107) {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme()));
+                        }
+                    });
                 }
                 commands.add(ledCommand);
             }
@@ -1432,22 +1613,10 @@
             }
             // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
             if (!commands.isEmpty()) {
-                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 {
-                    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);
-                    }
+                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    continue;
                 }
-
             }
 
             try {
@@ -1474,35 +1643,7 @@
     /**
      * 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
      */
-    @Async
-    public void ledReset() {
-//        for (LedSlave led : slaveProperties.getLed()) {
-//            // 鑾峰彇杈撻�佺嚎plc绾跨▼
-//            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
-//            // 鍛戒护闆嗗悎
-//            boolean reset = true;
-//            for (Integer staNo : led.getStaArr()) {
-//                // 鑾峰彇鍙夎溅绔欑偣
-//                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-//                if (staProtocol == null) {
-//                    continue;
-//                } else {
-//                    staProtocol = staProtocol.clone();
-//                }
-//                if (staProtocol.getWorkNo() != 0) {
-//                    reset = false;
-//                    break;
-//                }
-//            }
-//            // 鑾峰彇led绾跨▼
-//            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
-//            // led鏄剧ず榛樿鍐呭
-//            if (reset) {
-//                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
-//                    log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                }
-//            }
-//        }
+    public synchronized void ledReset() {
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1511,32 +1652,18 @@
             for (Integer staNo : led.getStaArr()) {
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) {
-                    continue;
-                }
-                if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
+                if (staProtocol == null) { continue; }
+                if (staProtocol.getWorkNo() != 0) {
                     reset = false;
                     break;
                 }
             }
             // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
             // led鏄剧ず榛樿鍐呭
-            if (reset && !ledThread.isLedMk()) {
-                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 {
-
-                    }
+            if (reset) {
+                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                 }
             }
         }
@@ -1622,7 +1749,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;
@@ -1761,8 +1888,11 @@
                     }
 
                     LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
-                    LocMast loc = locMastService.queryDemoLoc(crn.getId());
-                    if (null == sourceLoc || null == loc) {
+                    if (null == sourceLoc ) {
+                        continue;
+                    }
+                    LocMast loc = locMastService.queryDemoLoc0(crn.getId(),sourceLoc.getLocType1());
+                    if ( null == loc) {
                         continue;
                     }
 
@@ -1890,52 +2020,187 @@
     /**
      * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
      */
-    public void ioConvert() {
+    public synchronized void ioConvert() {
         try {
             // 鏍规嵁杈撻�佺嚎plc閬嶅巻
             for (DevpSlave devp : slaveProperties.getDevp()) {
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
 
                 for (DevpSlave.Sta inSta : devp.getInSta()) {
-                    if (inSta.getStaNo() == 2) {
-                        continue;
+//                    if (inSta.getStaNo() == 2) {
+//                        continue;
+//                    }
+                    Integer staNo = 0;
+                    switch (inSta.getStaNo()){
+                        case 101:
+                            staNo = 102;
+                            break;
+                        case 104:
+                            staNo = 106;
+                            break;
+                        case 111:
+                            staNo = 112;
+                            break;
+                        case 114:
+                            staNo = 116;
+                            break;
+                        case 201:
+                            staNo = 202;
+                            break;
+                        case 204:
+                            staNo = 205;
+                            break;
+                        case 301:
+                            staNo = 302;
+                            break;
+                        case 304:
+                            staNo = 305;
+                            break;
                     }
-                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
+                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(staNo);
                     switch (inSta.getStaNo()) {
-                        case 203://1F
+                        case 101: // 1F1
                             if (pakout != null) {
-                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+                                if (devpThread.ioModeOf1F1 != IoModeType.PAKOUT_MODE) {
                                     // 鍑哄簱鍒囨崲涓�
-                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+                                    devpThread.ioModeOf1F1 = 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.getStation().get(inSta.getStaNo() - 1).isLoading()
+                                            && devpThread.getStation().get(inSta.getStaNo() - 1).getWorkNo() == 0) {
                                         // 鍑哄簱妯″紡
-                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
+                                        devpThread.ioModeOf1F1 = IoModeType.PAKOUT_MODE;
                                     }
                                 }
                             } else {
                                 // 鍏ュ簱妯″紡
-                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
+                                devpThread.ioModeOf1F1 = IoModeType.PAKIN_MODE;
                             }
                             break;
-                        case 401://1F
+                        case 104: // 1F2
                             if (pakout != null) {
-                                if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
+                                if (devpThread.ioModeOf1F2 != IoModeType.PAKOUT_MODE) {
                                     // 鍑哄簱鍒囨崲涓�
-                                    devpThread.ioModeOf4F = IoModeType.PAKOUT_BOOTING;
+                                    devpThread.ioModeOf1F2 = 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.getStation().get(inSta.getStaNo() - 1).isLoading()
+                                            && devpThread.getStation().get(inSta.getStaNo() - 1).getWorkNo() == 0) {
                                         // 鍑哄簱妯″紡
-                                        devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
+                                        devpThread.ioModeOf1F2 = IoModeType.PAKOUT_MODE;
                                     }
                                 }
                             } else {
                                 // 鍏ュ簱妯″紡
-                                devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
+                                devpThread.ioModeOf1F2 = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 111: // 1F3
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf1F3 != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+                                    devpThread.ioModeOf1F3 = 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.ioModeOf1F3 = IoModeType.PAKOUT_MODE;
+                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf1F3 = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 114: // 1F4
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf1F4 != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+                                    devpThread.ioModeOf1F4 = 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.ioModeOf1F4 = IoModeType.PAKOUT_MODE;
+                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf1F4 = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 201: // 2F1
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf2F1 != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+                                    devpThread.ioModeOf2F1 = 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.ioModeOf2F1 = IoModeType.PAKOUT_MODE;
+                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf2F1 = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 204: // 2F2
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf2F2 != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+                                    devpThread.ioModeOf2F2 = 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.ioModeOf2F2 = IoModeType.PAKOUT_MODE;
+                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf2F2 = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 301: // 3F1
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf3F1 != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+                                    devpThread.ioModeOf3F1 = 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.ioModeOf3F1 = IoModeType.PAKOUT_MODE;
+                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf3F1 = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 304: // 3F2
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf3F2 != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+                                    devpThread.ioModeOf3F2 = 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.ioModeOf3F2 = IoModeType.PAKOUT_MODE;
+                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf3F2 = IoModeType.PAKIN_MODE;
                             }
                             break;
                     }
@@ -1950,7 +2215,7 @@
 
     }
 
-    public void outOfDevp() {
+    public synchronized void outOfDevp() {
         List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
         for (WrkMast wrkMast : wrkMasts) {
             if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
@@ -1963,8 +2228,7 @@
         }
     }
 
-
-    public void autoEmptyOut() {
+    public synchronized void autoEmptyOut() {
         DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
         Integer autoOutSite = 12;
         //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
@@ -2003,41 +2267,4 @@
         }
     }
 
-    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