From 922a5f471a735a0ea231d30e45312f61d583e58d Mon Sep 17 00:00:00 2001
From: zhangchao <zc857179121@qq.com>
Date: 星期日, 01 九月 2024 16:12:49 +0800
Subject: [PATCH] 对照协议调整

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  559 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 360 insertions(+), 199 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 f9dced6..68662bd 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -91,6 +91,20 @@
     @Value("${wms.url}")
     private String wmsUrl;
 
+    private Short getWorkMode(Integer bay) {
+        if (bay == 2 || bay == 7) {
+            return (short) 3;
+        } else if (bay == 3) {
+            return (short) 1;
+        } else if (bay == 4) {
+            return (short) 2;
+        } else if (bay == 5) {
+            return (short) 1;
+        } else {
+            return (short) 0;
+        }
+    }
+
     /**
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
@@ -102,11 +116,7 @@
             for (DevpSlave.Sta inSta : devp.getInSta()) {
                 // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                 BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
-                if (barcodeThread == null) {
-                    continue;
-                }
-
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                 if (staProtocol == null) {
@@ -115,23 +125,81 @@
                     staProtocol = staProtocol.clone();
                 }
 
+                if (barcodeThread == null) {
+                    continue;
+                }
+                String barcode = barcodeThread.getBarcode();
+                // 灏哄妫�娴嬪紓甯�
+                boolean back = false;
+                String errMsg = "";
+                if (staProtocol.isFrontErr()) {
+                    errMsg = "鍓嶈秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isBackErr()) {
+                    errMsg = "鍚庤秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isHighErr()) {
+                    errMsg = "楂樿秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isLeftErr()) {
+                    errMsg = "宸﹁秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isRightErr()) {
+                    errMsg = "鍙宠秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isWeightErr()) {
+                    errMsg = "瓒呴噸";
+                    back = true;
+                }
+                if (!back && staProtocol.isBarcodeErr()) {
+                    errMsg = "鎵爜澶辫触";
+                    back = true;
+                }
+
+                // 閫�鍥�
+                if (back) {
+                    log.info("errmsg: " + errMsg);
+//                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+                    if (!staProtocol.isLoading()) {
+                        continue;
+                    }
+                    if (!staProtocol.isPakMk()) {
+                        continue;
+                    }
+                    staProtocol.setWorkNo((short) 9999);
+                    News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, (short) 9999);
+                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    log.error("杈撻�佺嚎涓嬪彂1锛�" + 9999 + "," + inSta.getBackSta());
+                }
+
+
+
+
                 //LED
-                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                //LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                 // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
 //                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
 //                    continue;
 //                }
-
+                //System.out.println(staProtocol);
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (!staProtocol.isLoading()){
+                if (!staProtocol.isLoading()) {
                     continue;
                 }
                 String barcode11 = barcodeThread.getBarcode();
-                if (Cools.isEmpty(barcode11)){
-                    if (staProtocol.isAutoing()&& !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 9999 && staProtocol.isPakMk() && staProtocol.getStamp()==2){
+                if (Cools.isEmpty(barcode11)) {
+                    if (staProtocol.isAutoing() && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 9999 && staProtocol.isPakMk() && staProtocol.getStamp() == 2) {
                         staProtocol.setStamp(3);
-                        News.info(""+mark+" - 7"+" - 鎵爜澶辫触2 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode11, inSta.getStaNo());
+                        News.info("" + mark + " - 7" + " - 鎵爜澶辫触2 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode11, inSta.getStaNo());
                         staProtocol.setWorkNo((short) 9989);
                         staProtocol.setStaNo(inSta.getBackSta().shortValue());
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -146,22 +214,22 @@
                 }
                 if (staProtocol.isAutoing() && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990)
-                        && staProtocol.isPakMk() && staProtocol.getStamp()>=2 && staProtocol.getStamp()!=3) {// && !Cools.isEmpty(barcode)) {
-                    News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
+                        && staProtocol.isPakMk() && staProtocol.getStamp() >= 2 && staProtocol.getStamp() != 3) {// && !Cools.isEmpty(barcode)) {
+                    News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
 //                    try {
 //                        Thread.sleep(300);
 //                    }catch (Exception e){}
 
-                    String barcode = barcodeThread.getBarcode();
-                    if(!Cools.isEmpty(barcode)) {
-                        News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+                    //String barcode = barcodeThread.getBarcode();
+                    if (!Cools.isEmpty(barcode)) {
+                        News.info("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
                             staProtocol.setWorkNo((short) 9999);
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
 
-                            News.info(""+mark+" - 2"+" - 鎵爜澶辫触1 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode, inSta.getStaNo());
+                            News.info("" + mark + " - 2" + " - 鎵爜澶辫触1 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode, inSta.getStaNo());
                             // led 寮傚父鏄剧ず
                             if (ledThread != null) {
                                 String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
@@ -175,7 +243,7 @@
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
 
-                        News.info(""+mark+" - 3"+" - 鎵爜澶辫触2 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode, inSta.getStaNo());
+                        News.info("" + mark + " - 3" + " - 鎵爜澶辫触2 ===>> {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{},绔欑偣:{}", inSta.getBarcode(), barcode, inSta.getStaNo());
                         // led 寮傚父鏄剧ず
                         if (ledThread != null) {
                             String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
@@ -188,14 +256,14 @@
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                     //杩囨护鍒ゆ柇锛岄槻姝㈡嫞鏂欏啀鍏ュ簱璐х墿锛岀粡杩囧叆搴撶珯鍐嶅叆搴撴椂锛岃閫�鍥炲埌閫�搴撶珯
                     WrkMast wrkMast1 = wrkMastMapper.selectPakInStepBarcode(barcode);
-                    if (wrkMast1 !=null){
-                        if (wrkMast1.getIoType()==103 || wrkMast1.getIoType()==107 || wrkMast1.getIoType()==104){
+                    if (wrkMast1 != null) {
+                        if (wrkMast1.getIoType() == 103 || wrkMast1.getIoType() == 107 || wrkMast1.getIoType() == 104) {
                             continue;
                         }
                     }
                     if (wrkMast != null) {
-                        News.error(""+mark+" - 4"+" - 宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        staProtocol.setWorkNo((short)9999);
+                        News.error("" + mark + " - 4" + " - 宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+                        staProtocol.setWorkNo((short) 9999);
                         staProtocol.setStaNo(inSta.getBackSta().shortValue());
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -219,6 +287,14 @@
                         param.setIoType(1);
                         param.setSourceStaNo(inSta.getStaNo());
                         param.setLocType1(locTypeDto.getLocType1());
+                        if (inSta.getStaNo() == 102) {
+                            param.setLocType2((short) 3);
+                        } else if (inSta.getStaNo() == 211) {
+                            param.setLocType1((short) 5);
+                            param.setLocType2((short) 4);
+                        } else if (inSta.getStaNo() == 201) {
+                            param.setLocType2((short) 4);
+                        }
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
                                 .setPath("/rpc/pakin/loc/v1")
@@ -254,8 +330,8 @@
 //                                ledThread.errorReset();
                             }
                         } else {
-                            News.error(""+mark+" - 5"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
-                            staProtocol.setWorkNo((short)9999);
+                            News.error("" + mark + " - 5" + " - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                            staProtocol.setWorkNo((short) 9999);
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -275,15 +351,15 @@
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     }
 
-                }else {
-                    News.errorNoLog(""+mark+" - 6"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isAutoing()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
-                            +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk()+"銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
+                } else {
+                    News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isAutoing() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+                            + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk() + "銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
+                            + "銆侀攣瀹氭爣璁�" + staProtocol.isPakMk() + "銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
                 }
 
             }
         }
-        News.infoNoLog(""+mark+" - 0"+" - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
 
     }
 
@@ -311,13 +387,13 @@
                 }
 
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (!staProtocol.isLoading()){
+                if (!staProtocol.isLoading()) {
                     continue;
                 }
                 if (staProtocol.isAutoing() && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
                         && staProtocol.isPakMk()) {
-                    News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
+                    News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo());
                     if (wrkMast == null) {
@@ -336,20 +412,20 @@
                         wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
                         wrkMast.setModiTime(new Date());
                         if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+                            News.error("" + mark + " - 1" + " - 鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
                         }
                     } else {
-                        News.error(""+mark+" - 2"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                        News.error("" + mark + " - 2" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
                     }
 
-                }else {
-                    News.errorNoLog(""+mark+" - 6"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isLoading()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
-                            +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk()+"銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
+                } else {
+                    News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+                            + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk() + "銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
+                            + "銆侀攣瀹氭爣璁�" + staProtocol.isPakMk() + "銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
                 }
             }
         }
-        News.infoNoLog(""+mark+" - 0"+" - wms鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - wms鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
 
     }
 
@@ -366,9 +442,9 @@
                     continue;
                 }
                 String barcode = barcodeThread.getBarcode();
-                if(!Cools.isEmpty(barcode)) {
-                    News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                if (!Cools.isEmpty(barcode)) {
+                    News.info("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                         continue;
                     }
                 } else {
@@ -388,7 +464,7 @@
 //                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
 
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
-                    News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
+                    News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
                     WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
 //                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
                     if (wrkMast == null) {
@@ -416,16 +492,16 @@
                             .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
                     StaDesc staDesc = staDescService.getOne(wrapper);
                     if (Cools.isEmpty(staDesc)) {
-                        News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+                        News.error("" + mark + " - 2" + " - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
                         staProtocol.setWorkNo((short) 9989);
-                        staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
+                        staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue() - (short) 1));
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                         //LED
                         LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
                         // led 寮傚父鏄剧ず
                         if (ledThread != null) {
-                            String errorMsg = "姝や负鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱.璇锋斁鍦�"+pickSta.getBackSta().shortValue()+"绔欑偣";
+                            String errorMsg = "姝や负鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱.璇锋斁鍦�" + pickSta.getBackSta().shortValue() + "绔欑偣";
                             MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errorMsg));
                         }
                         continue;
@@ -477,18 +553,18 @@
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     if (!result) {
-                        News.error(""+mark+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                        News.error("" + mark + " - 3" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
                     }
 
-                }else {
-                    News.errorNoLog(""+mark+" - 6"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isLoading()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk());
+                } else {
+                    News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+                            + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk());
                 }
 
             }
 
         }
-        News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
     }
 
     /**
@@ -528,7 +604,7 @@
                     if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
                             && crnProtocol.statusType == CrnStatusType.WAITING
                             && crnProtocol.forkPosType == CrnForkPosType.HOME) {
-                        News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
+                        News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
 
                         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
@@ -544,23 +620,31 @@
                         wrkMast.setCrnEndTime(new Date());
                         if (wrkMastMapper.updateById(wrkMast) != 0) {
                             // 澶嶄綅鍫嗗灈鏈�
-                            crnThread.setResetFlag(true);
+                            Short mode = crnProtocol.getMode();
+                            if (mode == 1) {
+                                crnThread.setResetFlag(true);
+                            } else if (mode == 2) {
+                                crnThread.setResetFlagTwo(true);
+                            } else if (mode == 3) {
+                                crnThread.setResetFlag(true);
+                                crnThread.setResetFlagTwo(true);
+                            }
                         } else {
-                            News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+                            News.error("" + mark + " - 1" + " - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
                         }
 
-                    }else {
-                        News.errorNoLog(""+mark+" - 6"+" - 鍫嗗灈鏈轰俊鎭笉绗﹀悎鍏ュ簱鏉′欢锛侊紒锛�"
-                                +" 鍫嗗灈鏈虹姸鎬侊細"+crnProtocol.modeType+"==鑷姩AUTO锛�" + CrnModeType.AUTO
-                                +"銆佸爢鍨涙満浠诲姟鍙凤細"+crnProtocol.getTaskNo()+"==宸ヤ綔妗d换鍔″彿锛�" + wrkMast.getWrkNo().shortValue()
-                                +"銆佺姸鎬佹灇涓撅細"+crnProtocol.statusType+"==WAITING锛�90 //浠诲姟瀹屾垚绛夊緟WCS纭)锛�" + CrnStatusType.WAITING
-                                +"銆佽揣鍙変綅缃細"+crnProtocol.forkPosType+"==HOME锛�0  // 璐у弶鍘熶綅锛�" + CrnForkPosType.HOME);
+                    } else {
+                        News.errorNoLog("" + mark + " - 6" + " - 鍫嗗灈鏈轰俊鎭笉绗﹀悎鍏ュ簱鏉′欢锛侊紒锛�"
+                                + " 鍫嗗灈鏈虹姸鎬侊細" + crnProtocol.modeType + "==鑷姩AUTO锛�" + CrnModeType.AUTO
+                                + "銆佸爢鍨涙満浠诲姟鍙凤細" + crnProtocol.getTaskNo() + "==宸ヤ綔妗d换鍔″彿锛�" + wrkMast.getWrkNo().shortValue()
+                                + "銆佺姸鎬佹灇涓撅細" + crnProtocol.statusType + "==WAITING锛�90 //浠诲姟瀹屾垚绛夊緟WCS纭)锛�" + CrnStatusType.WAITING
+                                + "銆佽揣鍙変綅缃細" + crnProtocol.forkPosType + "==HOME锛�0  // 璐у弶鍘熶綅锛�" + CrnForkPosType.HOME);
                     }
 
                 }
             }
         }
-        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯  ===銆嬫墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯  ===銆嬫墽琛屽畬鎴�");
     }
 
     /**
@@ -577,7 +661,7 @@
             }
             BasCrnp basCrnp = basCrnpService.getById(crn.getId());
             if (basCrnp == null) {
-                News.error(""+mark+" - 1"+" - {}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+                News.error("" + mark + " - 1" + " - {}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
                 continue;
             }
 
@@ -585,41 +669,40 @@
 //            if(crnThread.isBackHpFlag()){
 //                continue;
 //            }
-
             // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
             if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
                     && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
+                News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
                 // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
                 if (crnProtocol.getLastIo().equals("I")) {
                     if (basCrnp.getInEnable().equals("Y")) {
                         //mark - 1 - ....
-                        this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
+                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
                         crnProtocol.setLastIo("O");
                     } else if (basCrnp.getOutEnable().equals("Y")) {
                         //mark - 2 - ....
-                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
+                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
                         crnProtocol.setLastIo("I");
                     }
                 }
                 // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
                 else if (crnProtocol.getLastIo().equals("O")) {
                     if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
+                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
                         crnProtocol.setLastIo("I");
                     } else if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
+                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
                         crnProtocol.setLastIo("O");
                     }
                 }
             }
             // 搴撲綅绉昏浆
             //mark - 3 - ....
-            this.locToLoc(crn, crnProtocol,mark);
+            this.locToLoc(crn, crnProtocol, mark);
 //            this.crnRebackHp(crnProtocol, crnThread);
 
         }
-        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
+        News.infoNoLog("" + mark + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
     }
 
     /**
@@ -681,15 +764,15 @@
     /**
      * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
      */
