From 29ccba30133dec6ec0516c0782da5fe7d046848d Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期四, 16 十月 2025 10:00:14 +0800
Subject: [PATCH] wcs功能完善

---
 src/main/java/com/zy/service/impl/MainServiceImpl.java | 2164 +++++++++-------------------------------------------------
 1 files changed, 339 insertions(+), 1,825 deletions(-)

diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index 3562bc7..91d91dd 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -5,39 +5,33 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
-import com.core.common.DateUtils;
 import com.core.exception.CoolException;
-import com.zy.entity.*;
-import com.zy.mapper.*;
-import com.zy.service.*;
-import com.zy.utils.RouteUtils;
-import com.zy.utils.Utils;
-import com.zy.utils.VersionUtils;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MatDto;
 import com.zy.common.model.SearchLocParam;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
-import com.zy.utils.CollectionUtils;
-import com.zy.utils.HttpHandler;
-import com.zy.utils.News;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.*;
-import com.zy.core.model.*;
+import com.zy.core.model.CrnSlave;
+import com.zy.core.model.DevpSlave;
+import com.zy.core.model.LedSlave;
+import com.zy.core.model.Task;
 import com.zy.core.model.command.CrnCommand;
 import com.zy.core.model.command.LedCommand;
-import com.zy.core.model.command.RgvCommand;
 import com.zy.core.model.protocol.CrnProtocol;
-import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.BarcodeThread;
 import com.zy.core.thread.LedThread;
-import com.zy.core.thread.RgvThread;
 import com.zy.core.thread.SiemensDevpThread;
+import com.zy.entity.*;
+import com.zy.mapper.*;
+import com.zy.service.*;
+import com.zy.utils.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -45,6 +39,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import javax.annotation.Resource;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -56,8 +51,6 @@
 @Service("mainService")
 @Transactional
 public class MainServiceImpl {
-
-    public static final long COMMAND_TIMEOUT = 5 * 1000;
 
     @Autowired
     private CommonService commonService;
@@ -94,16 +87,19 @@
     @Autowired
     private BasRgvMapService basRgvMapService;
 
+    @Resource
+    private BasDevpErrLogService basDevpErrLogService;
+
     @Value("${wms.url}")
     private String wmsUrl;
 
-    public Integer wrkNo = 10000;
+    public Integer wrkNo = 9997;
 
     /**
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
      */
-    public synchronized void generateStoreWrkFile(Integer mark) {
+    public synchronized void generateStoreWrkFile() {
         String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
         // 鏍规嵁杈撻�佺嚎plc閬嶅巻
         for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -127,13 +123,7 @@
                 // 灏哄妫�娴嬪紓甯�
                 boolean back = false;
                 String errMsg = "";
-                if ((staProtocol.getSiteId() == 101 && devpThread.ioModeOf101 == IoModeType.PAKOUT_MODE)
-                ||(staProtocol.getSiteId() == 103 && devpThread.ioModeOf103 == IoModeType.PAKOUT_MODE)
-                ||(staProtocol.getSiteId() == 305 && devpThread.ioModeOf305 == IoModeType.PAKOUT_MODE)) {
-                    errMsg = "褰撳墠涓哄嚭搴撴ā寮�";
-                    back = true;
-                }
-                if (!back && staProtocol.isFrontErr()) {
+                if (staProtocol.isFrontErr()) {
                     errMsg = "鍓嶈秴闄�";
                     back = true;
                 }
@@ -157,28 +147,20 @@
                     errMsg = "瓒呴噸";
                     back = true;
                 }
-                if (!back && staProtocol.isBarcodeErr()) {
+                if (!back && (staProtocol.isBarcodeErr()||Cools.isEmpty(barcode))) {
                     errMsg = "鎵爜澶辫触";
                     back = true;
                 }
                 // 閫�鍥�
-                if (back) {
-//                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+                if (back && staProtocol.getWorkNo() == 9999 && staProtocol.isInEnable() && staProtocol.isLoading() && staProtocol.isPakMk()) {
                     MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
-
-                    if (!staProtocol.isLoading()){
-                        continue;
-                    }
-                    if (!staProtocol.isPakMk()) {
-                        continue;
-                    }
                     staProtocol.setWorkNo(wrkNo);
                     News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
-                    wrkNo++;
                     staProtocol.setStaNo(inSta.getBackSta().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta());
+                    return;
                 }
 
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
@@ -186,27 +168,14 @@
                         && staProtocol.isLoading()
                         && staProtocol.isInEnable()
                         && !staProtocol.isEmptyMk()
-                        && staProtocol.isPakMk()) {
+                        && staProtocol.isPakMk() && staProtocol.getWorkNo() == 9999) {
                     if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
-                        News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-
-                        staProtocol.setWorkNo(wrkNo);
-                        News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
-                        wrkNo++;
-                        staProtocol.setStaNo(inSta.getBackSta().shortValue());
-                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                        log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta());
+                        News.info("{}鏉$爜鎵弿閿欒锛歿}",barcodeThread.getSlave().getId(),barcode);
                         continue;
                     }
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                     if (wrkMast != null) {
-                        News.error(methodName + ":宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        if (ledThread != null) {
-                            News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
-                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={" + wrkMast.getWrkNo() + "}, 璇锋墜鍔ㄥ彇娑堝凡瀛樺湪宸ヤ綔妗�"));
-                        }
                         continue;
                     }
                     WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
@@ -217,7 +186,6 @@
                     }
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
                         SearchLocParam param = new SearchLocParam();
                         param.setBarcode(barcode);
                         param.setIoType(1);
@@ -229,38 +197,31 @@
                                 .setJson(JSON.toJSONString(param))
                                 .build()
                                 .doPost();
+                        log.info("鍏ュ簱璇锋眰wms鍘熷杩斿洖锛�" + response);
                         JSONObject jsonObject = JSON.parseObject(response);
                         if (jsonObject.getInteger("code").equals(200)) {
                             StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                             barcodeThread.setBarcode("");
                             staProtocol.setWorkNo(dto.getWorkNo());
-                            staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
+                            staProtocol.setStaNo(dto.getStaNo().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
                             if (!result) {
                                 News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
-
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                             }else {
                                 ledThread.errorReset();
                             }
                         } else {
                             staProtocol.setWorkNo(wrkNo);
-                            wrkNo++;
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//
-//                            if (ledThread != null) {
-                                String errorMsg = jsonObject.getString("msg");
-                                if (!Cools.isEmpty(errorMsg)) {
-                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
-                                }
-//                            }
-//                            News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                            String errorMsg = jsonObject.getString("msg");
+                            if (!Cools.isEmpty(errorMsg)) {
+                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                            }
                         }
-
 
                     } catch (Exception e) {
                         e.printStackTrace();
@@ -269,77 +230,8 @@
 
                 }
 
-
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
-
-    }
-
-    /**
-     * wms鍏ュ簱
-     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2
-     */
-    public synchronized void generateStoreWrkFile0(Integer mark) {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍏ュ簱鍙�
-            for (DevpSlave.Sta inSta : devp.getInSta()) {
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-                if (inSta.getStaNo() == 203 && devpThread.ioModeOf101 != IoModeType.PAKIN_MODE) {
-                    continue;
-                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (!staProtocol.isLoading()){
-                    continue;
-                }
-                if (staProtocol.isAutoing() && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
-                        && staProtocol.isPakMk()) {
-                    News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo());
-                    if (wrkMast == null) {
-                        continue;
-                    }
-
-                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    log.error("杈撻�佺嚎涓嬪彂3锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                    if (result) {
-                        // 鏇存柊宸ヤ綔涓绘。
-                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
-                        wrkMast.setModiTime(new Date());
-                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
-                        }
-                    } else {
-                        News.error(""+mark+" - 2"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                    }
-
-                }else {
-                    News.errorNoLog(""+mark+" - 6"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isLoading()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
-                            +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk()+"銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
-                }
-            }
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - wms鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
 
     }
 
@@ -357,7 +249,6 @@
                 }
                 String barcode = barcodeThread.getBarcode();
                 if(!Cools.isEmpty(barcode)) {
-//                    News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
                     if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                         continue;
                     }
