From cd874fc904dbd52e3ccb041977f41ea60705dc46 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期一, 20 二月 2023 13:47:40 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  344 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 271 insertions(+), 73 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 5516330..e9c7014 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -41,7 +41,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,17 +94,34 @@
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗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) && !Cools.isEmpty(barcode)){
+                    BarcodeThread barcodeThread1 = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode1());
+                    if (barcodeThread1 != null) {
+                        barcode = barcodeThread1.getBarcode();
+                    }
+
+                    if(!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)) {
@@ -125,8 +141,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;
                 }
 
@@ -268,7 +304,7 @@
      * wms鍏ュ簱
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2
      */
-    public void generateStoreWrkFile0() {
+    public synchronized void generateStoreWrkFile0() {
         // 鏍规嵁杈撻�佺嚎plc閬嶅巻
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鍏ュ簱鍙�
@@ -283,7 +319,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() == 304 && devpThread.ioModeOf3F1 != IoModeType.PAKOUT_MODE) {
+                    continue;
+                }
+                if (inSta.getStaNo() == 301 && devpThread.ioModeOf3F2 != IoModeType.PAKOUT_MODE) {
                     continue;
                 }
 
@@ -448,8 +505,7 @@
     /**
      * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
      */
-    @Async
-    public void crnStnToOutStn() {
+    public synchronized void crnStnToOutStn() {
         for (CrnSlave crnSlave : slaveProperties.getCrn()) {
             // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
             for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
@@ -621,7 +677,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;
             // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
@@ -754,7 +810,7 @@
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 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());
@@ -785,8 +841,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;
                 }
 
@@ -891,7 +967,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());
@@ -1008,7 +1084,7 @@
     /**
      * 搴撲綅绉昏浆
      */
-    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) {
@@ -1076,8 +1152,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 +1195,7 @@
     /**
      * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
      */
-    @Async
-    public void recCrnErr() {
+    public synchronized void recCrnErr() {
         Date now = new Date();
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -1242,11 +1316,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());
@@ -1256,15 +1329,10 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( emptyInSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-                if (emptyInSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-                    continue;
-                }
-
                 // 绔欑偣鏉′欢鍒ゆ柇
                 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);
@@ -1363,8 +1431,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());
@@ -1480,8 +1547,7 @@
     /**
      * 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
      */
-    @Async
-    public void ledReset() {
+    public synchronized void ledReset() {
 //        for (LedSlave led : slaveProperties.getLed()) {
 //            // 鑾峰彇杈撻�佺嚎plc绾跨▼
 //            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1628,7 +1694,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;
@@ -1896,52 +1962,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;
                     }
@@ -1956,7 +2157,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) {
@@ -1969,8 +2170,7 @@
         }
     }
 
-
-    public void autoEmptyOut() {
+    public synchronized void autoEmptyOut() {
         DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
         Integer autoOutSite = 12;
         //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
@@ -1989,26 +2189,24 @@
             if (null != pakoutEmpty) {
                 return;
             }
-            //鏈紑WMS鍒嗘敮锛岃姹俉MS鐢熸垚绌烘澘鍑哄簱鏈啓
+            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锛堣緭閫佹満鐣欑敤锛�
-        ) {
-
-            //鏈紑WMS鍒嗘敮锛岃姹俉MS鐢熸垚绌烘澘鍏ュ簱鏈啓
-        }
-    }
 }

--
Gitblit v1.9.1