-    public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
-        News.warnNoLog(""+mark+" - 1"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽叆搴�");
+    public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
+        News.warnNoLog("" + mark + " - 1" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽叆搴�");
         for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
             boolean flag = false;
             // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
             StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
             if (staProtocol == null) {
-                News.infoNoLog(""+mark+" - 1"+" - 1"+" - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц)锛歴taProtocol="+staProtocol);
+                News.infoNoLog("" + mark + " - 1" + " - 1" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
                 continue;
             } else {
                 staProtocol = staProtocol.clone();
@@ -697,7 +780,7 @@
             // 鏌ヨ绔欑偣璇︾粏淇℃伅
             BasDevp staDetl = basDevpService.getById(crnStn.getStaNo());
             if (staDetl == null) {
-                News.error(""+mark+" - 1"+" - 2"+" - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
                 continue;
             }
             if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
@@ -705,27 +788,28 @@
                 flag = true;
             }
             if (!flag) {
-                News.errorNoLog(""+mark+" - 1"+" - 3"+" - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):"
-                        +"鑷姩淇″彿"+staProtocol.isAutoing()+"鏈夌墿淇″彿"+staProtocol.isLoading()
-                        +"宸ヤ綔鍙�>0"+staProtocol.getWorkNo()+"鍙叆淇″彿"+staProtocol.isInEnable()
-                        +"鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")"+staDetl.getCanining());
+                //TODO
+                News.error("" + mark + " - 1" + " - 3" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):"
+                        + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+                        + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable()
+                        + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
                 continue;
             }
             // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
             WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
             if (null == wrkMast) {
-                News.infoNoLog(""+mark+" - 1"+" - 4"+" - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+                News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
 //                log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
                 continue;
             }
             // 鑾峰彇搴撲綅淇℃伅
             LocMast locMast = locMastService.getById(wrkMast.getLocNo());
             if (locMast == null) {
-                News.error(""+mark+" - 1"+" - 5"+" - 鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
+                News.error("" + mark + " - 1" + " - 5" + " - 鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
                 continue;
             }
             if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
-                News.error(""+mark+" - 1"+" - 6"+" - 鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
+                News.error("" + mark + " - 1" + " - 6" + " - 鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
                 continue;
             }
 
@@ -734,7 +818,7 @@
 //                News.infoNoLog(""+mark+" - 1"+" - 7"+" - 鍫嗗灈鏈烘帶鍒惰繃婊�:鍫嗗灈鏈烘槸鍚︾┖闂�={}锛屼换鍔″彿={}", crnProtocol.getStatusType(),crnProtocol.getTaskNo());
                 continue;
             }
-
+            System.out.println("aas");
             // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
             if (wrkMastMapper.selectWorking(slave.getId()) != null) {
                 continue;
@@ -742,64 +826,83 @@
 
             // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
             if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
-                News.warnNoLog(""+mark+" - 1"+" - 8"+" - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}",wrkMast.getWrkNo());
+                News.warnNoLog("" + mark + " - 1" + " - 8" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
                 String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
                 LocMast shallowLoc = locMastService.getById(shallowLocNo);
                 // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
                 if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                    News.warnNoLog(""+mark+" - 1"+" - 9"+" - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}",shallowLoc.getLocSts());
+                    News.warnNoLog("" + mark + " - 1" + " - 9" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}", shallowLoc.getLocSts());
                     WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                     if (null == waitWrkMast) {
-                        News.error(""+mark+" - 1"+" - 10"+" - {}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+                        News.error("" + mark + " - 1" + " - 10" + " - {}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
                     } else {
                         waitWrkMast.setIoPri(15D);
                         waitWrkMast.setModiTime(new Date());
                         if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                            News.error(""+mark+" - 1"+" - 11"+" - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+                            News.error("" + mark + " - 1" + " - 11" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
                         }
                         continue;
                     }
 
                 } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                    News.warnNoLog(""+mark+" - 1"+" - 12"+" - // F銆丏  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
+                    News.warnNoLog("" + mark + " - 1" + " - 12" + " - // F銆丏  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
                     // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
                     if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
                         wrkMast.setUpdMk("Y");
                         wrkMast.setIoPri(14D);
                         wrkMastMapper.updateById(wrkMast);
                         // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                        moveLocForDeepLoc(slave, shallowLoc,mark);
+                        moveLocForDeepLoc(slave, shallowLoc, mark);
                         // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
 //                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
                     }
                     continue;
                 } else if (shallowLoc.getLocSts().equals("Q")) {
-                    News.warnNoLog(""+mark+" - 1"+" - 13"+" - // Q  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
+                    News.warnNoLog("" + mark + " - 1" + " - 13" + " - // Q  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
                     WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                     if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                        News.infoNoLog(""+mark+" - 1"+" - 14"+" - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}",waitWrkMast.getWrkSts());
+                        News.infoNoLog("" + mark + " - 1" + " - 14" + " - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
                         continue;
                     }
                 }
             }
-            News.warnNoLog(""+mark+" - 1"+" - 15"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
-                    ,crnStn.getRow().shortValue(),crnStn.getBay().shortValue(),crnStn.getLev().shortValue()
-                    ,locMast.getRow1().shortValue(),locMast.getBay1().shortValue(),locMast.getLev1().shortValue());
+            System.out.println("434323");
+            News.warnNoLog("" + mark + " - 1" + " - 15" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
+                    , crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue()
+                    , locMast.getRow1().shortValue(), locMast.getBay1().shortValue(), locMast.getLev1().shortValue());
 
             // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
             CrnCommand crnCommand = new CrnCommand();
             crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
             crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+            Short workMode = getWorkMode(locMast.getBay1());
+            if (workMode == 2) {
+                //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣�
+                crnCommand.setTaskMode(CrnTaskModeType.PAKOUT);
+                crnCommand.setSourcePosXTwo(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosYTwo(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZTwo(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+                crnCommand.setDestinationPosXTwo(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
+                crnCommand.setDestinationPosYTwo(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+                crnCommand.setDestinationPosZTwo(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+            } else {
+                if (workMode == 1) {
+                    crnCommand.setTaskMode(CrnTaskModeType.PAKIN);
+                } else if (workMode == 3) {
+                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE);
+                }
+                crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+                crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
+                crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+                crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+            }
 //            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+
+
             if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                News.error(""+mark+" - 1"+" - 16"+" - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                News.error("" + mark + " - 1" + " - 16" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
             } else {
 
 //                long startTime = System.currentTimeMillis();
@@ -813,26 +916,26 @@
 //                        Thread.sleep(500);
 //                    }catch(Exception ignore){}
 //                }
-
+                System.out.println("ererdfd");
                 // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
                 Date now = new Date();
                 wrkMast.setWrkSts(3L);
                 wrkMast.setCrnStrTime(now);
                 wrkMast.setModiTime(now);
                 if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    News.error(""+mark+" - 1"+" - 17"+" - 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    News.error("" + mark + " - 1" + " - 17" + " - 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                 }
             }
         }
-        News.infoNoLog(""+mark+" - 1"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍏ュ簱鎵ц瀹屾瘯");
+        News.infoNoLog("" + mark + " - 1" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍏ュ簱鎵ц瀹屾瘯");
     }
 
     /**
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
-    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
-        News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
+    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
+        News.warnNoLog("" + mark + " - 2" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
 //            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
@@ -843,20 +946,20 @@
                 }
                 // 宸ヤ綔妗g姸鎬佸垽鏂�
                 if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
-                    News.error(""+mark+" - 2"+" - 1"+" - 鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
+                    News.error("" + mark + " - 2" + " - 1" + " - 鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
                     continue;
                 }
                 // 鑾峰彇婧愬簱浣嶄俊鎭�
                 LocMast sourceSta = locMastService.getById(wrkMast.getSourceLocNo());
                 if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
-                    News.error(""+mark+" - 2"+" - 2"+" - 鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
+                    News.error("" + mark + " - 2" + " - 2" + " - 鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
                     continue;
                 }
                 // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
                 StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
                 if (staProtocol == null) {
-                    News.infoNoLog(""+mark+" - 2"+" - 3"+" - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol="+staProtocol);
+                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol);
                     break;
 //                    continue;
                 } else {
@@ -873,7 +976,7 @@
                 // 鏌ヨ绔欑偣璇︾粏淇℃伅
                 BasDevp staDetl = basDevpService.getById(crnStn.getStaNo());
                 if (staDetl == null) {
-                    News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                    News.error("" + mark + " - 2" + " - 5" + " - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
                     break;
 //                    continue;
                 }
@@ -890,12 +993,12 @@
 
                     // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
                     if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
-                        News.warnNoLog(""+mark+" - 2"+" - 6"+" - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}",wrkMast.getWrkNo());
+                        News.warnNoLog("" + mark + " - 2" + " - 6" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
                         String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
                         LocMast shallowLoc = locMastService.getById(shallowLocNo);
                         // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
                         if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                            News.warnNoLog(""+mark+" - 2"+" - 7"+" - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}",shallowLoc.getLocSts());
+                            News.warnNoLog("" + mark + " - 2" + " - 7" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}", shallowLoc.getLocSts());
                             WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                             if (null == waitWrkMast) {
                                 News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
@@ -904,7 +1007,7 @@
                                     waitWrkMast.setIoPri(15D);
                                     waitWrkMast.setModiTime(new Date());
                                     if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                        News.error(""+mark+" - 2"+" - 8"+" - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+                                        News.error("" + mark + " - 2" + " - 8" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
                                     }
                                     continue;
                                 } else {
@@ -912,7 +1015,7 @@
                                 }
                             }
                         } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                            News.warnNoLog(""+mark+" - 2"+" - 9"+" - // F銆丏  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
+                            News.warnNoLog("" + mark + " - 2" + " - 9" + " - // F銆丏  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
 //                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                             //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
                             WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
@@ -923,15 +1026,15 @@
                                 wrkMast.setUpdMk("Y");
                                 wrkMastMapper.updateById(wrkMast);
                                 // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                                moveLocForDeepLoc(slave, shallowLoc,mark);
+                                moveLocForDeepLoc(slave, shallowLoc, mark);
                             }
                             News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
                             continue;
                         } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
-                            News.warnNoLog(""+mark+" - 2"+" - 10"+" - // Q銆丼  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
+                            News.warnNoLog("" + mark + " - 2" + " - 10" + " - // Q銆丼  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
                             WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
                             if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                                News.infoNoLog(""+mark+" - 2"+" - 11"+" - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}",waitWrkMast.getWrkSts());
+                                News.infoNoLog("" + mark + " - 2" + " - 11" + " - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
                                 continue;
                             }
                         }
@@ -943,24 +1046,42 @@
 //                        return;
                     }
 
-                    News.warnNoLog(""+mark+" - 2"+" - 12"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
-                            ,sourceSta.getRow1().shortValue(),sourceSta.getBay1().shortValue(),sourceSta.getLev1().shortValue()
-                            ,crnStn.getRow().shortValue(),crnStn.getBay().shortValue(),crnStn.getLev().shortValue());
+                    News.warnNoLog("" + mark + " - 2" + " - 12" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
+                            , sourceSta.getRow1().shortValue(), sourceSta.getBay1().shortValue(), sourceSta.getLev1().shortValue()
+                            , crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue());
+
+                    String locNo = sourceSta.getLocNo();
 
                     // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
                     CrnCommand crnCommand = new CrnCommand();
                     crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
                     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(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
-                    crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
-                    crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+                    Short workMode = getWorkMode(sourceSta.getBay1());
+                    if (workMode == 2) {
+                        //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣�
+                        crnCommand.setTaskMode(CrnTaskModeType.PAKOUT);
+                        crnCommand.setSourcePosXTwo(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
+                        crnCommand.setSourcePosYTwo(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
+                        crnCommand.setSourcePosZTwo(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
+                        crnCommand.setDestinationPosXTwo(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
+                        crnCommand.setDestinationPosYTwo(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
+                        crnCommand.setDestinationPosZTwo(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+                    } else {
+                        if (workMode == 1) {
+                            crnCommand.setTaskMode(CrnTaskModeType.PAKIN);
+                        } else if (workMode == 3) {
+                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE);
+                        }
+                        crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
+                        crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
+                        crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
+                        crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
+                        crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
+                        crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+                    }
+
                     if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error(""+mark+" - 2"+" - 13"+" - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                     } else {
                         // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
                         Date now = new Date();
@@ -968,14 +1089,14 @@
                         wrkMast.setCrnStrTime(now);
                         wrkMast.setModiTime(now);
                         if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.error(""+mark+" - 2"+" - 14"+" - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
                         }
                         break;
                     }
                 }
             }
         }
-        News.infoNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
+        News.infoNoLog("" + mark + " - 2" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
     }
 
 //    /**
@@ -1098,17 +1219,17 @@
     /**
      * 搴撲綅绉昏浆
      */
-    public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
+    public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
         // 鑾峰彇宸ヤ綔妗d俊鎭�
         WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
         if (null == wrkMast) {
             return;
         }
-        News.warnNoLog(""+mark+" - 3"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽簱浣嶇Щ杞�");
+        News.warnNoLog("" + mark + " - 3" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽簱浣嶇Щ杞�");
         // 鑾峰彇婧愬簱浣嶄俊鎭�
         LocMast sourceSta = locMastService.getById(wrkMast.getSourceLocNo());
         if (null == sourceSta) {
-            News.error(""+mark+" - 3"+" - 1"+" - 宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+            News.error("" + mark + " - 3" + " - 1" + " - 宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
             return;
         }
         // 婧愬簱浣�  搴撲綅鐘舵�佸垽鏂�
@@ -1118,7 +1239,7 @@
         // 鑾峰彇鐩爣搴撲綅淇℃伅
         LocMast sta = locMastService.getById(wrkMast.getLocNo());
         if (null == sta) {
-            News.error(""+mark+" - 3"+" - 2"+" - 宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
+            News.error("" + mark + " - 3" + " - 2" + " - 宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
             return;
         }
         // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑�
@@ -1137,24 +1258,40 @@
             return;
         }
 
-        News.warnNoLog(""+mark+" - 3"+" - 3"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
-                ,sourceSta.getRow1().shortValue(),sourceSta.getBay1().shortValue(),sourceSta.getLev1().shortValue()
-                ,sta.getRow1().shortValue(),sta.getBay1().shortValue(),sta.getLev1().shortValue());
+        News.warnNoLog("" + mark + " - 3" + " - 3" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
+                , sourceSta.getRow1().shortValue(), sourceSta.getBay1().shortValue(), sourceSta.getLev1().shortValue()
+                , sta.getRow1().shortValue(), sta.getBay1().shortValue(), sta.getLev1().shortValue());
 
         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
         CrnCommand crnCommand = new CrnCommand();
         crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
         crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+        Short workMode = getWorkMode(sourceSta.getBay1());
         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());     // 鐩爣搴撲綅灞�
+        if (workMode == 2) {
+            //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣�
+            crnCommand.setSourcePosXTwo(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
+            crnCommand.setSourcePosYTwo(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
+            crnCommand.setSourcePosZTwo(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
+            crnCommand.setDestinationPosXTwo(sta.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
+            crnCommand.setDestinationPosYTwo(sta.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+            crnCommand.setDestinationPosZTwo(sta.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+        } else {
+            if (workMode == 1) {
+                crnCommand.setTaskMode(CrnTaskModeType.PAKIN);
+            } else if (workMode == 3) {
+                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());     // 鐩爣搴撲綅灞�
+        }
+
         if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-            News.error(""+mark+" - 3"+" - 4"+" - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+            News.error("" + mark + " - 3" + " - 4" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
         } else {
             // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
             Date now = new Date();
@@ -1162,10 +1299,10 @@
             wrkMast.setCrnStrTime(now);
             wrkMast.setModiTime(now);
             if (wrkMastMapper.updateById(wrkMast) == 0) {
-                News.error(""+mark+" - 3"+" - 5"+" - 銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                News.error("" + mark + " - 3" + " - 5" + " - 銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
             }
         }
-        News.infoNoLog(""+mark+" - 3"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氬簱浣嶇Щ杞畬鎴�");
+        News.infoNoLog("" + mark + " - 3" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氬簱浣嶇Щ杞畬鎴�");
 
     }
 
@@ -1183,15 +1320,23 @@
             }
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
+                News.warn("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
                 if (crnProtocol.getTaskNo() == 9999) {
                     // 鍫嗗灈鏈哄浣�
-                    crnThread.setResetFlag(true);
+                    Short mode = crnProtocol.getMode();
+                    if (mode == 1) {
+                        crnThread.setResetFlag(true);
+                    } else if (mode == 2) {
+                        crnThread.setResetFlagTwo(true);
+                    } else if (mode == 3) {
+                        crnThread.setResetFlag(true);
+                        crnThread.setResetFlagTwo(true);
+                    }
                 } else {
                     // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
                     if (wrkMast == null) {
-                        News.error(""+mark+" - 1"+" - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+                        News.error("" + mark + " - 1" + " - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
                         continue;
                     }
                     // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
@@ -1206,14 +1351,22 @@
                     // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
                     if (wrkMastMapper.updateById(wrkMast) > 0) {
                         // 鍫嗗灈鏈哄浣�
-                        News.warnNoLog(""+mark+" - 2"+" - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}",crnThread.getCrnProtocol().getCrnNo());
-                        crnThread.setResetFlag(true);
+                        News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
+                        Short mode = crnProtocol.getMode();
+                        if (mode == 1) {
+                            crnThread.setResetFlag(true);
+                        } else if (mode == 2) {
+                            crnThread.setResetFlagTwo(true);
+                        } else if (mode == 3) {
+                            crnThread.setResetFlag(true);
+                            crnThread.setResetFlagTwo(true);
+                        }
                     }
                 }
 
             }
         }
-        News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
     }
 
     /**
@@ -1236,7 +1389,7 @@
                     BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue());
                     // 鏈夊紓甯�
                     if (latest == null) {
-                        News.warnNoLog(""+mark+" - 1"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
+                        News.warnNoLog("" + mark + " - 1" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
                         if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
                             WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
                             if (wrkMast == null) {
@@ -1268,7 +1421,7 @@
                                     "浠诲姟涓紓甯�"    // 澶囨敞
                             );
                             if (!basErrLogService.save(basErrLog)) {
-                                News.error(""+mark+" - 2"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+                                News.error("" + mark + " - 2" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
                             }
                         }
                     } else {
@@ -1278,7 +1431,7 @@
                             latest.setUpdateTime(now);
                             latest.setStatus(2);
                             if (!basErrLogService.updateById(latest)) {
-                                News.error(""+mark+" - 3"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+                                News.error("" + mark + " - 3" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
                             }
                         }
                     }
@@ -1287,7 +1440,7 @@
                     BasErrLog latest = basErrLogService.findLatest(crn.getId());
                     // 鏈夊紓甯�
                     if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
-                        News.warnNoLog(""+mark+" - 4"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏃犱换鍔★紝鏈夊紓甯�");
+                        News.warnNoLog("" + mark + " - 4" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏃犱换鍔★紝鏈夊紓甯�");
                         // 璁板綍鏂板紓甯�
                         if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
                             BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
@@ -1316,7 +1469,7 @@
                                     "鏃犱换鍔″紓甯�"    // 澶囨敞
                             );
                             if (!basErrLogService.save(basErrLog)) {
-                                News.error(""+mark+" - 5"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+                                News.error("" + mark + " - 5" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
                             }
                         }
                         // 鏃犲紓甯�
@@ -1327,7 +1480,7 @@
                             latest.setUpdateTime(now);
                             latest.setStatus(2);
                             if (!basErrLogService.updateById(latest)) {
-                                News.error(""+mark+" - 6"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+                                News.error("" + mark + " - 6" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
                             }
                         }
                     }
@@ -1335,7 +1488,7 @@
             }
 
         }
-        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
     }
 
 
@@ -1359,11 +1512,11 @@
                 }
 
                 LedThread ledThread = null;
-                if (!Cools.isEmpty(emptyInSta.getLed()))  {
+                if (!Cools.isEmpty(emptyInSta.getLed())) {
                     ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed());
                 }
 
-                if (!staProtocol.isLoading()){
+                if (!staProtocol.isLoading()) {
                     continue;
                 }
 
@@ -1372,8 +1525,8 @@
                         && staProtocol.isInEnable()
                         && staProtocol.isEmptyMk()
                         && (staProtocol.getWorkNo() > 9990 && staProtocol.getWorkNo() <= 9999)
-                        && staProtocol.isPakMk()&& staProtocol.getStamp()>=2) {
-                    News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
+                        && staProtocol.isPakMk() && staProtocol.getStamp() >= 2) {
+                    News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
 
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -1382,6 +1535,14 @@
                         param.setIoType(10);
                         param.setSourceStaNo(emptyInSta.getStaNo());
                         param.setLocType1(locTypeDto.getLocType1());
+                        if (emptyInSta.getStaNo() == 102) {
+                            param.setLocType2((short) 3);
+                        } else if (emptyInSta.getStaNo() == 211) {
+                            param.setLocType1((short) 5);
+                            param.setLocType2((short) 4);
+                        } else if (emptyInSta.getStaNo() == 201) {
+                            param.setLocType2((short) 4);
+                        }
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
                                 .setPath("/rpc/pakin/loc/v1")
@@ -1398,7 +1559,7 @@
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             if (!result) {
-                                News.errorNoLog(""+mark+" - 1"+" - 鏇存柊plc绔欑偣淇℃伅澶辫触");
+                                News.errorNoLog("" + mark + " - 1" + " - 鏇存柊plc绔欑偣淇℃伅澶辫触");
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
 
@@ -1417,12 +1578,12 @@
 //                                ledThread.errorReset();
                             }
                         } else {
-                            staProtocol.setWorkNo((short)9999);
+                            staProtocol.setWorkNo((short) 9999);
                             staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             if (!result) {
-                                News.errorNoLog(""+mark+" - 2"+" - 鏇存柊plc绔欑偣淇℃伅澶辫触");
+                                News.errorNoLog("" + mark + " - 2" + " - 鏇存柊plc绔欑偣淇℃伅澶辫触");
                                 throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }
 
@@ -1432,7 +1593,7 @@
                                     MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(5, errorMsg));
                                 }
                             }
-                            News.error(""+mark+" - 3"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                            News.error("" + mark + " - 3" + " - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                         }
                     } catch (Exception e) {
                         e.printStackTrace();
@@ -1440,13 +1601,13 @@
                     }
 
                 } else {
-                    News.errorNoLog(""+mark+" - 4"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isAutoing()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
-                            +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk());
+                    News.errorNoLog("" + mark + " - 4" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isAutoing() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+                            + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk() + "銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
+                            + "銆侀攣瀹氭爣璁�" + staProtocol.isPakMk());
                 }
             }
         }
-        News.infoNoLog(""+mark+" - 0"+" - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
     }
 
     /**
@@ -1475,7 +1636,7 @@
                 if (null == wrkMast) {
                     continue;
                 }
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
+                News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
                 wrkMasts.add(wrkMast);
                 // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
@@ -1506,7 +1667,7 @@
                         ledCommand.setEmptyMk(true);
                         break;
                     default:
-                        News.error(""+mark+" - 1"+" - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                        News.error("" + mark + " - 1" + " - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
@@ -1515,7 +1676,7 @@
 //                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.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getSpecs())));
+                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getSpecs())));
                 }
                 commands.add(ledCommand);
             }
@@ -1550,7 +1711,7 @@
                 if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
                     News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                     continue;
-                }else {
+                } else {
                     ledThread.setLedMk(false);
                 }
             }
@@ -1561,7 +1722,7 @@
                     wrkMast.setOveMk("Y");
                     wrkMast.setModiTime(new Date());
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.errorNoLog(""+mark+" - 4"+" - 鏇存柊宸ヤ綔妗eけ璐�");
+                        News.errorNoLog("" + mark + " - 4" + " - 鏇存柊宸ヤ綔妗eけ璐�");
                         throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
                     }
                 }
@@ -1575,7 +1736,7 @@
             }
 
         }
-        News.infoNoLog(""+mark+" - 0"+" - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
     }
 
     /**
@@ -1583,7 +1744,7 @@
      */
     public synchronized void ledReset(Integer mark) {
 
-        News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
+        News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�:鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
         for (LedSlave led : slaveProperties.getLed()) {
 
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
@@ -1607,13 +1768,13 @@
             if (reset && !ledThread.isLedMk()) {
                 ledThread.setLedMk(true);
                 if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
-                    News.error(""+mark+" - 1"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    News.error("" + mark + " - 1" + " - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                 } else {
 
                 }
             }
         }
-        News.infoNoLog(""+mark+" - 0"+" - 鎵ц瀹屾垚锛氬叾浠�  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
+        News.infoNoLog("" + mark + " - 0" + " - 鎵ц瀹屾垚锛氬叾浠�  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅");
     }
 
     /**
@@ -1696,15 +1857,15 @@
      * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
      * tip锛氬悓姝�
      */
-    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) {
+    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc, Integer mark) {
 
         try {
-            News.warnNoLog(""+mark+"moveLocForDeepLoc"+" - 0"+" - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
+            News.warnNoLog("" + mark + "moveLocForDeepLoc" + " - 0" + " - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
             List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
             LocMast loc = null;
             for (Integer row : rows) {
                 if (Utils.isDeepLoc(slaveProperties, row)) {
-                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
+                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(), shallowLoc.getLocType2());
 
                     if (loc != null) {
                         if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) {
@@ -1723,7 +1884,7 @@
             if (null == loc) {
                 for (Integer row : rows) {
                     if (Utils.isShallowLoc(slaveProperties, row)) {
-                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
+                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(), shallowLoc.getLocType2());
 
                         if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱
                             String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());
@@ -1741,7 +1902,7 @@
             }
 
             if (null == loc) {
-                News.error(""+mark+"moveLocForDeepLoc"+" - 1"+" - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+                News.error("" + mark + "moveLocForDeepLoc" + " - 1" + " - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
                 throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
             }
 
@@ -1767,7 +1928,7 @@
             wrkMast.setModiTime(new Date());
             int res = wrkMastMapper.insert(wrkMast);
             if (res == 0) {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 2"+" - 淇濆瓨宸ヤ綔妗eけ璐�");
+                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 2" + " - 淇濆瓨宸ヤ綔妗eけ璐�");
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
             }
             // 宸ヤ綔妗f槑缁嗕繚瀛�
@@ -1782,7 +1943,7 @@
                     wrkDetl.setAppeTime(new Date());
                     wrkDetl.setModiTime(new Date());
                     if (!wrkDetlService.save(wrkDetl)) {
-                        News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 3"+" - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                        News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                         throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                     }
                 }
@@ -1792,11 +1953,11 @@
                 shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
                 shallowLoc.setModiTime(new Date());
                 if (!locMastService.updateById(shallowLoc)) {
-                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 4"+" - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
                     throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
                 }
             } else {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 5"+" - 婧愬簱浣嶅嚭搴撳け璐�");
+                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
                 throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
             }
             // 淇敼鐩爣搴撲綅鐘舵��
@@ -1804,15 +1965,15 @@
                 loc.setLocSts("S"); // S.鍏ュ簱棰勭害
                 loc.setModiTime(new Date());
                 if (!locMastService.updateById(loc)) {
-                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 6"+" - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
                     throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
                 }
             } else {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 7"+" - 绉昏浆澶辫触");
+                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
                 throw new CoolException("绉昏浆澶辫触");
             }
         } catch (Exception e) {
-            News.error(""+mark+"moveLocForDeepLoc"+" - 8"+" - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
+            News.error("" + mark + "moveLocForDeepLoc" + " - 8" + " - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
             e.printStackTrace();
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }
@@ -2035,18 +2196,18 @@
     public synchronized void outOfDevp(Integer mark) {
 
         List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
-        if (wrkMasts.size()!=0){
-            News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛宱utOfDevp");
+        if (wrkMasts.size() != 0) {
+            News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛宱utOfDevp");
         }
         for (WrkMast wrkMast : wrkMasts) {
             if (basDevpService.count(new QueryWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
                 wrkMast.setCtnNo("Y");
                 if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    News.error(""+mark+" - 1"+" - 淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
+                    News.error("" + mark + " - 1" + " - 淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
                 }
             }
         }
-        News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚");
+        News.infoNoLog("" + mark + " - 0" + " - outOfDevp鎵ц瀹屾垚");
     }
 
 
@@ -2080,7 +2241,7 @@
                     JSONObject data = (JSONObject) jsonObject.get("data");
                     News.info((String) data.get("msg"));
                 } else {
-                    News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
+                    News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1", "", response);
                 }
             } catch (Exception e) {
                 e.printStackTrace();

--
Gitblit v1.9.1