@@ -374,13 +265,9 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
-
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo() == 9999) {
                     News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
                     WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
-//                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
                     if (wrkMast == null) {
                         // 鏃犳嫞鏂欐暟鎹�
                         continue;
@@ -390,15 +277,6 @@
                         continue;
                     }
 
-                    // 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹�
-//                    int stnNo = 0;
-//                    if (wrkMast.getStaNo() == 109) {
-//                        stnNo = 127;
-//                    } else if (wrkMast.getStaNo() == 113) {
-//                        stnNo = 128;
-//                    } else {
-//                        log.error("{}鍙蜂换鍔℃暟鎹紓甯革紒", wrkMast.getWrkNo());
-//                    }
                     // 鑾峰彇鐩爣绔�
                     Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                             .eq("type_no", wrkMast.getIoType() - 50)
@@ -407,11 +285,11 @@
                     StaDesc staDesc = staDescService.selectOne(wrapper);
                     if (Cools.isEmpty(staDesc)) {
                         News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
-                        staProtocol.setWorkNo(wrkNo++);
+                        staProtocol.setWorkNo(wrkNo);
                         staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                        log.error("杈撻�佺嚎涓嬪彂4锛�"+9989+","+(pickSta.getStaNo().shortValue()-(short)1));
+                        log.error("杈撻�佺嚎涓嬪彂4锛�"+wrkNo+","+(pickSta.getStaNo().shortValue()-(short)1));
                         //LED
                         LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
                         // led 寮傚父鏄剧ず
@@ -464,7 +342,7 @@
 
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                     staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo((short) 161);
+                    staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     log.error("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
@@ -480,167 +358,7 @@
             }
 
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
-    }
 
-
-    //鐩樼偣鍐嶅叆搴�
-    public synchronized void stnToCrnStnPick2(){
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鎷f枡鍏ュ簱鍙�
-            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
-                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk()
-//                        && staProtocol.getWorkNo() > 0
-                        && staProtocol.isPakMk()){
-
-                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-                    if (barcodeThread == null) {
-                        continue;
-                    }
-                    String barcode = barcodeThread.getBarcode();
-                    if(!Cools.isEmpty(barcode)) {
-//                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
-                            staProtocol.setWorkNo(wrkNo++);
-                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                            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());
-                            if (ledThread != null) {
-                                String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
-                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                            }
-                            continue;
-                        }
-                    } else {
-                        staProtocol.setWorkNo(wrkNo++);
-                        staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                        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());
-                        if (ledThread != null) {
-                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
-                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                        }
-                        continue;
-                    }
-
-                    WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode);
-                    if (wrkMast == null) {
-                        // 鏃犵洏鐐规暟鎹�
-                        continue;
-                    }
-
-                    // 鍑哄簱纭淇″彿浣�
-//                    if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) {
-//                        continue;
-//                    }
-//                    if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo())
-//                            || Cools.isEmpty(wrkMast.getSourceStaNo())) {
-//                        continue;
-//                    }
-
-                    //   鑾峰彇搴撲綅鍙�
-                    try {
-                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(barcode);
-                        param.setIoType(107);
-                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
-                        if (!Cools.isEmpty(locMast)){
-                            param.setLocType1(locMast.getLocType1());
-                        }else {
-                            param.setLocType1(locTypeDto.getLocType1());
-                        }
-
-                        String response = "";
-                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
-                        try {
-                            response = new HttpHandler.Builder()
-                                    .setUri(wmsUrl)
-                                    .setPath("/rpc/pakin2/loc/v1")
-                                    .setJson(JSON.toJSONString(param))
-//                                    .setTimeout(15, TimeUnit.SECONDS)
-                                    .build()
-                                    .doPost();
-                        } catch(Exception e){
-                            log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
-                            log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
-                            e.printStackTrace();
-                            continue;
-                        }
-                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
-                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
-                        if(response.equals("")) {
-                            continue;
-                        }
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
-                        Integer code = jsonObject.getInteger("code");
-                        if (code == 200) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-                            if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
-                                log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
-                            } else {
-                                log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
-                                try {
-                                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                                    staProtocol.setStaNo((short)161);
-                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                                    ledThread.errorReset();
-                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                                    if (!result) {
-                                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                                    }
-                                    log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
-                                } catch (Exception e) {
-                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
-                                    e.printStackTrace();
-                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                }
-                            }
-                        } else {
-                            staProtocol.setWorkNo(wrkNo++);
-                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (ledThread != null) {
-                                String errorMsg = jsonObject.getString("msg");
-                                if (!Cools.isEmpty(errorMsg)) {
-                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                                }
-                            }
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
-                        }
-                    } catch (Exception e) {
-                        log.error("stnToCrnStnPick2===>>fail", e);
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-
-                }
-
-            }
-
-        }
     }
 
     /**
@@ -680,26 +398,19 @@
                     if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
                             && crnProtocol.statusType == CrnStatusType.WAITING
                             && crnProtocol.forkPosType == CrnForkPosType.HOME) {
-                        News.error("鍫嗗灈鏈哄嚭搴撳畬鎴� - 寮�濮嬫墽琛�");
 
-                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-                        // 涓嬪彂绔欑偣淇℃伅
+                        // 鍛戒护涓嬪彂鍖�.鏇存柊宸ヤ綔妗g姸鎬佷负14 涓嬪彂绔欑偣淇℃伅--------------------------------------------------------------------------
+                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        wrkMast.setWrkSts(14L);
                         staProtocol.setWorkNo(wrkMast.getWrkNo());
-                        staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
+
                         if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
                             continue;
-                        }
-
-                        // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
-                        wrkMast.setWrkSts(14L);
-                        if (wrkMast.getStaNo() == 104 && wrkMast.getWrkSts() == 12L) {
-                            wrkMast.setWrkSts(16L);
                         }
                         wrkMast.setCrnEndTime(new Date());
                         if (wrkMastMapper.updateById(wrkMast) != 0) {
                             // 澶嶄綅鍫嗗灈鏈�
-                            News.error("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�", wrkMast.getWrkNo());
+                            News.info("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�,浠诲姟鍙凤細{}",wrkMast.getWrkNo());
                             crnThread.setResetFlag(true);
                         } else {
                             News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
@@ -709,14 +420,13 @@
                         News.errorNoLog(""+mark+" - 6"+" - 鍫嗗灈鏈轰俊鎭笉绗﹀悎鍏ュ簱鏉′欢锛侊紒锛�"
                                 +" 鍫嗗灈鏈虹姸鎬侊細"+crnProtocol.modeType+"==鑷姩AUTO锛�" + CrnModeType.AUTO
                                 +"銆佸爢鍨涙満浠诲姟鍙凤細"+crnProtocol.getTaskNo()+"==宸ヤ綔妗d换鍔″彿锛�" + wrkMast.getWrkNo().shortValue()
-                                +"銆佺姸鎬佹灇涓撅細"+crnProtocol.statusType+"==WAITING锛�90 //浠诲姟瀹屾垚绛夊緟WCS纭)锛�" + CrnStatusType.WAITING
+                                +"銆佺姸鎬佹灇涓撅細"+crnProtocol.statusType+"==WAITING锛�10 //浠诲姟瀹屾垚绛夊緟WCS纭)锛�" + CrnStatusType.WAITING
                                 +"銆佽揣鍙変綅缃細"+crnProtocol.forkPosType+"==HOME锛�0  // 璐у弶鍘熶綅锛�" + CrnForkPosType.HOME);
                     }
 
                 }
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯  ===銆嬫墽琛屽畬鎴�");
     }
 
     /**
@@ -736,11 +446,6 @@
                 News.error(""+mark+" - 1"+" - {}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
                 continue;
             }
-
-//            //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓�
-//            if(crnThread.isBackHpFlag()){
-//                continue;
-//            }
 
             // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
             if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
@@ -772,66 +477,8 @@
             // 搴撲綅绉昏浆
             //mark - 3 - ....
             this.locToLoc(crn, crnProtocol,mark);
-//            this.crnRebackHp(crnProtocol, crnThread);
 
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
-    }
-
-    /**
-     * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
-     */
-    public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
-//        for (CrnSlave crn : slaveProperties.getCrn()) {
-//            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-//            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-//            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-//            if (crnProtocol == null) {
-//                continue;
-//            }
-//            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
-//            if (basCrnp == null) {
-//                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
-//                continue;
-//            }
-        if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-            if (crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) {
-                return;
-            }
-
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
-            if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
-                return;
-            }
-
-            //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
-            if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
-                return;
-            }
-
-            //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
-            if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
-                return;
-            }
-            News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
-            crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
-            if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
-                News.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
-            }
-            crnThread.setBackHpFlag(true);
-        }
-//        }
     }
 
     /**
@@ -959,18 +606,6 @@
                 News.error(""+mark+" - 1"+" - 16"+" - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
             } else {
 
-//                long startTime = System.currentTimeMillis();
-//                while ((System.currentTimeMillis() - startTime) < COMMAND_TIMEOUT) {
-//
-//                    if (true) {
-//                        break;
-//                    }
-//
-//                    try{
-//                        Thread.sleep(500);
-//                    }catch(Exception ignore){}
-//                }
-
                 // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
                 Date now = new Date();
                 wrkMast.setWrkSts(3L);
@@ -992,7 +627,6 @@
         News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
-//            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
             List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
             for (WrkMast wrkMast : wrkMasts) {
                 if (wrkMast == null) {
@@ -1020,19 +654,6 @@
                     staProtocol = staProtocol.clone();
                 }
 
-//            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-//                if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-//                    News.infoNoLog(""+mark+" - 2"+" - 4"+" - 鍏ュ嚭搴撴ā寮忥紙姝ゅ鍑哄簱鏂规硶锛屽嚭搴撴ā寮忕户缁�=="+devpThread.ioModeOf2F);
-//                    continue;
-//                }
-                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-                if ((staProtocol.getSiteId() == 101 && devpThread.ioModeOf101 != IoModeType.PAKOUT_MODE)
-                   || (staProtocol.getSiteId() == 103 && devpThread.ioModeOf103 != IoModeType.PAKOUT_MODE)
-                   || (staProtocol.getSiteId() == 305 && devpThread.ioModeOf305 != IoModeType.PAKOUT_MODE)) {
-                    continue;
-                }
-
                 // 鏌ヨ绔欑偣璇︾粏淇℃伅
                 BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
                 if (staDetl == null) {
@@ -1040,11 +661,10 @@
                     break;
 //                    continue;
                 }
+
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
                 if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
                         && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
                     if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
 //                        continue;
@@ -1089,7 +709,7 @@
                                 moveLocForDeepLoc(slave, shallowLoc,mark);
                             }
                             News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
-                            continue;
+                            break;
                         } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
                             News.warnNoLog(""+mark+" - 2"+" - 10"+" - // Q銆丼  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
                             WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
@@ -1104,9 +724,6 @@
                     if (wrkMastMapper.selectWorking(slave.getId()) != null) {
                         break;
 //                        return;
-                    }
-                    if(crnStn.getStaNo() == 105) {
-                        continue;
                     }
 
                     News.warnNoLog(""+mark+" - 2"+" - 12"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
@@ -1145,123 +762,6 @@
         News.infoNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
     }
 
-//    /**
-//     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
-//     */
-//    public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
-//        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
-//            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
-//            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
-//            if (wrkMast == null) {
-//                continue;
-//            }
-//            // 宸ヤ綔妗g姸鎬佸垽鏂�
-//            if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null){
-//                log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
-//                continue;
-//            }
-//            // 鑾峰彇婧愬簱浣嶄俊鎭�
-//            LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-//            if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
-//                log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
-//                continue;
-//            }
-//            // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-//            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-//            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-//            if (staProtocol == null) {
-//                continue;
-//            } else {
-//                staProtocol = staProtocol.clone();
-//            }
-//
-////            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-////            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-//
-//
-//            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-//            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-//            if (staDetl == null) {
-//                log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-//                continue;
-//            }
-//            // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-//            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
-//                    && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-//                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//
-//                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-//                if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                    continue;
-//                }
-//
-//                // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-//                if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
-//                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
-//                    LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-//                    // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-//                    if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-//                        WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-//                        if (null == waitWrkMast) {
-//                            log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-//                        } else {
-//                            if(waitWrkMast.getWrkSts() == 11) {
-//                                waitWrkMast.setIoPri(15D);
-//                                waitWrkMast.setModiTime(new Date());
-//                                if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-//                                    log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-//                                }
-//                                continue;
-//                            } else {
-//
-//                            }
-//                        }
-//                    } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-//                        // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-//                        if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-//                            wrkMast.setUpdMk("Y");
-//                            wrkMastMapper.updateById(wrkMast);
-//                            // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-//                            moveLocForDeepLoc(slave, shallowLoc);
-//                        }
-//                        log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
-//                        continue;
-//                    }
-//                }
-//
-//                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-//                if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-//                    return;
-//                }
-//
-//                // 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());     // 鐩爣搴撲綅灞�
-//                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-//                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-//                } else {
-//                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-//                    Date now = new Date();
-//                    wrkMast.setWrkSts(12L);
-//                    wrkMast.setCrnStrTime(now);
-//                    wrkMast.setModiTime(now);
-//                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-//                        log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-//                    }
-//                }
-//            }
-//        }
-//    }
-
     /**
      * 搴撲綅绉昏浆
      */
@@ -1288,7 +788,7 @@
             News.error(""+mark+" - 3"+" - 2"+" - 宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
             return;
         }
-        if(sta.getLocType1() != sourceSta.getLocType1()){
+        if(!Objects.equals(sta.getLocType1(), sourceSta.getLocType1())){
             News.error("绉诲簱鐩爣搴撲綅绫诲瀷涓庢簮搴撲綅绫诲瀷涓嶇");
             return;
         }
@@ -1385,7 +885,6 @@
 
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
     }
 
     /**
@@ -1400,15 +899,14 @@
             if (crnProtocol == null) {
                 continue;
             }
-            if (true) {
-//            if (crnProtocol.getModeType() != CrnModeType.STOP) {
+            if (crnProtocol.getModeType() != CrnModeType.STOP) {
                 // 鏈変换鍔�
                 if (crnProtocol.getTaskNo() != 0) {
 
                     BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue());
                     // 鏈夊紓甯�
                     if (latest == null) {
-                        News.warnNoLog(""+mark+" - 1"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
+                        News.warnNoLog("" + mark + " - 1" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
                         if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
                             WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
                             if (wrkMast == null) {
@@ -1440,7 +938,7 @@
                                     "浠诲姟涓紓甯�"    // 澶囨敞
                             );
                             if (!basErrLogService.insert(basErrLog)) {
-                                News.error(""+mark+" - 2"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+                                News.error("" + mark + " - 2" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
                             }
                         }
                     } else {
@@ -1450,7 +948,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());
                             }
                         }
                     }
@@ -1459,14 +957,14 @@
                     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());
                             String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                             BasErrLog basErrLog = new BasErrLog(
                                     null,    // 缂栧彿
-                                    null,    // 宸ヤ綔鍙�
+                                    crnProtocol.getTaskNo().intValue(),    // 宸ヤ綔鍙�
                                     now,    // 鍙戠敓鏃堕棿
                                     null,    // 缁撴潫鏃堕棿
                                     null,    // 宸ヤ綔鐘舵��
@@ -1488,7 +986,7 @@
                                     "鏃犱换鍔″紓甯�"    // 澶囨敞
                             );
                             if (!basErrLogService.insert(basErrLog)) {
-                                News.error(""+mark+" - 5"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
+                                News.error("" + mark + " - 5" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
                             }
                         }
                         // 鏃犲紓甯�
@@ -1499,19 +997,14 @@
                             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());
                             }
                         }
                     }
                 }
             }
-
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
     }
-
-
-    // -------------------------------------------------------------------------------
 
     /**
      * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
@@ -1545,7 +1038,7 @@
                         && staProtocol.isInEnable()
                         && staProtocol.isEmptyMk()
                         && staProtocol.isPakMk()
-                        && (staProtocol.getWorkNo() !=0 && staProtocol.getWorkNo() > 9700)
+                        && staProtocol.getWorkNo() == 9998 // 9997 鍥為�� 9998 绌� 9999 婊�
                         ) {
                     News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
 
@@ -1592,15 +1085,15 @@
 //                                ledThread.errorReset();
                             }
                         } else {
-//                            staProtocol.setWorkNo(wrkNo++);
-//                            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绔欑偣淇℃伅澶辫触");
-//                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                            }
-//
+                            staProtocol.setWorkNo(wrkNo);
+                            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绔欑偣淇℃伅澶辫触");
+                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                            }
+
                             if (ledThread != null) {
                                 String errorMsg = jsonObject.getString("msg");
                                 if (!Cools.isEmpty(errorMsg)) {
@@ -1621,13 +1114,180 @@
                 }
             }
         }
-//        News.infoNoLog(""+mark+" - 0"+" - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
+    }
+
+    /**
+     * 杈撻�佺嚎寮傚父
+     */
+    public synchronized void recDevpErr() {
+        Date now = new Date();
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            Integer devpId = devp.getId();
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+            Map<Integer, StaProtocol> station = devpThread.getStation();
+            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
+                Integer siteNo = entry.getKey();
+                StaProtocol staProtocol = entry.getValue();
+                Integer workNo = staProtocol.getWorkNo();
+                // 杈撻�佺嚎鎶ヨ
+                String plcErr = staPlcErr(staProtocol);
+                if (staProtocol.isAutoing()) {
+                    // 鏈変换鍔�
+                    if (staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() <= 9000) {
+
+                        // 鑾峰彇杈撻�佺嚎鎶ヨ淇℃伅
+                        BasDevpErrLog latestByTaskNo = basDevpErrLogService.findLatestByTaskNo(siteNo, workNo);
+
+                        // 鏈夊紓甯�
+                        if (latestByTaskNo == null) {
+                            if (!plcErr.equals("")) {
+                                WrkMast wrkMast = wrkMastMapper.selectById(workNo);
+                                if (wrkMast == null) {
+                                    continue;
+                                }
+
+                                BasDevpErrLog basErrLog = new BasDevpErrLog(
+                                        null,    // 缂栧彿
+                                        wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
+                                        now,    // 鍙戠敓鏃堕棿
+                                        null,    // 缁撴潫鏃堕棿
+                                        wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
+                                        wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
+                                        wrkMast.getCrnNo(),    // 鍫嗗灈鏈�
+                                        devpId,    // plc
+                                        wrkMast.getLocNo(),    // 鐩爣搴撲綅
+                                        wrkMast.getStaNo(),    // 鐩爣绔�
+                                        siteNo,    // 婧愮珯
+                                        wrkMast.getSourceLocNo(),    // 婧愬簱浣�
+                                        wrkMast.getBarcode(),    // 鏉$爜
+                                        0,    // 寮傚父鐮�
+                                        plcErr,    // 寮傚父
+                                        1,    // 寮傚父鎯呭喌
+                                        now,    // 娣诲姞鏃堕棿
+                                        null,    // 娣诲姞浜哄憳
+                                        now,    // 淇敼鏃堕棿
+                                        null,    // 淇敼浜哄憳
+                                        "浠诲姟涓紓甯�"    // 澶囨敞
+                                );
+                                if (!basDevpErrLogService.insert(basErrLog)) {
+                                    News.error("杈撻�佺嚎寮傚父淇℃伅鎻掑叆琛╝sr_bas_devp_err_log寮傚父锛歿}", basErrLog);
+                                }
+                            }
+                        } else {
+                            // 寮傚父淇
+                            if (plcErr.equals("")) {
+                                latestByTaskNo.setEndTime(now);
+                                latestByTaskNo.setUpdateTime(now);
+                                latestByTaskNo.setStatus(2);
+                                if (!basDevpErrLogService.updateById(latestByTaskNo)) {
+                                    News.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latestByTaskNo);
+                                }
+                            }
+                        }
+                        // 鏃犱换鍔�
+                    } else {
+                        BasDevpErrLog latest = basDevpErrLogService.findLatest(siteNo);
+                        // 鏈夊紓甯�
+                        if (!plcErr.equals("")) {
+                            // 璁板綍鏂板紓甯�
+                            if (latest == null || !latest.getError().equals(plcErr) || latest.getStatus() == 2 ) {
+                                BasDevpErrLog basErrLog = new BasDevpErrLog(
+                                        null,    // 缂栧彿
+                                        staProtocol.getWorkNo(),    // 宸ヤ綔鍙�
+                                        now,    // 鍙戠敓鏃堕棿
+                                        null,    // 缁撴潫鏃堕棿
+                                        null,    // 宸ヤ綔鐘舵��
+                                        null,    // 鍏ュ嚭搴撶被鍨�
+                                        0,    // 鍫嗗灈鏈�
+                                        devpId,    // plc
+                                        null,    // 鐩爣搴撲綅
+                                        null,    // 鐩爣绔�
+                                        siteNo,    // 婧愮珯
+                                        null,    // 婧愬簱浣�
+                                        null,    // 鏉$爜
+                                        0,    // 寮傚父鐮�
+                                        plcErr,    // 寮傚父
+                                        1,    // 寮傚父鎯呭喌
+                                        now,    // 娣诲姞鏃堕棿
+                                        null,    // 娣诲姞浜哄憳
+                                        now,    // 淇敼鏃堕棿
+                                        null,    // 淇敼浜哄憳
+                                        "鏃犱换鍔″紓甯�"    // 澶囨敞
+                                );
+                                if (!basDevpErrLogService.insert(basErrLog)) {
+                                    News.error("杈撻�佺嚎寮傚父璁板綍asr_bas_devp_err_log寮傚父锛歿}", basErrLog);
+                                }
+                            }
+                            // 鏃犲紓甯�
+                        } else {
+                            // 寮傚父淇
+                            if (latest != null && latest.getStatus() == 1) {
+                                latest.setEndTime(now);
+                                latest.setUpdateTime(now);
+                                latest.setStatus(2);
+                                if (!basDevpErrLogService.updateById(latest)) {
+                                    News.error("杈撻�佺嚎寮傚父璁板綍淇澶辫触asr_bas_devp_err_log寮傚父锛歿}", latest);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    // 鑾峰彇杈撻�佺嚎鎶ヨ
+    public String staPlcErr(StaProtocol staProtocol){
+        Integer siteId = staProtocol.getSiteId();
+        if (staProtocol.getBreakerErr()){
+            return "鏂矾鍣ㄦ晠闅�";
+        }
+        if (staProtocol.getInfraredErr()){
+            return "鍏夌數寮傚父";
+        }
+        if (staProtocol.getOutTimeErr()){
+            return "杩愯瓒呮椂";
+        }
+        if (staProtocol.getSeizeSeatErr()){
+            return "鍗犱綅瓒呮椂";
+        }
+        if (staProtocol.getWrkYgoodsN()){
+            return "鏈変换鍔℃棤璐ф晠闅�";
+        }
+        if (staProtocol.getInverterErr()){
+            return "鍙橀鍣ㄦ晠闅�";
+        }
+        if (staProtocol.getContactErr()){
+            return "鐢垫満鎺ヨЕ鍣ㄦ晠闅�";
+        }
+        if (staProtocol.getUpcontactErr()){
+            return "椤跺崌鐢垫満鎺ヨЕ鍣ㄦ晠闅�";
+        }
+        if (staProtocol.isFrontErr()){
+            return "鍓嶈秴闄�";
+        }
+        if (staProtocol.isBackErr()){
+            return "鍚庤秴闄�";
+        }
+        if (staProtocol.isHighErr()){
+            return "楂樿秴闄�";
+        }
+        if (staProtocol.isLeftErr()){
+            return "宸﹁秴闄�";
+        }
+        if (staProtocol.isRightErr()){
+            return "鍙宠秴闄�";
+        }
+        if (staProtocol.isBarcodeErr() && siteId != 1083 && siteId != 1086 && siteId != 1089 ){
+            return "鎵爜澶辫触";
+        }
+        return "";
     }
 
     /**
      * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
      */
-    public synchronized void ledExecute(Integer mark) {
+    public synchronized void ledExecute() {
         for (LedSlave led : slaveProperties.getLed()) {
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
@@ -1679,31 +1339,16 @@
                         News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
+                ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
                 ledCommand.setBarcode(wrkMast.getBarcode());
                 if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-
-                    wrkDetls.forEach(wrkDetl -> {
-                        Double total = 0.0;
-                        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
-                        LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
-                        if (Cools.isEmpty(locDetl)) {
-                            total = wrkDetl.getAnfme();
-                        } else {
-                            total = locDetl.getAnfme();
-                        }
-                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                        if (wrkMast.getIoType() == 107) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                    });
+                    List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getOrderNo(),wrkDetl.getMatnr(),wrkDetl.getMaktx(),
+                            wrkDetl.getBatch(), wrkDetl.getSpecs(),wrkDetl.getManuDate(),wrkDetl.getModel(),wrkDetl.getAnfme())));
+                } else {
+                    ledCommand.getMatDtos().add(new MatDto("","","","","","","",1.0));
                 }
                 commands.add(ledCommand);
             }
@@ -1770,85 +1415,9 @@
                 }
                 ledThread.errorReset();
                 if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
-                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+                    News.error("鏄剧ず榛樿鍐呭{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                 }
             }
-        }
-    }
-
-    /**
-     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堝叆搴撶増)
-     * tip锛氬悓姝�
-     */
-    @Transactional
-    public synchronized void moveLocForDeepLocPakin(CrnSlave crn, LocMast shallowLoc, WrkMast pakinWrkMast) {
-        LocMast loc = locMastService.selectById(pakinWrkMast.getLocNo());
-
-        // 鑾峰彇宸ヤ綔鍙�
-        int workNo = commonService.getWorkNo(0);
-        Date now = new Date();
-        // 淇濆瓨宸ヤ綔妗�
-        WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
-        wrkMast.setIoPri(15D);
-        wrkMast.setCrnNo(crn.getId());
-        wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
-        wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-        wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
-        wrkMast.setPicking("N"); // 鎷f枡
-        wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-        wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
-        wrkMast.setLinkMis("N");
-        wrkMast.setCtnNo("Y");  // 鍏ュ簱闃诲搴撲綅绉昏浆鏍囪
-        wrkMast.setAppeTime(now);
-        wrkMast.setModiTime(now);
-        int res = wrkMastMapper.insert(wrkMast);
-        if (res == 0) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-        }
-        // 宸ヤ綔妗f槑缁嗕繚瀛�
-        if (shallowLoc.getLocSts().equals("F")) {
-            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
-            for (LocDetl locDetl : locDetls) {
-                WrkDetl wrkDetl = new WrkDetl();
-                wrkDetl.setWrkNo(workNo);
-                wrkDetl.setIoTime(now);
-                wrkDetl.setAnfme(locDetl.getAnfme());
-                VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
-                wrkDetl.setAppeTime(now);
-                wrkDetl.setModiTime(now);
-                if (!wrkDetlService.insert(wrkDetl)) {
-                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                }
-            }
-        }
-        // 淇敼婧愬簱浣嶇姸鎬�
-        if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
-            shallowLoc.setLocSts("S"); // S.鍏ュ簱棰勭害锛屽叆搴撻樆濉炲簱浣嶇Щ杞�
-            shallowLoc.setModiTime(now);
-            if (!locMastService.updateById(shallowLoc)) {
-                throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-            }
-        } else {
-            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-        }
-//        // 淇敼鐩爣搴撲綅鐘舵��
-//        if (loc.getLocSts().equals("O")) {
-//            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-//            loc.setModiTime(new Date());
-//            if (!locMastService.updateById(loc)) {
-//                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-//            }
-//        } else {
-//            throw new CoolException("绉昏浆澶辫触");
-//        }
-        wrkMast.setLocNo(shallowLoc.getLocNo());
-        if (wrkMastMapper.updateById(wrkMast) == 0) {
-            throw new CoolException("淇敼闃诲鍏ュ簱浠诲姟澶辫触");
         }
     }
 
@@ -1902,308 +1471,81 @@
 
             if (null == loc) {
                 News.error(""+mark+"moveLocForDeepLoc"+" - 1"+" - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-            }
+//                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+            } else {
 
-            // 鑾峰彇宸ヤ綔鍙�
-            int workNo = commonService.getWorkNo(0);
-            // 淇濆瓨宸ヤ綔妗�
-            WrkMast wrkMast = new WrkMast();
-            wrkMast.setWrkNo(workNo);
-            wrkMast.setIoTime(new Date());
-            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-            wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
-            wrkMast.setIoPri(13D);
-            wrkMast.setCrnNo(crn.getId());
-            wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
-            wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
-            wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
-            wrkMast.setPicking("N"); // 鎷f枡
-            wrkMast.setExitMk("N"); // 閫�鍑�
-            wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-            wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
-            wrkMast.setLinkMis("N");
-            wrkMast.setAppeTime(new Date());
-            wrkMast.setModiTime(new Date());
-            int res = wrkMastMapper.insert(wrkMast);
-            if (res == 0) {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 2"+" - 淇濆瓨宸ヤ綔妗eけ璐�");
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-            }
-            // 宸ヤ綔妗f槑缁嗕繚瀛�
-            if (shallowLoc.getLocSts().equals("F")) {
-                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
-                for (LocDetl locDetl : locDetls) {
-                    WrkDetl wrkDetl = new WrkDetl();
-                    wrkDetl.setWrkNo(workNo);
-                    wrkDetl.setIoTime(new Date());
-                    wrkDetl.setAnfme(locDetl.getAnfme());
-                    VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
-                    wrkDetl.setAppeTime(new Date());
-                    wrkDetl.setModiTime(new Date());
-                    if (!wrkDetlService.insert(wrkDetl)) {
-                        News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 3"+" - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                // 鑾峰彇宸ヤ綔鍙�
+                int workNo = commonService.getWorkNo(0);
+                // 淇濆瓨宸ヤ綔妗�
+                WrkMast wrkMast = new WrkMast();
+                wrkMast.setWrkNo(workNo);
+                wrkMast.setIoTime(new Date());
+                wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+                wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+                wrkMast.setIoPri(13D);
+                wrkMast.setCrnNo(crn.getId());
+                wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+                wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+                wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+                wrkMast.setPicking("N"); // 鎷f枡
+                wrkMast.setExitMk("N"); // 閫�鍑�
+                wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+                wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+                wrkMast.setLinkMis("N");
+                wrkMast.setAppeTime(new Date());
+                wrkMast.setModiTime(new Date());
+                int res = wrkMastMapper.insert(wrkMast);
+                if (res == 0) {
+                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 2" + " - 淇濆瓨宸ヤ綔妗eけ璐�");
+                    throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                }
+                // 宸ヤ綔妗f槑缁嗕繚瀛�
+                if (shallowLoc.getLocSts().equals("F")) {
+                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+                    for (LocDetl locDetl : locDetls) {
+                        WrkDetl wrkDetl = new WrkDetl();
+                        wrkDetl.setWrkNo(workNo);
+                        wrkDetl.setIoTime(new Date());
+                        wrkDetl.setAnfme(locDetl.getAnfme());
+                        VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+                        wrkDetl.setAppeTime(new Date());
+                        wrkDetl.setModiTime(new Date());
+                        if (!wrkDetlService.insert(wrkDetl)) {
+                            News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                            throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                        }
                     }
                 }
-            }
-            // 淇敼婧愬簱浣嶇姸鎬�
-            if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
-                shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-                shallowLoc.setModiTime(new Date());
-                if (!locMastService.updateById(shallowLoc)) {
-                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 4"+" - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                    throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                // 淇敼婧愬簱浣嶇姸鎬�
+                if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+                    shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+                    shallowLoc.setModiTime(new Date());
+                    if (!locMastService.updateById(shallowLoc)) {
+                        News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                        throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                    }
+                } else {
+                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
+                    throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
                 }
-            } else {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 5"+" - 婧愬簱浣嶅嚭搴撳け璐�");
-                throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-            }
-            // 淇敼鐩爣搴撲綅鐘舵��
-            if (loc.getLocSts().equals("O")) {
-                loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-                loc.setModiTime(new Date());
-                if (!locMastService.updateById(loc)) {
-                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 6"+" - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                    throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                // 淇敼鐩爣搴撲綅鐘舵��
+                if (loc.getLocSts().equals("O")) {
+                    loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+                    loc.setModiTime(new Date());
+                    if (!locMastService.updateById(loc)) {
+                        News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                        throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                    }
+                } else {
+                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
+                    throw new CoolException("绉昏浆澶辫触");
                 }
-            } else {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 7"+" - 绉昏浆澶辫触");
-                throw new CoolException("绉昏浆澶辫触");
             }
         } catch (Exception e) {
             News.error(""+mark+"moveLocForDeepLoc"+" - 8"+" - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
             e.printStackTrace();
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }
-    }
-
-    /**
-     * 鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆
-     */
-    public synchronized void crnDemoOfLocMove1() {
-        try {
-            for (CrnSlave crn : slaveProperties.getCrn()) {
-                if (!crn.getDemo()) {
-                    continue;
-                }   // 蹇呴』涓烘紨绀虹姸鎬�
-
-                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                if (crnProtocol == null) {
-                    continue;
-                }
-
-                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                    // 鑾峰彇绉诲簱宸ヤ綔妗d俊鎭�
-                    WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId());
-                    if (null != wrkMast) {
-                        continue;
-                    }
-
-                    LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
-                    LocMast loc = locMastService.queryDemoLoc(crn.getId());
-                    if (null == sourceLoc || null == loc) {
-                        continue;
-                    }
-
-                    String sourceLocNo = sourceLoc.getLocNo();
-                    String locNo = loc.getLocNo();
-
-                    // 鑾峰彇宸ヤ綔鍙�
-                    int workNo = commonService.getWorkNo(0);
-                    // 淇濆瓨宸ヤ綔妗�
-                    wrkMast = new WrkMast();
-                    wrkMast.setWrkNo(workNo);
-                    wrkMast.setIoTime(new Date());
-                    wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-                    wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
-                    wrkMast.setIoPri(13D);
-                    wrkMast.setCrnNo(crn.getId());
-                    wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
-                    wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-                    wrkMast.setFullPlt("N"); // 婊℃澘锛歒
-                    wrkMast.setPicking("N"); // 鎷f枡
-                    wrkMast.setExitMk("N"); // 閫�鍑�
-                    wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-                    wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
-                    wrkMast.setLinkMis("N");
-                    wrkMast.setAppeTime(new Date());
-                    wrkMast.setModiTime(new Date());
-                    int res = wrkMastMapper.insert(wrkMast);
-                    if (res == 0) {
-                        throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-                    }
-                    // 宸ヤ綔妗f槑缁嗕繚瀛�
-//                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
-//                for (LocDetl locDetl : locDetls) {
-//                    WrkDetl wrkDetl = new WrkDetl();
-//                    wrkDetl.setWrkNo(workNo);
-//                    wrkDetl.setIoTime(new Date());
-//                    wrkDetl.setAnfme(locDetl.getAnfme());
-//                    VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
-//                    wrkDetl.setAppeTime(new Date());
-//                    wrkDetl.setModiTime(new Date());
-//                    if (!wrkDetlService.insert(wrkDetl)) {
-//                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-//                    }
-//                }
-                    // 淇敼婧愬簱浣嶇姸鎬�
-                    if (sourceLoc.getLocSts().equals("D")) {
-                        sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-                        sourceLoc.setModiTime(new Date());
-                        if (!locMastService.updateById(sourceLoc)) {
-                            throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                        }
-                    } else {
-                        throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-                    }
-                    // 淇敼鐩爣搴撲綅鐘舵��
-                    if (loc.getLocSts().equals("O")) {
-                        loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-                        loc.setModiTime(new Date());
-                        if (!locMastService.updateById(loc)) {
-                            throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                        }
-                    } else {
-                        throw new CoolException("绉昏浆澶辫触");
-                    }
-
-                }
-            }
-        } catch (Exception e) {
-            News.error("鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆澶辫触", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-        }
-    }
-
-    /**
-     * 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
-     */
-    public synchronized void crnIoWrkMast() {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) {
-                continue;
-            }
-            Date now = new Date();
-            // 鍫嗗灈鏈烘鍦ㄨ繍琛�
-            if (crnProtocol.getStatusType() != CrnStatusType.IDLE && crnProtocol.getTaskNo() != 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                // 鑾峰彇宸ヤ綔妗�
-                WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
-                if (wrkMast == null) {
-                    continue;
-                }
-                // 鍏ュ簱
-                if (wrkMast.getWrkSts() == 1 || wrkMast.getWrkSts() == 2) {
-                    News.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
-                    // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
-                    wrkMast.setWrkSts(3L);
-                    wrkMast.setCrnStrTime(now);
-                    wrkMast.setModiTime(now);
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                    }
-                    News.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
-                }
-                // 鍑哄簱銆佺Щ搴�
-                if (wrkMast.getWrkSts() == 11) {
-                    News.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
-                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                    wrkMast.setWrkSts(12L);
-                    wrkMast.setCrnStrTime(now);
-                    wrkMast.setModiTime(now);
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                    }
-                    News.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
-                }
-
-
-            }
-
-        }
-    }
-
-    /**
-     * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
-     */
-    public synchronized void ioConvert() {
-        try {
-            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-            for (DevpSlave devp : slaveProperties.getDevp()) {
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                Integer[] staNos;
-                if (devp.getId() == 1) {
-                    staNos = new Integer[]{101, 103};
-                }else {
-                    staNos = new Integer[]{305};
-                }
-                for (Integer staNo : staNos) {
-                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(staNo);
-                    switch (staNo) {
-                        case 101://1F
-                            if (pakout != null) {
-                                if (devpThread.ioModeOf101 != IoModeType.PAKOUT_MODE) {
-                                    // 鍑哄簱鍒囨崲涓�
-                                    devpThread.ioModeOf101 = IoModeType.PAKOUT_BOOTING;
-                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(staNo);
-                                    if (pakin == null) {
-                                        // 鍑哄簱妯″紡
-                                        devpThread.ioModeOf101 = IoModeType.PAKOUT_MODE;
-                                    }
-                                }
-                            } else {
-                                // 鍏ュ簱妯″紡
-                                devpThread.ioModeOf101 = IoModeType.PAKIN_MODE;
-                            }
-                            break;
-                        case 103://1F
-                            if (pakout != null) {
-                                if (devpThread.ioModeOf103 != IoModeType.PAKOUT_MODE) {
-                                    // 鍑哄簱鍒囨崲涓�
-                                    devpThread.ioModeOf103 = IoModeType.PAKOUT_BOOTING;
-                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(staNo);
-                                    if (pakin == null) {
-                                        // 鍑哄簱妯″紡
-                                        devpThread.ioModeOf103 = IoModeType.PAKOUT_MODE;
-                                    }
-                                }
-                            } else {
-                                // 鍏ュ簱妯″紡
-                                devpThread.ioModeOf103 = IoModeType.PAKIN_MODE;
-                            }
-                            break;
-                        case 305://1F
-                            if (pakout != null) {
-                                if (devpThread.ioModeOf305 != IoModeType.PAKOUT_MODE) {
-                                    // 鍑哄簱鍒囨崲涓�
-                                    devpThread.ioModeOf305 = IoModeType.PAKOUT_BOOTING;
-                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(staNo);
-                                    if (pakin == null) {
-                                        // 鍑哄簱妯″紡
-                                        devpThread.ioModeOf305 = IoModeType.PAKOUT_MODE;
-                                    }
-                                }
-                            } else {
-                                // 鍏ュ簱妯″紡
-                                devpThread.ioModeOf305 = IoModeType.PAKIN_MODE;
-                            }
-                            break;
-                    }
-                }
-
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-
     }
 
     /**
@@ -2227,895 +1569,67 @@
 //        News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚");
     }
 
+    /**
+     * 鍫嗗灈鏈哄洖鍘熺偣
+     */
+    public synchronized void originGo() throws InterruptedException {
 
-    public synchronized void autoEmptyOut() {
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        List<Integer> list = new ArrayList<>();
-        list.add(101);list.add(112);
-        Map<Integer,Integer> map = new HashMap<>();
-        map.put(101,102);map.put(112,111);
-        for (Integer site:list){
-            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site)));
-            if (!Cools.isEmpty(wrkMast)){
+        for (CrnSlave crn : slaveProperties.getCrn()) {
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+            if(crnProtocol == null) {
                 continue;
             }
-            //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
-            StaProtocol staProtocol = devpThread.getStation().get(site);
-            if (staProtocol == null) {
-                return;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            if (staProtocol.isAutoing()  //鑷姩
-                    && !staProtocol.isLoading()  //鏃犵墿
-                    && staProtocol.isOutEnable()  //鍙嚭淇″彿
-                    && staProtocol.getWorkNo() == 0
-            ) {
-                WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(site);
-                if (null != pakoutEmpty) {
-                    return;
-                }
-                Short loctype1 = 1;
-                if (site == 101){
-                    loctype1 = 2;
-                }
-                LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
-                locTypeDto.setSiteId(site);
-                try {
-                    String response = new HttpHandler.Builder()
-                            .setUri(wmsUrl)
-                            .setPath("/rpc/auto/emptyOut/v1")
-                            .setJson(JSON.toJSONString(locTypeDto))
-                            .build()
-                            .doPost();
-                    JSONObject jsonObject = JSON.parseObject(response);
-                    if (jsonObject.getInteger("code").equals(200)) {
-                        String data = jsonObject.get("data").toString();
-                        News.info((String) jsonObject.get("msg")+","+data);
-                    } else {
-                        News.warnNoLog("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                }
-            }
-        }
-
-    }
-
-    public synchronized void autoEmptyIn() {
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        List<Integer> list = new ArrayList<>();
-        list.add(153);list.add(157);
-        for (Integer site:list){
-            StaProtocol staProtocol = devpThread.getStation().get(site);
-            if (staProtocol == null) {
-                return;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            if (staProtocol.isAutoing()  //鑷姩
-                    && staProtocol.isLoading()  //鏈夌墿
-                    && staProtocol.isInEnable()  //鍙叆淇″彿
-                    && staProtocol.isPakMk()
-                    && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
-            ) {
-
-                try {
-                    Short loctype1 = 1;
-                    if (site == 153){
-                        loctype1 = 2;
-                    }
-                    LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
-                    locTypeDto.setSiteId(site);
-
-                    String response = new HttpHandler.Builder()
-                            .setUri(wmsUrl)
-                            .setPath("/rpc/auto/emptyIn/v1")
-                            .setJson(JSON.toJSONString(locTypeDto))
-                            .build()
-                            .doPost();
-                    JSONObject jsonObject = JSON.parseObject(response);
-                    if (jsonObject.getInteger("code").equals(200)) {
-                        News.info((String) jsonObject.get("msg"));
-                        staProtocol.setWorkNo(jsonObject.get("data").hashCode());
-                        staProtocol.setStaNo(site.shortValue());
-                        devpThread.setPakMk(site,false);
-                        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
-                    } else {
-                        News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                }
-            }
-
-        }
-
-    }
-
-    /*
-     * 灏忚溅鍦板浘鏇存柊  鏇存柊閿�
-     * */
-    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){
-
-//        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
-        //鏇存柊褰撳墠灏忚溅閿�
-        try{
-            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
-            Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
-            basRgvMapCurrent.setLockEndRoute(fallMerge);
-            Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
-//            if (i>0){
-                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent));
-//            }
-
-            //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
-            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
-            BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
-            List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
-            Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
-            basRgvMapOther.setEndRoute(lockEndRoute);
-            Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
-//            if (i1>0){
-                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther));
-//            }
-            return true;
-        }catch (Exception e){
-            log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
-            return false;
-        }
-    }
-
-    /*
-     * 鍒锋柊鍦板浘鏁版嵁
-     * */
-    public synchronized void refreshRgvMap() {
-        try{
-            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�2", rgvSlave.getRgvNo());
+            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
+                    && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
+                // 鍒ゆ柇鏄笉鏄凡鍦ㄥ師鐐�
+                if(crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) {
                     continue;
                 }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
-                    rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                    && (rgvProtocol.getTaskNo1()==0)
-                        &&rgvThread.isPakMk()
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-
-                    Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo());
-                    RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther);
-                    RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol();
-                    if (rgvProtocolOther == null) {
-                        continue;
-                    }else {
-                        rgvProtocolOther = rgvProtocolOther.clone();
-                    }
-                    if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocolOther.getModeType() == RgvModeType.AUTO
-                        && rgvProtocolOther.getLoaded1()==0
-                        && (rgvProtocolOther.getTaskNo1()==0)
-                        &&rgvThreadOther.isPakMk()
-                    ){
-                        //瀵瑰伐浣滄。杩涜鍒ゆ柇
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        if (rgvProtocol.getTaskNo1() >0 && rgvProtocol.getTaskNo1()<=9000){
-                            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
-                            rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2366");
-                        }else if (rgvProtocol.getTaskNo1() == 0){
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2366");
-                        }
-
-                    }
-
-
-
-                }
-            }
-        }catch (Exception e){
-            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
-            log.error("4109琛�"+e);
-        }
-    }
-
-
-    /**
-     *  瀹屾垚灏忚溅浠诲姟
-     */
-    public synchronized void rgvCompleteWrkMastSta() {
-        try{
-            for (DevpSlave devp : slaveProperties.getDevp()) {
-                List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getRgvNo());
+                // 鍒ゆ柇鏄笉鏄┖闂蹭笁鍒嗛挓
+                BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+                if (basCrnp.getWrkNo() != 0) {
                     continue;
                 }
-
-                // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
-                if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
-                ){
-                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
-                    if (rgvProtocol.getTaskNo1()!=0){
-                        if (rgvProtocol.getTaskNo1()==32222){
-                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                            if (!rgvComplete){
-                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            }
-                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
-                            rgvThread.setPakMk(true);
-                            break;
-                        }
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
-
-                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                        if (staProtocol == null) {
-                            continue;
-                        } else {
-                            staProtocol = staProtocol.clone();
-                        }
-                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                            continue;
-                        }
-                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-                        if (!Cools.isEmpty(wrkMast)){
-                            if (!staProtocol.isPakMk()){
-                                continue;
-                            }
-                            // 涓嬪彂绔欑偣淇℃伅
-                            staProtocol.setWorkNo(wrkMast.getWrkNo());
-                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
-                                continue;
-                            }
-                        }else {
-                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。");
-                            // 涓嬪彂绔欑偣淇℃伅
-                            Map<Integer,Integer> map = new HashMap<>();
-                            map.put(101,102);map.put(112,111);
-                            map.put(100,100);
-                            staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
-                            staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
-                                continue;
-                            }
-                        }
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-//                        boolean rgvComplete = true;
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
-                        wrkMast1.setUpdMk("Y");
-
-                        wrkMastService.updateById(wrkMast1);
-
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
-                        rgvThread.setPakMk(true);
-                    }
-
-                    else {
-                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
-                    }
-                }
-            }
-            }
-        }catch (Exception e){
-            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
-        }
-    }
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     */
-    public synchronized void rgvRunWrkMastFullSta() {
-        boolean wrkEnable = false;
-        try{
-            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
+                Date now = new Date();
+                Date modiTime = basCrnp.getModiTime();
+                long diffInMillis = now.getTime()-modiTime.getTime();
+                if(diffInMillis < 10 * 1000) { // 绌洪棽灏忎簬10绉掑垯璺宠繃
                     continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0
-                        && rgvProtocol.getTaskNo1() == 0
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (basRgvMap == null) {
-                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+                } else {  // 鏈夊叆搴撲换鍔℃垨澶т簬2鍒嗛挓锛屽洖鍘熺偣
+                    int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 1).eq("crn_no", crn.getId()).in("wrk_sts", 2));
+                    if(count == 0 && diffInMillis < 2 * 60 * 1000) {
                         continue;
                     }
-                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
-                    for (WrkMastSta wrkMastSta : wrkMastStaList){
-                        if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3){//1:婊$増   3锛氬彇鏀�
-                            continue;
-                        }
-                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
-                        wrkEnable = true;
-                        if (sign){
-                            rgvThread.setPakMk(false);
-                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-                            if (signMap){
-                                Thread.sleep(300);
-                                wrkMastSta.setWrkSts(1);
-                                try{
-                                    wrkMastStaMapper.updateById(wrkMastSta);
-                                    return;
-                                }catch (Exception e){
-                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                                }
-                                break;
-                            }else {
-                                log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                            }
-                        } else {
-                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                        }
-                        break;
-                    }
                 }
 
-            }
-            if (!wrkEnable){
-                rgvRunWrkMastEmptyStaAvoidance();
-            }
-        }catch (Exception e){
-            log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
-            log.error("3875琛�"+e);
-        }
-    }
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     */
-//    public synchronized void rgvRunWrkMastEmptyStaPut() {//鏀�
-//        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
-//                    continue;
-//                }
-//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-//                if (basRgv == null) {
-//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�5", rgvSlave.getId());
-//                    continue;
-//                }
-//
-//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
-//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && rgvProtocol.getLoaded1()==1  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-//                ) {
-//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                    if (basRgvMap == null) {
-//                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-//                        continue;
-//                    }
-//                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
-//                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
-//                    for (WrkMastSta wrkMastSta : wrkMastStaList){
-//                        if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:绌烘澘  2:鏀� 4锛氭媶鐩�
-//                            continue;
-//                        }
-//                        boolean sign = false;
-//                        if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//鏀�
-//                            sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
-//                        }else {
-//                            continue;
-//                        }
-//                        if (sign){
-//                            boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
-//                            if (signMap){
-//                                wrkMastSta.setWrkSts(2);
-//                                try{
-//                                    wrkMastStaMapper.updateById(wrkMastSta);
-//                                }catch (Exception e){
-//                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-//                                }
-//                                return;
-//                            }else {
-//                                log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-//                            }
-//                        }else {
-//                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-//                        }
-//                        break;
-//                    }
-//                }
-//            }
-//        }catch (Exception e){
-//            log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
-//            log.error("3933琛�"+e);
-//        }
-//    }
-
-//    public synchronized void rgvRunWrkMastEmptyStaTake() {//鍙�
-//        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
-//                    continue;
-//                }
-//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-//                if (basRgv == null) {
-//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�6", rgvSlave.getId());
-//                    continue;
-//                }
-//
-//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
-//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-//                ) {
-//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                    if (basRgvMap == null) {
-//                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-//                        continue;
-//                    }
-//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-//                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-//                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
-//                    for (WrkMastSta wrkMastSta : wrkMastStaList){
-//                        if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘  1:鍙�
-//                            continue;
-//                        }
-//                        boolean sign = false;
-//                        if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙�
-//                            sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
-//                        } else {
-//                            continue;
-//                        }
-//                        if (sign){
-//                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
-//                            if (signMap){
-//                                wrkMastSta.setWrkSts(1);
-//                                try{
-//                                    wrkMastStaMapper.updateById(wrkMastSta);
-//                                }catch (Exception e){
-//                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-//                                }
-//                                return;
-//                            }else {
-//                                log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-//                            }
-//                        }else {
-//                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-//                        }
-//                        break;
-//                    }
-//                }
-//            }
-//        }catch (Exception e){
-//            log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
-//            log.error("3989琛�"+e);
-//        }
-//    }
-
-    /*
-     * 鏈変换鍔′絾鏈墽琛�  姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
-     * */
-    public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
-        try{
-            Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
-            if (integer==0){
-                return;
-            }
-            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo());
+                // 鏈夊悐杞﹀叆搴撴垨鍚婅溅鍑哄簱浠诲姟
+                int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnProtocol.getCrnNo()).in("wrk_sts", 3, 12));
+                if(count != 0) {
                     continue;
                 }
 
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                        && rgvProtocol.getTaskNo1()==0
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-//                        && rgvProtocol.getTaskNo2()==0
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
-                        continue;
-                    }
-//                    if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
-//                        continue;
-//                    } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157)  ){
-//                        continue;
-//                    }
-                    rgvAvoidanceXY(rgvProtocol.getRgvNo());
-                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727");
-                }
-            }
-        }catch (Exception e){
-            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
-            log.error("4109琛�"+e);
-        }
-    }
-
-    /*
-     * 灏忚溅XY绉诲姩  閬胯
-     * */
-    public synchronized boolean rgvAvoidanceXY(Integer rgvId){
-        BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId);
-        if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){
-            try{
-
-                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                RgvCommand rgvCommand = new RgvCommand();
-                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-                rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
-                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
-                //basRgvMap.getLockStartRoute().shortValue()
-                rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
-                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
-                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                    return false;
+                CrnCommand crnCommand = new CrnCommand();
+                crnCommand.setCrnNo(crn.getId()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+                crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
+                crnCommand.setSourcePosX((short) (crn.getId() == 1 ? 3 : 6));     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosY((short) 1);     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
+                crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+                crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+                crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+                if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, crnCommand))) {
+                    News.error("鍥炲師鐐逛换鍔′笅鍙戝け璐�", crn.getId(), JSON.toJSON(crnCommand));
                 } else {
-                    return true;
+                    basCrnp.setModiTime(new Date());
+                    basCrnpService.updateById(basCrnp); // 璁剧疆鏇存柊鏃堕棿锛岄伩鍏嶉噸澶嶄笅鍙戝洖鍘熺偣
+                    log.info("{}鍙峰爢鍨涙満鍥炲師鐐逛换鍔′笅鍙戞垚鍔燂細{}", crn.getId(), JSON.toJSON(crnCommand));
                 }
-            }catch (Exception e){
-                return false;
-
-            }
-        }else {
-            try{
-                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                RgvCommand rgvCommand = new RgvCommand();
-                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-                rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
-                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
-                //basRgvMap.getLockStartRoute().shortValue()
-                rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
-                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
-                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                    return false;
-                } else {
-                    return true;
-                }
-            }catch (Exception e){
-                return false;
-
+                Thread.sleep(3000);
             }
         }
     }
 
-
-    /*
-     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
-     * */
-    public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡:  鍙栨斁璐�
-            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
-            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
-        }catch (Exception e){
-            return false;
-        }
-    }
-
-    /*
-     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
-     * */
-//    public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){
-//        try{
-//            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//            RgvCommand rgvCommand = new RgvCommand();
-//            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-//            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-//            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-//            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栬揣
-//            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
-//            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-//            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-//                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-//                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-//                return false;
-//            } else {
-//                return true;
-//            }
-//        }catch (Exception e){
-//            return false;
-//        }
-//    }
-
-    /*
-     * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟
-     * */
-//    public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){
-//        try{
-//            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//            RgvCommand rgvCommand = new RgvCommand();
-//            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-//            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-//            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-//            rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
-//            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-//            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-//            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-//                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-//                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-//                return false;
-//            } else {
-//                return true;
-//            }
-//        }catch (Exception e){
-//            return false;
-//        }
-//    }
-
-    /*
-     * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟
-     * */
-//    public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){
-//        try{
-//            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//            RgvCommand rgvCommand = new RgvCommand();
-//            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-//            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-//            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-//            rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栬揣
-//            rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅2璧风偣
-//            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-//            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) {
-//                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-//                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-//                return false;
-//            } else {
-//                return true;
-//            }
-//        }catch (Exception e){
-//            return false;
-//        }
-//    }
-
-    /*
-     * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟
-     * */
-//    public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){
-//        try{
-//            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//            RgvCommand rgvCommand = new RgvCommand();
-//            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-//            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-//            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-//            rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
-//            rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-//            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-//            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) {
-//                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-//                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-//                return false;
-//            } else {
-//                return true;
-//            }
-//        }catch (Exception e){
-//            return false;
-//        }
-//    }
-
-    /*
-     * 灏忚溅澶嶄綅
-     * */
-    public synchronized boolean rgvComplete(Integer rgvId){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
-                return false;
-            } else {
-                log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId);
-                return true;
-            }
-        }catch (Exception e){
-            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId);
-            return false;
-        }
-    }
-
-    /**
-     * 鍒ゆ柇106绔欑偣鐘舵�侊紝鏈夌墿+鏈変换鍔″彿锛屽垯鐢熸垚绉诲簱浠诲姟
-     */
-    public synchronized void generateOutbound() {
-        WrkMast wrkMast = wrkMastMapper.selectBy104();
-        if (wrkMast == null) {
-            return;
-        }
-        BasCrnp basCrnp = basCrnpService.selectById(1);
-        if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) {
-            return;
-        }
-        CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, 1);
-        CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-        if (crnProtocol == null) {
-            return;
-        }
-        // 鍫嗗灈鏈烘帶鍒惰繃婊�
-        if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-            return;
-        }
-
-        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-        if (wrkMastMapper.selectWorking(1) != null) {
-            return;
-        }
-
-        LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-        // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-        CrnCommand crnCommand = new CrnCommand();
-        crnCommand.setCrnNo(1); // 鍫嗗灈鏈虹紪鍙�
-        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((short) 3);     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY((short) 3);     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
-        crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
-        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-            News.error("鍒�106绔欑偣鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-        } else {
-            // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-            Date now = new Date();
-            wrkMast.setWrkSts(12L);
-            wrkMast.setCrnStrTime(now);
-            wrkMast.setModiTime(now);
-            if (wrkMastMapper.updateById(wrkMast) == 0) {
-                News.error("鍒�106绔欑偣淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-            }
-        }
-
-    }
-
-    public synchronized void autoMoveLoc() {
-        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_sts", 16L));
-
-        // 鍒ゆ柇婧愮珯鐐规儏鍐� 鏈変换鍔″彿锛屾湁鐗╋紝鑷姩
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        StaProtocol staProtocol106 = devpThread.getStation().get(106);
-        StaProtocol staProtocol105 = devpThread.getStation().get(105);
-        if (staProtocol106 == null) {
-            return;
-        } else {
-            staProtocol106 = staProtocol106.clone();
-        }
-        if (staProtocol105 == null) {
-            return;
-        } else {
-            staProtocol105 = staProtocol105.clone();
-        }
-
-
-        // 鍒ゆ柇鍑哄簱绔欑偣鎯呭喌
-
-
-        // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑�
-        CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, 2);
-        CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-        if (crnProtocol == null) {
-            return;
-        }
-        BasCrnp basCrnp = basCrnpService.selectById(2);
-        if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) {
-            return;
-        }
-
-        // 鍫嗗灈鏈烘帶鍒惰繃婊�
-        if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-            return;
-        }
-
-        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-        if (wrkMastMapper.selectWorking(2) != null) {
-            return;
-        }
-        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-        CrnCommand crnCommand = new CrnCommand();
-        crnCommand.setCrnNo(2); // 鍫嗗灈鏈虹紪鍙�
-        crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-        crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-        crnCommand.setSourcePosX((short) 6);     // 婧愬簱浣嶆帓
-        crnCommand.setSourcePosY((short) 3);     // 婧愬簱浣嶅垪
-        crnCommand.setSourcePosZ((short) 1);     // 婧愬簱浣嶅眰
-        crnCommand.setDestinationPosX((short) 7);     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY((short) 28);     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅灞�
-        crnCommand.setTraySize(true);     //搴撲綅绫诲瀷
-        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-            News.error("106绉诲簱2鍙峰爢鍨涙満鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-        }
-//        else {
-//            wrkMast.setCrnNo(2);
-//            wrkMastMapper.updateById(wrkMast);
-//        }
-        News.infoNoLog("106绉诲簱2鍙峰爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙戯細搴撲綅绉昏浆瀹屾垚");
-    }
 }

--
Gitblit v1.9.1