From a0031ed8c187dacc30b4bb2709d3a1dc477a17cf Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 17 十月 2024 15:34:14 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 5815 -----------------------------------------------------------
 1 files changed, 37 insertions(+), 5,778 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index ee3a651..3e6f610 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,55 +1,36 @@
 package com.zy.asrs.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-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.asrs.entity.*;
-import com.zy.asrs.mapper.*;
-import com.zy.asrs.service.*;
-import com.zy.asrs.utils.CodeDetectionUtil;
-import com.zy.asrs.utils.RouteUtils;
+import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.entity.BasSte;
+import com.zy.asrs.service.BasDevpService;
 import com.zy.asrs.utils.Utils;
-import com.zy.asrs.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.common.utils.CollectionUtils;
-import com.zy.common.utils.HttpHandler;
-import com.zy.common.utils.RedisUtil;
-import com.zy.common.utils.RgvUtils;
-import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
+import com.zy.core.News;
 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.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.DevpSlave;
+import com.zy.core.model.RgvSlave;
+import com.zy.core.model.SteSlave;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.SteCommand;
 import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.model.protocol.SteProtocol;
 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.core.thread.SteThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
+import java.util.Date;
+import java.util.Map;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -60,5777 +41,55 @@
 @Transactional
 public class MainServiceImpl {
 
-    public static final long COMMAND_TIMEOUT = 5 * 1000;
-
-    @Autowired
-    private CommonService commonService;
     @Autowired
     private SlaveProperties slaveProperties;
     @Autowired
-    private WrkMastMapper wrkMastMapper;
-    @Autowired
-    private WrkDetlService wrkDetlService;
-    @Autowired
-    private WaitPakinMapper waitPakinMapper;
-    @Autowired
-    private LocMastService locMastService;
-    @Autowired
-    private StaDescService staDescService;
-    @Autowired
-    private BasCrnpService basCrnpService;
-    @Autowired
-    private BasRgvService basRgvService;
-    @Autowired
     private BasDevpService basDevpService;
     @Autowired
-    private LocDetlService locDetlService;
-    @Autowired
-    private BasErrLogService basErrLogService;
-    @Autowired
-    private BasCrnErrorMapper basCrnErrorMapper;
-    @Autowired
-    private BasRgvErrMapper basRgvErrMapper;
-    @Autowired
-    private BasRgvErrLogService basRgvErrLogService;
-    @Autowired
-    private BasRgvPathService basRgvPathService;
-    @Autowired
-    private RedisUtil redisUtil;
-    @Autowired
-    private WrkMastStaMapper wrkMastStaMapper;
-    @Autowired
-    private BasRgvMapMapper basRgvMapMapper;
-    @Autowired
-    private RgvOneSignMapper rgvOneSignMapper;
-    @Autowired
-    private WrkMastCrnMapper wrkMastCrnMapper;
-
-    @Value("${wms.url}")
-    private String wmsUrl;
-
+    private BasRgvServiceImpl basRgvService;
     /**
-     * 缁勬墭
-     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
+     * 绔欑偣浠诲姟妫�娴�  涓嬪彂灏忚溅鍙栨斁浠诲姟
      */
-    public synchronized void generateStoreWrkFile() {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+    public synchronized void updateStePosition() {
+
+    }
+    /**
+     * 绔欑偣浠诲姟妫�娴�  涓嬪彂灏忚溅鍙栨斁浠诲姟
+     */
+    public synchronized void DevpTaskNoRun() {
         for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍏ュ簱鍙�
-            for (DevpSlave.Sta inSta : devp.getInSta()) {
-                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
-                if (barcodeThread == null) {
-                    continue;
-                }
-                String barcode = barcodeThread.getBarcode();
-
-                if (!Cools.isEmpty(barcode)) {
-//                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || !CodeDetectionUtil.barcodeDetection(barcode)) {
-                        continue;
-                    }
-                } else {
-                    continue;
-                }
-
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+            // 閬嶅巻绌烘澘鍏ュ簱鍙�
+            for (DevpSlave.Sta sta : devp.getInSta()) {
+                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+                StaProtocol staProtocol = devpThread.getStation().get(sta.getStaNo());
                 if (staProtocol == null) {
                     continue;
                 } else {
                     staProtocol = staProtocol.clone();
                 }
-
-                // 灏哄妫�娴嬪紓甯�
-                boolean back = false;
-                String errMsg = "寮傚父锛�";
-                if (staProtocol.isFrontErr()) {
-                    errMsg = errMsg+"鍓嶈秴闄愶紱";
-                    back = true;
-                }
-                if (staProtocol.isBackErr()) {
-                    errMsg = errMsg+"鍚庤秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isHighErr()) {
-                    errMsg = errMsg+"楂樿秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isLeftErr()) {
-                    errMsg = errMsg+"宸﹁秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isRightErr()) {
-                    errMsg = errMsg+"鍙宠秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isWeightErr()) {
-                    errMsg = errMsg+"瓒呴噸";
-                    back = true;
-                }
-                if (staProtocol.isBarcodeErr()) {
-                    errMsg = errMsg+"鎵爜澶辫触";
-                    back = true;
-                }
-                // 閫�鍥�
-                if (back) {
-                    // led 寮傚父鏄剧ず
-                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
-                    if (ledThread != null) {
-                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errMsg));
-                    }
-                    continue;
-                }
-
-                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-//                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-//                    continue;
-//                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk()
-                        && staProtocol.getWorkNo() == 0
-                        && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
-
-//                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-//                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-//                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
-//                        staProtocol.setWorkNo((short)32222);
-//                        staProtocol.setStaNo((short)172);
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        if (!result) {
-//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                        }
-//                        continue;
-//                    }
-
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
-                    if (wrkMast != null) {
-                        log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        continue;
-                    }
-//                    // 鑾峰彇鍏ュ簱閫氱煡妗�
-//                    List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
-//                    if (waitPakins.isEmpty()) {
-//                        log.error("鏃犳鍏ュ簱鏉$爜鏁版嵁銆傛潯鐮佸彿={}", barcode);
-//                        continue;
-//                    }
-
-                    try {
-
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(barcode);
-                        param.setIoType(1);
-                        param.setSourceStaNo(inSta.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
-
-
-                            barcodeThread.setBarcode("");
-                            staProtocol.setWorkNo(dto.getWorkNo());
-
-                            if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) {
-                                staProtocol.setStaNo(dto.getStaNo());
-                            } else {//濡傛灉瀛樺湪RGV缂栧彿锛岃鏄庨渶瑕丷GV鎺ラ┏锛屽厛涓嬪彂浠诲姟鍒癛GV婧愮珯
-                                staProtocol.setStaNo(dto.getRgvSstaNo());
-                            }
-
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-                            }
-                        } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
-                        }
-
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-
-                }
-
-
-            }
-        }
-
-    }
-
-    /**
-     * 缁勬墭
-     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
-     */
-    public synchronized void generateStoreWrkFileSingle() {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍏ュ簱鍙�
-            for (DevpSlave.Sta inSta : devp.getInSingleSta()) {
-                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
-                if (barcodeThread == null) {
-                    continue;
-                }
-                String barcode = barcodeThread.getBarcode();
-
-                if (!Cools.isEmpty(barcode)) {
-//                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || !CodeDetectionUtil.barcodeDetection(barcode)) {
-                        continue;
-                    }
-                } else {
-                    continue;
-                }
-
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 灏哄妫�娴嬪紓甯�
-                boolean back = false;
-                String errMsg = "寮傚父锛�";
-                if (staProtocol.isFrontErr()) {
-                    errMsg = errMsg+"鍓嶈秴闄愶紱";
-                    back = true;
-                }
-                if (staProtocol.isBackErr()) {
-                    errMsg = errMsg+"鍚庤秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isHighErr()) {
-                    errMsg = errMsg+"楂樿秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isLeftErr()) {
-                    errMsg = errMsg+"宸﹁秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isRightErr()) {
-                    errMsg = errMsg+"鍙宠秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isWeightErr()) {
-                    errMsg = errMsg+"瓒呴噸";
-                    back = true;
-                }
-                if (staProtocol.isBarcodeErr()) {
-                    errMsg = errMsg+"鎵爜澶辫触";
-                    back = true;
-                }
-                // 閫�鍥�
-                if (back) {
-                    // led 寮傚父鏄剧ず
-                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
-                    if (ledThread != null) {
-                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errMsg));
-                    }
-                    continue;
-                }
-
-                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-//                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-//                    continue;
-//                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk()
-                        && staProtocol.getWorkNo() == 0
-                        && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
-
-                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || !CodeDetectionUtil.barcodeDetection(barcode)) {
-                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-//                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
-//                        staProtocol.setWorkNo((short)32222);
-//                        staProtocol.setStaNo((short)172);
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        if (!result) {
-//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                        }
-                        continue;
-                    }
-
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
-                    if (wrkMast != null) {
-                        log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        continue;
-                    }
-//                    // 鑾峰彇鍏ュ簱閫氱煡妗�
-//                    List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
-//                    if (waitPakins.isEmpty()) {
-//                        log.error("鏃犳鍏ュ簱鏉$爜鏁版嵁銆傛潯鐮佸彿={}", barcode);
-//                        continue;
-//                    }
-
-                    try {
-
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(barcode);
-                        param.setIoType(1);
-                        param.setSourceStaNo(inSta.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/pair/station/single/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
-
-
-                            barcodeThread.setBarcode("");
-                            staProtocol.setWorkNo(dto.getWorkNo());
-
-                            if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) {
-                                staProtocol.setStaNo(dto.getStaNo());
-                            } else {//濡傛灉瀛樺湪RGV缂栧彿锛岃鏄庨渶瑕丷GV鎺ラ┏锛屽厛涓嬪彂浠诲姟鍒癛GV婧愮珯
-                                staProtocol.setStaNo(dto.getRgvSstaNo());
-                            }
-
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-                            }
-                        } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/pair/station/single/loc/v1", JSON.toJSONString(param), response);
-                        }
-
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-
-                }
-
-
-            }
-        }
-
-    }
-
-    /**
-     * 缁勬墭
-     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
-     */
-    public synchronized void generateStoreWrkFileLarge() {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍏ュ簱鍙�
-            for (DevpSlave.Sta inSta : devp.getInLargeSta()) {
-                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
-                if (barcodeThread == null) {
-                    continue;
-                }
-                String barcode = barcodeThread.getBarcode();
-
-                if (!Cools.isEmpty(barcode)) {
-//                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || !CodeDetectionUtil.barcodeDetection(barcode)) {
-                        continue;
-                    }
-                } else {
-                    continue;
-                }
-
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 灏哄妫�娴嬪紓甯�
-                boolean back = false;
-                String errMsg = "寮傚父锛�";
-                if (staProtocol.isFrontErr()) {
-                    errMsg = errMsg+"鍓嶈秴闄愶紱";
-                    back = true;
-                }
-                if (staProtocol.isBackErr()) {
-                    errMsg = errMsg+"鍚庤秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isHighErr()) {
-                    errMsg = errMsg+"楂樿秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isLeftErr()) {
-                    errMsg = errMsg+"宸﹁秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isRightErr()) {
-                    errMsg = errMsg+"鍙宠秴闄�";
-                    back = true;
-                }
-                if (staProtocol.isWeightErr()) {
-                    errMsg = errMsg+"瓒呴噸";
-                    back = true;
-                }
-                if (staProtocol.isBarcodeErr()) {
-                    errMsg = errMsg+"鎵爜澶辫触";
-                    back = true;
-                }
-                // 閫�鍥�
-                if (back) {
-                    // led 寮傚父鏄剧ず
-                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
-                    if (ledThread != null) {
-                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errMsg));
-                    }
-                    continue;
-                }
-
-                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-//                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-//                    continue;
-//                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk()
-                        && staProtocol.getWorkNo() == 0
-                        && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
-
-                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || !CodeDetectionUtil.barcodeDetection(barcode)) {
-                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-//                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣
-//                        staProtocol.setWorkNo((short)32222);
-//                        staProtocol.setStaNo((short)172);
-//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        if (!result) {
-//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                        }
-                        continue;
-                    }
-
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
-                    if (wrkMast != null) {
-                        log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        continue;
-                    }
-//                    // 鑾峰彇鍏ュ簱閫氱煡妗�
-//                    List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
-//                    if (waitPakins.isEmpty()) {
-//                        log.error("鏃犳鍏ュ簱鏉$爜鏁版嵁銆傛潯鐮佸彿={}", barcode);
-//                        continue;
-//                    }
-
-                    try {
-
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(barcode);
-                        param.setIoType(1);
-                        param.setSourceStaNo(inSta.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-                            barcodeThread.setBarcode("");
-                            staProtocol.setWorkNo(dto.getWorkNo());
-
-                            if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) {
-                                staProtocol.setStaNo(dto.getStaNo());
-                            } else {//濡傛灉瀛樺湪RGV缂栧彿锛岃鏄庨渶瑕丷GV鎺ラ┏锛屽厛涓嬪彂浠诲姟鍒癛GV婧愮珯
-                                staProtocol.setStaNo(dto.getRgvSstaNo());
-                            }
-
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-                            }
-                        } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
-
-                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
-
-                            if (ledThread != null) {
-                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, "鍏ュ簱澶辫触锛�"));
-                            }
-                        }
-
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-                }
             }
         }
     }
 
-    /**
-     * 缁勬墭
-     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿閫氱煡妗佹灦鐮佸灈
-     */
-    public synchronized void generateStoreWrkFileFull2LouM() {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鐮佸灈鍙�
-            for (DevpSlave.Sta driveSta : devp.getDriveSta()) {
-                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, driveSta.getBarcode());
-                if (barcodeThread == null) {
-                    continue;
-                }
-                String barcode = barcodeThread.getBarcode();
-
-                if (!Cools.isEmpty(barcode) && !barcode.equals("") && !barcode.equals("      ")) {
-                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                        continue;
-                    }
-                } else {
-                    continue;
-                }
-
-                // 鑾峰彇鐮佸灈鍙d俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(driveSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk()
-                        && (staProtocol.getWorkNo() == 0 || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000) )
-                ) {
-                    try {
-                        BasDevp basDevp = basDevpService.selectById(driveSta.getStaNo());
-                        if (basDevp.getReportSign()>0){
-                            continue;
-                        }
-                        basDevp.setBarcode(barcode);
-                        basDevp.setReportSign(1);
-                        basDevpService.updateById(basDevp);
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * wms鍏ュ簱
-     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2
-     */
-    public synchronized void generateStoreWrkFile0() {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍏ュ簱鍙�
-            for (DevpSlave.Sta inSta : devp.getInWmsSta()) {
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                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.ioModeOf2F != IoModeType.PAKIN_MODE) {
-//                    continue;
-//                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0
-                        && staProtocol.isPakMk()) {
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo());
-                    if (wrkMast == null) {
-                        continue;
-                    }
-
-                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    Integer staNo = wrkMast.getStaNo();
-                    if (wrkMast.getSourceStaNo()==145){
-                        staNo = 147;
-                    }
-                    staProtocol.setStaNo(staNo);
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    if (result) {
-                        // 鏇存柊宸ヤ綔涓绘。
-                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
-                        wrkMast.setModiTime(new Date());
-                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            log.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
-                        }
-                    } else {
-                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                    }
-
-                }
-
-
-            }
-        }
-
-    }
-
-    /**
-     * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
-     */
-    public synchronized void stnToCrnStnPick() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鎷f枡鍏ュ簱鍙�
-            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
-//                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-//                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-//                if (barcodeThread == null) {
-//                    continue;
-//                }
-//                String barcode = barcodeThread.getBarcode();
-//                if(!Cools.isEmpty(barcode)) {
-//                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-//                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-//                        continue;
-//                    }
-//                } else {
-//                    continue;
-//                }
-
-                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
-
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
-//                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7");
-                    if (wrkMast == null) {
-                        // 鏃犳嫞鏂欐暟鎹�
-                        continue;
-                    }
-                    if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
-                            || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
-                        continue;
-                    }
-
-                    //   鑾峰彇搴撲綅鍙�
-                    try {
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(wrkMast.getBarcode());
-                        param.setIoType(wrkMast.getIoType());
-                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
-                        param.setLocType1((short)1);
-                        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(dto.getStaNo());
-                                    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()+"鐩樼偣/鎷f枡鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
-                                } catch (Exception e) {
-                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
-                                    e.printStackTrace();
-                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                }
-                            }
-                        } else {
-                            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();
-                    }
-
-                }
-
-            }
-
-        }
-    }
-
-    /**
-     * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  鎷嗗灈浣嶇疆
-     */
-    public synchronized void stnToCrnStnPick2() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鎷f枡鍏ュ簱鍙�
-            for (DevpSlave.Sta pickSta : devp.getPickSta2()) {
-
-                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                BasDevp basDevp = basDevpService.selectById(staProtocol.getSiteId());
-                if (Cools.isEmpty(basDevp) || basDevp.getReportSign()!=1){
-                    continue;
-                }
-
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk() && staProtocol.getWorkNo()==0 && !staProtocol.isOutEnable() && staProtocol.isInEnable()) {
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep4(staProtocol.getSiteId(),"3");
-
-                    if (wrkMast == null) {
-                        continue;
-                    }
-                    if (staProtocol.isEmptyMk()){
-                        log.error("绔欑偣鍙�"+staProtocol.getSiteId()+"绌烘澘淇″彿寮傚父锛�");
-                        continue;
-                    }
-                    if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
-                            || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
-                        continue;
-                    }
-
-                    String barcode = wrkMast.getBarcode();
-                    if(!Cools.isEmpty(barcode)) {
-                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
-                            continue;
-                        }
-                    } else {
-                        continue;
-                    }
-
-                    //   鑾峰彇搴撲綅鍙�
-                    try {
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(barcode);
-                        param.setIoType(wrkMast.getIoType());
-                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
-                        param.setLocType1((short)1);
-                        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(dto.getStaNo());
-                                    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()+"鐩樼偣/鎷f枡鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
-                                } catch (Exception e) {
-                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
-                                    e.printStackTrace();
-                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                }
-                            }
-                        } else {
-                            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();
-                    }
-
-//                    // 鑾峰彇鐩爣绔�
-//                    Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-//                            .eq("type_no", wrkMast.getIoType() - 50)
-//                            .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
-//                            .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
-//                    StaDesc staDesc = staDescService.selectOne(wrapper);
-//                    if (Cools.isEmpty(staDesc)) {
-//                        log.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
-//                        continue;
-//                    }
-//
-//                    try {
-//                        // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-//                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
-//                            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
-//                        }
-//                        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-//                        if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
-//                            throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
-//                        }
-//
-//                        Date now = new Date();
-//                        // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
-//                        Integer staNo = staDesc.getCrnStn();
-//                        // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
-//                        wrkMast.setIoTime(now);
-//                        wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
-//                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
-//                        wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯
-//                        wrkMast.setStaNo(staNo); // 鐩爣绔�
-//                        wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
-//                        wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
-//                        wrkMast.setModiTime(now);
-//                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-//                            throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
-//                        }
-//                        // 鏇存柊鏄庣粏妗o_time (鍘嗗彶妗e叧鑱斾娇鐢級
-//                        wrkDetlService.updateIoTime(wrkMast.getWrkNo(), now);
-//                        // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
-//                        LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-//                        locMast.setLocSts("Q");
-//                        locMast.setModiTime(new Date());
-//                        if (!locMastService.updateById(locMast)) {
-//                            throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
-//                        }
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                        continue;
-//                    }
-//
-//                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-//                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-//                    staProtocol.setStaNo(wrkMast.getStaNo());
-//                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                    if (!result) {
-//                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-//                    }
-
-                }
-
-            }
-
-        }
-    }
-
-    /**
-     * 2妤�212鍛煎彨绌烘澘
-     */
-    public synchronized void stnToCrnStnPick3Auto(Integer sign) {
-        try{
-            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
-            StaProtocol staProtocol = devpThread.getStation().get(212);
-            if (staProtocol == null) {
-                return;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo()==0 ){
-                switch (sign){
-                    //鎵ц灏忚溅璐х墿鎼繍浠诲姟
-                    case 1:
-                    case 4:
-                        stnToCrnStnPick3();
-                        return;
-                    //鎵ц灏忚溅绌烘澘鎼繍浠诲姟
-                    case 2://鏀�//鎷嗙洏
-                    case 5://鏀�//鎷嗙洏
-                        stnToCrnStnPick4();
-                        return;
-                    default:
-                        return;
-                }
-            } else if (staProtocol.isAutoing() && staProtocol.isLoading()){
-                switch (sign){
-                    case 3://婊℃斁
-                    case 6://婊℃斁
-                        stnToCrnStnPick5();
-                        return;
-                    default:
-                        return;
-                }
-            }
-        }catch (Exception e){
-            log.error("2妤�212鍛煎彨绌烘澘"+e);
-        }
-    }
-    /**
-     * 2妤�212鍛煎彨绌烘澘
-     */
-    public synchronized void stnToCrnStnPick3() {
-        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
-        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=61){//61銆佺瓑寰呯┖鏉�
-            return;
-        }
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            for (DevpSlave.Sta driveSta : devp.getDriveSta()) {
-                if (driveSta.getStaNo()!=215){
-                    continue;
-                }
-                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(driveSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo()==0
-                        || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000)) ){
-                    boolean result1 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
-
-                    staProtocol.setWorkNo(wrkMast.getWrkNo()-1);
-                    staProtocol.setStaNo(driveSta.getStaNo()==215? 217:221);
-                    boolean result2 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    if (!result2) {
-                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                    }
-                    wrkMast.setWrkSts(62L);
-                    wrkMastMapper.updateById(wrkMast);
-
-                    boolean result3 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
-                    return;
-                }
-            }
-        }
-    }
-
-    /**
-     * 2妤�212鍛煎彨绌烘澘
-     */
-    public synchronized void stnToCrnStnPick4() {
-        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
-        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=62){//62銆佺瓑寰呭皬杞︽惉杩�
-            return;
-        }
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            for (DevpSlave.Sta driveSta : devp.getInSta()) {
-                if (driveSta.getStaNo()!=217){
-                    continue;
-                }
-                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(driveSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                StaProtocol staProtocol212 = devpThread.getStation().get(212);
-                if (staProtocol212 == null) {
-                    continue;
-                } else {
-                    staProtocol212 = staProtocol212.clone();
-                }
-                if (staProtocol212.isAutoing() && !staProtocol212.isLoading() && staProtocol212.getWorkNo()==0){
-                    if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo()==0
-                            || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000) || staProtocol.getWorkNo()==wrkMast.getWrkNo()-1) ){
-//                        boolean result1 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol));
-
-                        staProtocol.setWorkNo(wrkMast.getWrkNo());
-                        staProtocol.setStaNo(212);
-                        boolean result2 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                        if (!result2) {
-                            log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                        }
-                        wrkMast.setWrkSts(63L);
-                        wrkMastMapper.updateById(wrkMast);
-
-//                        boolean result3 = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
-                        return;
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 2妤�212鍛煎彨绌烘澘
-     */
-    public synchronized void stnToCrnStnPick5() {
-        WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne212();
-        if (Cools.isEmpty(wrkMast) || wrkMast.getWrkSts()!=63){//63銆佺瓑寰呭畬鎴�
-            return;
-        }
-
-        // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2);
-        StaProtocol staProtocol = devpThread.getStation().get(212);
-        if (staProtocol == null) {
-            return;
-        } else {
-            staProtocol = staProtocol.clone();
-        }
-        if (staProtocol.isAutoing() && staProtocol.isLoading()){
-//            boolean result1 = MessageQueue.offer(SlaveType.Devp, 2, new Task(3, staProtocol));
-
-            wrkMast.setWrkSts(64L);
-            wrkMastMapper.updateById(wrkMast);
-
-//            boolean result3 = MessageQueue.offer(SlaveType.Devp, 2, new Task(4, staProtocol));
-            return;
-        }
-    }
-    /**
-     * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  鎷嗗灈浣嶇疆
-     */
-    public synchronized void storeEmptyPlt4() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍙犵洏鍏ュ簱鍙�
-            for (DevpSlave.Sta pickSta : devp.getEmptyInSta2()) {
-
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                BasDevp basDevp = basDevpService.selectById(staProtocol.getSiteId());
-                if (Cools.isEmpty(basDevp) || basDevp.getReportSign()!=1){
-                    continue;
-                }
-
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isPakMk() && staProtocol.getWorkNo()==0 && !staProtocol.isOutEnable() && staProtocol.isInEnable()) {
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep4(staProtocol.getSiteId(),"3");
-                    if (wrkMast == null) {
-                        WrkMast wrkMast1 = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"3");
-                        if (Cools.isEmpty(wrkMast1) && staProtocol.isEmptyMk()){
-                            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getSiteId() + 19999L);
-                            if (Cools.isEmpty(wrkMastSta)){
-                                WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),staProtocol.getSiteId());
-                                wrkMastSta1.setType(2);
-                                wrkMastSta1.setWrkType(1);
-                                wrkMastStaMapper.insert(wrkMastSta1);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
-     */
-    public synchronized void crnStnToOutStn() {
-        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
-            // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
-            for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
-                // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
-                    // 鏌ヨ宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
-                    if (wrkMast == null) {
-                        continue;
-                    }
-                    // 鍒ゆ柇宸ヤ綔妗f潯浠�
-                    if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
-                        continue;
-                    }
-                    // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
-                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
-                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                    if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
-                        // 绉诲姩涓�
-                        continue;
-                    }
-                    if (crnProtocol.getCrnNo()<=2){
-                        WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(crnProtocol.getTaskNo().intValue());
-                        if (!Cools.isEmpty(wrkMastCrn) && wrkMastCrn.getWrkSts().equals(12L)){
-                            wrkMast = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNo().intValue());
-                        }
-                    }
-                    //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
-                    if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
-                            && crnProtocol.statusType == CrnStatusType.WAITING
-                            && crnProtocol.forkPosType == CrnForkPosType.HOME) {
-
-                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                        if (crnProtocol.getCrnNo()<=2){
-
-                            StaProtocol staProtocolOther = devpThread.getStation().get(crnStn.getStaNoOther());
-                            if (staProtocolOther == null) {
-                                continue;
-                            } else {
-                                staProtocolOther = staProtocolOther.clone();
-                            }
-                            if (staProtocolOther.isAutoing() && staProtocolOther.isLoading() && (staProtocolOther.getWorkNo() == 0 || staProtocolOther.getStaNo() == null)) {
-                                WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(wrkMast.getWrkNo());
-                                if (Cools.isEmpty(wrkMastCrn)){
-                                    continue;
-                                }
-
-                                WrkMast wrkMastOne = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoOne().intValue());
-                                WrkMast wrkMastTwo = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue());
-                                WrkMast wrkMast1 = null;
-                                WrkMast wrkMast2 = null;
-                                if (Utils.getRow(wrkMastOne.getSourceLocNo()) == wrkMast.getCrnNo()*4){
-                                    wrkMast1 = wrkMastTwo;
-                                    wrkMast2 = wrkMastOne;
-                                }else {
-                                    wrkMast2 = wrkMastTwo;
-                                    wrkMast1 = wrkMastOne;
-                                }
-
-                                // 涓嬪彂绔欑偣淇℃伅
-                                staProtocolOther.setWorkNo(Cools.isEmpty(wrkMast1.getWorkNoOther())? wrkMast1.getWrkNo():wrkMast1.getWorkNoOther());
-                                staProtocolOther.setStaNo(wrkMast1.getStaNo());
-                                if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocolOther))) {
-                                    continue;
-                                }
-
-                                // 涓嬪彂绔欑偣淇℃伅
-                                staProtocol.setWorkNo(Cools.isEmpty(wrkMast2.getWorkNoOther())? wrkMast2.getWrkNo():wrkMast2.getWorkNoOther());
-//                                    staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
-                                staProtocol.setStaNo(wrkMast2.getStaNo());
-                                if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
-                                    continue;
-                                }
-                                boolean sign = true;
-
-                                // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
-                                wrkMastCrn.setWrkSts(14L);
-                                if (wrkMastCrnMapper.updateById(wrkMastCrn) != 0) {
-                                } else {
-                                    sign = false;
-                                    log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
-                                }
-
-                                // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
-                                wrkMastOne.setWrkSts(14L);
-                                wrkMastOne.setCrnEndTime(new Date());
-                                if (wrkMastMapper.updateById(wrkMastOne) != 0) {
-                                } else {
-                                    sign = false;
-                                    log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
-                                }
-
-                                // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
-                                wrkMastTwo.setWrkSts(14L);
-                                wrkMastTwo.setCrnEndTime(new Date());
-                                if (wrkMastMapper.updateById(wrkMastTwo) != 0) {
-                                } else {
-                                    sign = false;
-                                    log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
-                                }
-
-                                if (sign){
-                                    // 澶嶄綅鍫嗗灈鏈�
-                                    crnThread.setResetFlag(true);
-                                }
-                            }
-
-                        }else {
-                            // 涓嬪彂绔欑偣淇℃伅
-                            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);
-                            wrkMast.setCrnEndTime(new Date());
-                            if (wrkMastMapper.updateById(wrkMast) != 0) {
-                                // 澶嶄綅鍫嗗灈鏈�
-                                crnThread.setResetFlag(true);
-                            } else {
-                                log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
-     */
-    public synchronized void crnStnToOutStnTwo() {
-        for (CrnSlave crnSlave : slaveProperties.getCrn()) {
-            // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
-            for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
-                // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
-                    // 鏌ヨ宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
-                    if (wrkMast == null) {
-                        continue;
-                    }
-                    // 鍒ゆ柇宸ヤ綔妗f潯浠�
-                    if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
-                        continue;
-                    }
-                    // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
-                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
-                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                    if (crnProtocol.statusTypeTwo == CrnStatusType.FETCHING || crnProtocol.statusTypeTwo == CrnStatusType.PUTTING) {
-                        // 绉诲姩涓�
-                        continue;
-                    }
-
-                    //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
-                    if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNoTwo().equals(wrkMast.getWrkNo().shortValue())
-                            && crnProtocol.statusTypeTwo == CrnStatusType.WAITING
-                            && crnProtocol.forkPosTypeTwo == CrnForkPosType.HOME) {
-
-                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                        // 涓嬪彂绔欑偣淇℃伅
-                        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);
-                        wrkMast.setCrnEndTime(new Date());
-                        if (wrkMastMapper.updateById(wrkMast) != 0) {
-                            // 澶嶄綅鍫嗗灈鏈�
-                            crnThread.setResetFlagTwo(true);
-                        } else {
-                            log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
-     */
-    public synchronized void crnIoExecute() {
-        try{
-            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
-                        && crnProtocol.getLoaded() == 0
-                        && crnProtocol.getForkPos() == 0) {
-                    // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-                    if (crnProtocol.getLastIo().equals("I")) {
-                        if (basCrnp.getInEnable().equals("Y")) {
-                            switch (crn.getId()){
-                                case 1:
-                                case 2:
-                                    this.crnStnToLoc1Single(crn, crnProtocol); //  鍏ュ簱
-                                    break;
-                                case 3:
-                                case 4:
-                                case 5:
-                                    continue;
-                                default:
-                                    this.crnStnToLoc1(crn, crnProtocol,1); //  鍏ュ簱
-                            }
-                            crnProtocol.setLastIo("O");
-                        } else if (basCrnp.getOutEnable().equals("Y")) {
-                            switch (crn.getId()){
-                                case 1:
-                                case 2:
-                                    this.locToCrnStn1Single(crn, crnProtocol); //  鍑哄簱
-                                    break;
-                                case 3:
-                                case 4:
-                                case 5:
-                                    continue;
-                                default:
-                                    this.locToCrnStn1(crn, crnProtocol,1); //  鍑哄簱
-                            }
-                            crnProtocol.setLastIo("I");
-                        }
-                    }
-                    // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-                    else if (crnProtocol.getLastIo().equals("O")) {
-                        if (basCrnp.getOutEnable().equals("Y")) {
-                            switch (crn.getId()){
-                                case 1:
-                                case 2:
-                                    this.locToCrnStn1Single(crn, crnProtocol); //  鍑哄簱
-                                    break;
-                                case 3:
-                                case 4:
-                                case 5:
-                                    continue;
-                                default:
-                                    this.locToCrnStn1(crn, crnProtocol,1); //  鍑哄簱
-                            }
-                            crnProtocol.setLastIo("I");
-                        } else if (basCrnp.getInEnable().equals("Y")) {
-                            switch (crn.getId()){
-                                case 1:
-                                case 2:
-                                    this.crnStnToLoc1Single(crn, crnProtocol); //  鍏ュ簱
-                                    break;
-                                case 3:
-                                case 4:
-                                case 5:
-                                    continue;
-                                default:
-                                    this.crnStnToLoc1(crn, crnProtocol,1); //  鍏ュ簱
-                            }
-                            crnProtocol.setLastIo("O");
-                        }
-                    }
-                }
-                // 搴撲綅绉昏浆
-                this.locToLoc(crn, crnProtocol);
-//            this.crnRebackHp(crnProtocol, crnThread);
-
-            }
-        }catch (Exception e){
-            log.error("鍫嗗灈鏈哄嚭鍏ュ簱涓嬪彂鎶ラ敊"+e);
-        }
-    }
-
-    /**
-     * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
-     */
-    public synchronized void crnIoExecuteTwo() {
-        try{
-            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;
-                }
-
-
-                int[] sign = new int[]{0,0};
-                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                if (crnProtocol.getModeType() == CrnModeType.AUTO) {
-                    // 鍙湁褰撳爢鍨涙満宸ヤ綅绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                    if (crnProtocol.getStatusType() == CrnStatusType.IDLE
-                            && crnProtocol.getTaskNo() == 0
-                            && crnProtocol.getLoaded() == 0
-                            && crnProtocol.getForkPos() == 0) {
-//                        sign[0] = 1;
-//                        sign[1] = 1;
-                        /*
-                        * 浠诲姟鎷嗗垎鐗规畩澶勭悊
-                        * */
-                        if (crnProtocol.getStatusTypeTwo() == CrnStatusType.IDLE
-                                && crnProtocol.getTaskNoTwo() == 0
-                                && crnProtocol.getLoadedTwo() == 0
-                                && crnProtocol.getForkPosTwo() == 0){
-                            sign[0] = 1;
-                            sign[1] = 1;
-                        }
-                    }else if (crnProtocol.getStatusTypeTwo() == CrnStatusType.IDLE
-                            && crnProtocol.getTaskNoTwo() == 0
-                            && crnProtocol.getLoadedTwo() == 0
-                            && crnProtocol.getForkPosTwo() == 0){
-                        sign[0] = 1;
-                        sign[1] = 2;
-                    }
-                }
-
-                if (sign[0]==1 && sign[1] == 1){
-                    // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-                    if (crnProtocol.getLastIo().equals("I")) {
-                        if (basCrnp.getInEnable().equals("Y")) {
-                            switch (crn.getId()){
-                                case 3:
-                                case 4:
-                                case 5:
-                                    this.crnStnToLoc1Big(crn, crnProtocol, sign[1]); //  鍏ュ簱
-                                    break;
-                                default:
-                                    continue;
-                            }
-                            crnProtocol.setLastIo("O");
-                        } else if (basCrnp.getOutEnable().equals("Y")) {
-                            switch (crn.getId()){
-                                case 3:
-                                case 4:
-                                case 5:
-                                    this.locToCrnStn1Big(crn, crnProtocol, sign[1]); //  鍑哄簱
-                                    break;
-                                default:
-                                    continue;
-                            }
-                            crnProtocol.setLastIo("I");
-                        }
-                    }
-                    // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-                    else if (crnProtocol.getLastIo().equals("O")) {
-                        if (basCrnp.getOutEnable().equals("Y")) {
-                            switch (crn.getId()){
-                                case 3:
-                                case 4:
-                                case 5:
-                                    this.locToCrnStn1Big(crn, crnProtocol, sign[1]); //  鍑哄簱
-                                    break;
-                                default:
-                                    continue;
-                            }
-                            crnProtocol.setLastIo("I");
-                        } else if (basCrnp.getInEnable().equals("Y")) {
-                            switch (crn.getId()){
-                                case 3:
-                                case 4:
-                                case 5:
-                                    this.crnStnToLoc1Big(crn, crnProtocol, sign[1]); //  鍏ュ簱
-                                    break;
-                                default:
-                                    continue;
-                            }
-                            crnProtocol.setLastIo("O");
-                        }
-                    }
-                }
-
-                // 搴撲綅绉昏浆
-                this.locToLoc(crn, crnProtocol);
-//            this.crnRebackHp(crnProtocol, crnThread);
-
-            }
-        }catch (Exception e){
-            log.error("鍫嗗灈鏈哄嚭鍏ュ簱涓嬪彂鎶ラ敊"+e);
-        }
-    }
-
-    /**
-     * 鎼滅储RGV杞︺�傞�氳繃鐩爣绔欐悳绱㈠摢鍙拌溅鍙敤
-     */
-    public synchronized Integer searchRgvNo(Integer staNo) {
-        try{
-            BasDevp basDevp = basDevpService.selectById(staNo);
-            if (basDevp == null) {
-                return null;//鐩爣绔欎笉瀛樺湪
-            }
-            //璺緞鍊�
-            int path = basDevp.getLocType3().intValue();
-
-            ArrayList<RgvThread> list = new ArrayList<>();
-            for (RgvSlave rgv : slaveProperties.getRgv()) {
-                // 鑾峰彇RGV淇℃伅
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-
-                    continue;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgv.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgv.getId());
-                    continue;
-                }
-
-                list.add(rgvThread);
-            }
-
-            if (list.size() > 1) {
-                //瓒呰繃涓ゅ彴杞︼紝鎸夌収閰嶇疆鐨勮鍒欒繘琛屽垎閰�
-                for (RgvThread rgvThread : list) {
-                    //鑾峰彇杞﹁締閰嶇疆鐨勮矾寰勮鍒�
-                    BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(rgvThread.getSlave().getId());
-                    if (basRgvPath == null) {
-                        continue;
-                    }
-                    //鐩爣绔欐槸鍚﹀寘鍚綋鍓嶈矾寰勪腑
-                    List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
-                    if (rgvPath.contains(path)) {
-                        //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞�
-                        return rgvThread.getSlave().getId();
-                    }
-                }
-            }else {
-                //灏忎簬鎴栫瓑浜�1鍙拌溅锛屽垎閰嶅叏璺緞
-                BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(0);//鑾峰彇榛樿璺緞
-                if (basRgvPath == null) {
-                    return null;
-                }
-                List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
-                if (rgvPath.contains(path)) {
-                    //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞�
-                    return list.get(0).getSlave().getId();
-                }
-            }
-
-            return null;
-        }catch (Exception e){
-            log.error("鎼滅储RGV杞︺�傞�氳繃鐩爣绔欐悳绱㈠摢鍙拌溅鍙敤"+e);
-            return null;
-        }
-    }
-
-    /**
-     * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
-     */
-    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;
-            }
-            log.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo((short) 63333); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
-            crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
-            if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
-                log.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
-            }
-            crnThread.setBackHpFlag(true);
-        }
-//        }
-    }
-
-    /**
-     * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
-     */
-    public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
-        for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
-            boolean flag = false;
-            // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-            if (staProtocol == null) {
-                continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-            if (staDetl == null) {
-                log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                continue;
-            }
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
-                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
-                flag = true;
-            }
-            if (!flag) {
-                continue;
-            }
-            // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
-            WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
-            if (null == wrkMast) {
-//                log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
-                continue;
-            }
-            // 鑾峰彇搴撲綅淇℃伅
-            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-            if (locMast == null) {
-                log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
-                continue;
-            }
-            if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
-                log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
-                continue;
-            }
-
-            // 鍫嗗灈鏈烘帶鍒惰繃婊�
-            if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-                continue;
-            }
-
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                continue;
-            }
-
-            // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
-                String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
-                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 {
-                        waitWrkMast.setIoPri(15D);
-                        waitWrkMast.setModiTime(new Date());
-                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                            log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                        }
-                        continue;
-                    }
-
-                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                    // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-                    if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-                        wrkMast.setUpdMk("Y");
-                        wrkMast.setIoPri(14D);
-                        wrkMastMapper.updateById(wrkMast);
-                        // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                        moveLocForDeepLoc(slave, shallowLoc);
-                        // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-//                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
-                    }
-                    continue;
-                } else if (shallowLoc.getLocSts().equals("Q")) {
-                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                    if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                        continue;
-                    }
-                }
-            }
-
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", 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);
-                wrkMast.setCrnStrTime(now);
-                wrkMast.setModiTime(now);
-                if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
-     * 2024-06-05
-     */
-    public synchronized void crnStnToLoc1Big(CrnSlave slave, CrnProtocol crnProtocol, Integer crnStation) {
-        List<WrkMast> wrkMasts = wrkMastMapper.selectPakInStep12(slave.getId());
-        for(WrkMast wrkMast : wrkMasts){
-            if (wrkMast == null) {
-                continue;
-            }
-
-            CrnSlave.CrnStn crnStn = null;
-            for (CrnSlave.CrnStn crnStn1 : slave.getCrnInStn()){
-                if(crnStn1.getStaNo().equals(wrkMast.getStaNo())){
-                    crnStn = crnStn1;
-                    break;
-                }
-            }
-            if(Cools.isEmpty(crnStn)){
-                continue;
-            }
-
-            boolean flag = false;
-            // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-            if (staProtocol == null) {
-                continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-            if (staDetl == null) {
-                log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                continue;
-            }
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo().equals(wrkMast.getWrkNo())
-                    && staProtocol.isInEnable() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
-                flag = true;
-            }
-            if (!flag) {
-                continue;
-            }
-
-            // 鑾峰彇搴撲綅淇℃伅
-            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-            if (locMast == null) {
-                log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
-                continue;
-            }
-            if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
-                log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
-                continue;
-            }
-
-            //宸ヤ綅
-            if (crnStation == 1){
-                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-                    break;
-                }
-                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                if (!crnProtocol.getStatusTypeTwo().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNoTwo() != 0) {
-                    break;
-                }
-            }else if(crnStation == 2){
-                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                if (!crnProtocol.getStatusTypeTwo().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNoTwo() != 0) {
-                    break;
-                }
-            }else {
-                break;
-            }
-
-
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                continue;
-            }
-
-            // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
-                String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
-                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 {
-                        waitWrkMast.setIoPri(15D);
-                        waitWrkMast.setModiTime(new Date());
-                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                            log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                        }
-                        continue;
-                    }
-
-                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                    // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-                    if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-                        wrkMast.setUpdMk("Y");
-                        wrkMast.setIoPri(14D);
-                        wrkMastMapper.updateById(wrkMast);
-                        // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                        moveLocForDeepLoc(slave, shallowLoc);
-                        // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-//                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
-                    }
-                    continue;
-                } else if (shallowLoc.getLocSts().equals("Q")) {
-                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                    if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                        continue;
-                    }
-                }
-            }
-
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.SEPARATE_TAKE); // 浠诲姟妯″紡:  鍗曞彇璐�
-            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX((short)0);     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY((short)0);     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ((short)0);     // 鐩爣搴撲綅灞�
-            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(crnStation==1? 2:5, crnCommand))) {
-                log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-            } else {
-                // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
-                Date now = new Date();
-                wrkMast.setWrkSts(3L);
-                wrkMast.setCrnStrTime(now);
-                wrkMast.setModiTime(now);
-                if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
-     * 2024-01-15 鐓滄槦灏忔枡绠�
-     */
-    public synchronized void crnStnToLoc1Single(CrnSlave slave, CrnProtocol crnProtocol) {
-        List<WrkMast> wrkMasts = wrkMastMapper.selectPakInStep12(slave.getId());
-        for(WrkMast wrkMast : wrkMasts){
-            if (wrkMast == null) {
-                continue;
-            }
-
-            CrnSlave.CrnStn crnStn = null;
-            for (CrnSlave.CrnStn crnStn1 : slave.getCrnInStn()){
-                if(crnStn1.getStaNo().equals(wrkMast.getStaNo())){
-                    crnStn = crnStn1;
-                    break;
-                }
-            }
-            if(Cools.isEmpty(crnStn)){
-                continue;
-            }
-
-            boolean flag = false;
-            boolean flagOther = false;
-            // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-            if (staProtocol == null) {
-                continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            StaProtocol staProtocolOther = devpThread.getStation().get(crnStn.getStaNoOther());
-            if (staProtocolOther == null) {
-                continue;
-            } else {
-                staProtocolOther = staProtocolOther.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-            if (staDetl == null) {
-                log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                continue;
-            }
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo().equals(wrkMast.getWrkNo())
-                    && staProtocol.isInEnable() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
-                flag = true;
-            }
-
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetlOther = basDevpService.selectById(crnStn.getStaNoOther());
-            if (staDetlOther == null) {
-                log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNoOther());
-                continue;
-            }
-            if (staProtocolOther.isAutoing() && staProtocolOther.isLoading() && staProtocolOther.getWorkNo() > 0 && staProtocolOther.isInEnable()
-                    && staDetlOther.getCanining() != null && staDetlOther.getCanining().equals("Y")) {
-                flagOther = true;
-            }
-            if (!flag || !flagOther) {
-                continue;
-            }
-
-            //鏌ヨ鍫嗗灈鏈轰换鍔�
-            WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(wrkMast.getWrkNo());
-            if (Cools.isEmpty(wrkMastCrn)){
-                continue;
-            }
-
-            WrkMast wrkMastOther = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue());
-
-            // 鑾峰彇搴撲綅淇℃伅
-            LocMast locMast = locMastService.selectById(Utils.getRow(wrkMastCrn.getLocNo())%4>2? wrkMastCrn.getLocNoTwo():wrkMastCrn.getLocNoOne());
-            if (locMast == null) {
-                log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMastCrn.getLocNo());
-                continue;
-            }
-            if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
-                log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locMast.getLocNo(), locMast.getLocSts());
-                continue;
-            }
-
-            // 鍫嗗灈鏈烘帶鍒惰繃婊�
-            if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-                continue;
-            }
-
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                continue;
-            }
-
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-            } else {
-                // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
-                Date now = new Date();
-                wrkMast.setWrkSts(3L);
-                wrkMast.setCrnStrTime(now);
-                wrkMast.setModiTime(now);
-                if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                }
-
-                // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
-                wrkMastOther.setWrkSts(3L);
-                wrkMastOther.setCrnStrTime(now);
-                wrkMastOther.setModiTime(now);
-                if (wrkMastMapper.updateById(wrkMastOther) == 0) {
-                    log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMastOther.getWrkNo());
-                }
-
-                wrkMastCrn.setWrkSts(3L);
-                wrkMastCrn.setModiTime(now);
-                if (wrkMastCrnMapper.updateById(wrkMastCrn) == 0) {
-                    log.error("淇敼鍫嗗灈鏈哄伐浣滄。鐘舵�� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMastCrn.getWrkNo());
-                }
-            }
-        }
-
-    }
-
-    /**
-     * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
-     * 2024-01-15 浼樺寲鍙屽伐浣�
-     */
-    public synchronized void crnStnToLoc1(CrnSlave slave, CrnProtocol crnProtocol, Integer crnStation) {
-        List<WrkMast> wrkMasts = wrkMastMapper.selectPakInStep12(slave.getId());
-        for(WrkMast wrkMast : wrkMasts){
-            if (wrkMast == null) {
-                continue;
-            }
-
-            CrnSlave.CrnStn crnStn = null;
-            for (CrnSlave.CrnStn crnStn1 : slave.getCrnInStn()){
-                if(crnStn1.getStaNo().equals(wrkMast.getStaNo())){
-                    crnStn = crnStn1;
-                    break;
-                }
-            }
-            if(Cools.isEmpty(crnStn)){
-                continue;
-            }
-
-            boolean flag = false;
-            // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-            if (staProtocol == null) {
-                continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-            if (staDetl == null) {
-                log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                continue;
-            }
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo().equals(wrkMast.getWrkNo())
-                    && staProtocol.isInEnable() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
-                flag = true;
-            }
-            if (!flag) {
-                continue;
-            }
-
-            // 鑾峰彇搴撲綅淇℃伅
-            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-            if (locMast == null) {
-                log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
-                continue;
-            }
-            if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
-                log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
-                continue;
-            }
-
-            //宸ヤ綅
-            if (crnStation == 1){
-                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-                    break;
-                }
-            }else if(crnStation == 2){
-                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                if (!crnProtocol.getStatusTypeTwo().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNoTwo() != 0) {
-                    break;
-                }
-            }else {
-                break;
-            }
-
-
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                continue;
-            }
-
-            // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
-                String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
-                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 {
-                        waitWrkMast.setIoPri(15D);
-                        waitWrkMast.setModiTime(new Date());
-                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                            log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                        }
-                        continue;
-                    }
-
-                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                    // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-                    if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-                        wrkMast.setUpdMk("Y");
-                        wrkMast.setIoPri(14D);
-                        wrkMastMapper.updateById(wrkMast);
-                        // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                        moveLocForDeepLoc(slave, shallowLoc);
-                        // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-//                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
-                    }
-                    continue;
-                } else if (shallowLoc.getLocSts().equals("Q")) {
-                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                    if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                        continue;
-                    }
-                }
-            }
-
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(crnStation==1? 2:5, crnCommand))) {
-                log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-            } else {
-                // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
-                Date now = new Date();
-                wrkMast.setWrkSts(3L);
-                wrkMast.setCrnStrTime(now);
-                wrkMast.setModiTime(now);
-                if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
-     * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
-     */
-    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
-        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
-            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
-//            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
-            List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo());
-            for (WrkMast wrkMast : wrkMasts) {
-                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.getSourceLocNo(), sourceSta.getLocSts());
-                    continue;
-                }
-                // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-                if (staProtocol == null) {
-                    break;
-//                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-//            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-                if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-                    continue;
-                }
-
-                // 鏌ヨ绔欑偣璇︾粏淇℃伅
-                BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-                if (staDetl == null) {
-                    log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                    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;
-                        break;
-                    }
-
-                    // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-                    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")) {
-//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                            //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                            // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-//                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
-//                                || Cools.isEmpty(waitWrkMast)) {
-                            if (Cools.isEmpty(waitWrkMast)) {
-                                wrkMast.setUpdMk("Y");
-                                wrkMastMapper.updateById(wrkMast);
-                                // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                                moveLocForDeepLoc(slave, shallowLoc);
-                            }
-                            log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
-                            continue;
-                        } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                            if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                                continue;
-                            }
-                        }
-                    }
-
-                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                        break;
-//                        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());
-                        }
-                        break;
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
-     * 2024-01-15 浼樺寲鍙屽伐浣�
-     */
-    public synchronized void locToCrnStn1(CrnSlave slave, CrnProtocol crnProtocol, Integer crnStation) {
-        List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep12(slave.getId());
-        for (WrkMast wrkMast : wrkMasts) {
-            if (wrkMast == null) {
-                continue;
-            }
-
-            CrnSlave.CrnStn crnStn = null;
-            for (CrnSlave.CrnStn crnStn1 : slave.getCrnOutStn()){
-                if(crnStn1.getStaNo().equals(wrkMast.getSourceStaNo())){
-                    crnStn = crnStn1;
-                    break;
-                }
-            }
-            if(Cools.isEmpty(crnStn)){
-                continue;
-            }
-
-            // 宸ヤ綔妗g姸鎬佸垽鏂�
-            if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
-                log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
-                continue;
-            }
-            //閫�搴撴ā寮忚烦杩�118銆�119鍑哄簱浠诲姟
-            if (wrkMast.getStaNo()==118 || wrkMast.getStaNo()==119){
-                RgvOneSign rgvOneSign = rgvOneSignMapper.selectOneSign();
-                if (Cools.isEmpty(rgvOneSign) || rgvOneSign.getRgvOneSign()==1){
-                    continue;
-                }
-            }
-            // 鑾峰彇婧愬簱浣嶄俊鎭�
-            LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-            if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
-                log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getSourceLocNo(), sourceSta.getLocSts());
-                continue;
-            }
-            // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-            if (staProtocol == null) {
-                break;
-//                    continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-
-//            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-            if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-                continue;
-            }
-
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-            if (staDetl == null) {
-                log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                break;
-//                    continue;
-            }
-            // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                    && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-
-                //宸ヤ綅
-                if (crnStation == 1){
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                        continue;
-                        break;
-                    }
-                }else if(crnStation == 2){
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusTypeTwo().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNoTwo() != 0) {
-//                        continue;
-                        break;
-                    }
-                }else {
-                    break;
-                }
-
-                // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-                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")) {
-//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                        //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
-                        WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                        // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-//                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
-//                                || Cools.isEmpty(waitWrkMast)) {
-                        if (Cools.isEmpty(waitWrkMast)) {
-                            wrkMast.setUpdMk("Y");
-                            wrkMastMapper.updateById(wrkMast);
-                            // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                            moveLocForDeepLoc(slave, shallowLoc);
-                        }
-                        log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
-                        continue;
-                    } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
-                        WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                        if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                            continue;
-                        }
-                    }
-                }
-
-                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                    break;
-//                        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(crnStation==1? 2:5, 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());
-                    }
-                    break;
-                }
-            }
-        }
-
-    }
-
-    /**
-     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
-     * 2024-01-15 鐓滄槦灏忔枡绠�
-     */
-    public synchronized void locToCrnStn1Single(CrnSlave slave, CrnProtocol crnProtocol) {
-        List<WrkMastCrn> wrkMastCrnList = wrkMastCrnMapper.selectList(new EntityWrapper<WrkMastCrn>()
-                .eq("crn_no", crnProtocol.getCrnNo()).eq("wrk_sts", 11L));
-        for (WrkMastCrn wrkMastCrn : wrkMastCrnList) {
-            if (wrkMastCrn == null) {
-                continue;
-            }
-
-            CrnSlave.CrnStn crnStn = null;
-            for (CrnSlave.CrnStn crnStn1 : slave.getCrnOutStn()){
-                if(crnStn1.getStaNo().equals(wrkMastCrn.getSourceStaNo())){
-                    crnStn = crnStn1;
-                    break;
-                }
-            }
-            if(Cools.isEmpty(crnStn)){
-                continue;
-            }
-
-            // 宸ヤ綔妗g姸鎬佸垽鏂�
-            if (wrkMastCrn.getIoType() < 100 || wrkMastCrn.getSourceStaNo() == null) {
-                log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMastCrn.getWrkNo(), wrkMastCrn.getSourceLocNo(), wrkMastCrn.getIoType());
-                continue;
-            }
-            // 鑾峰彇婧愬簱浣嶄俊鎭�
-            LocMast sourceSta = locMastService.selectById(wrkMastCrn.getSourceLocNo());
-            if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
-                log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMastCrn.getSourceLocNo(), sourceSta.getLocSts());
-                continue;
-            }
-            // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-            if (staProtocol == null) {
-                break;
-//                    continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-
-            StaProtocol staProtocolOther = devpThread.getStation().get(crnStn.getStaNoOther());
-            if (staProtocolOther == null) {
-                continue;
-            } else {
-                staProtocolOther = staProtocolOther.clone();
-            }
-
-//            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-//            if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-//                continue;
-//            }
-
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-            if (staDetl == null) {
-                log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                break;
-//                    continue;
-            }
-
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetlOther = basDevpService.selectById(crnStn.getStaNoOther());
-            if (staDetlOther == null) {
-                log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNoOther());
-                break;
-//                    continue;
-            }
-            // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                    && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-                if (staProtocolOther.isAutoing() && !staProtocolOther.isLoading() && staDetlOther.getCanouting() != null && staDetlOther.getCanouting().equals("Y")
-                        && staProtocolOther.getWorkNo() == 0 && staProtocolOther.isOutEnable()){
-                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                        continue;
-                        break;
-                    }
-
-                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                        break;
-//                        return;
-                    }
-
-                    // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-                    CrnCommand crnCommand = new CrnCommand();
-                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                    crnCommand.setTaskNo(wrkMastCrn.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, wrkMastCrn.getCrnNo(), new Task(2, crnCommand))) {
-                        log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMastCrn.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                        Date now = new Date();
-                        wrkMastCrn.setWrkSts(12L);
-                        wrkMastCrn.setModiTime(now);
-                        if (wrkMastCrnMapper.updateById(wrkMastCrn) == 0) {
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMastCrn.getWrkNo());
-                        }
-
-                        WrkMast wrkMastOne = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoOne().intValue());
-                        wrkMastOne.setWrkSts(12L);
-                        wrkMastOne.setCrnStrTime(now);
-                        wrkMastOne.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMastOne) == 0) {
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMastOne.getWrkNo());
-                        }
-
-                        WrkMast wrkMastTwo = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue());
-                        wrkMastTwo.setWrkSts(12L);
-                        wrkMastTwo.setCrnStrTime(now);
-                        wrkMastTwo.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMastTwo) == 0) {
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMastTwo.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-            }
-        }
-
-    }
-
-    /**
-     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
-     * 2024-06-05  鐓滄槦澶ф枡绠�
-     */
-    public synchronized void locToCrnStn1Big(CrnSlave slave, CrnProtocol crnProtocol, Integer crnStation) {
-        List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep12(slave.getId());
-        for (WrkMast wrkMast : wrkMasts) {
-            if (wrkMast == null) {
-                continue;
-            }
-
-            CrnSlave.CrnStn crnStn = null;
-            for (CrnSlave.CrnStn crnStn1 : slave.getCrnOutStn()){
-                if(crnStn1.getStaNo().equals(wrkMast.getSourceStaNo())){
-                    crnStn = crnStn1;
-                    break;
-                }
-            }
-            if(Cools.isEmpty(crnStn)){
-                continue;
-            }
-
-            // 宸ヤ綔妗g姸鎬佸垽鏂�
-            if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) {
-                log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
-                continue;
-            }
-            //閫�搴撴ā寮忚烦杩�118銆�119鍑哄簱浠诲姟
-            if (wrkMast.getStaNo()==118 || wrkMast.getStaNo()==119){
-                RgvOneSign rgvOneSign = rgvOneSignMapper.selectOneSign();
-                if (Cools.isEmpty(rgvOneSign) || rgvOneSign.getRgvOneSign()==1){
-                    continue;
-                }
-            }
-            // 鑾峰彇婧愬簱浣嶄俊鎭�
-            LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-            if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
-                log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getSourceLocNo(), sourceSta.getLocSts());
-                continue;
-            }
-            // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-            if (staProtocol == null) {
-                break;
-//                    continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-
-//            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-            if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-                continue;
-            }
-
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-            if (staDetl == null) {
-                log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                break;
-//                    continue;
-            }
-            // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                    && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-
-                //宸ヤ綅
-                if (crnStation == 1){
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                        continue;
-                        break;
-                    }
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusTypeTwo().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNoTwo() != 0) {
-//                        continue;
-                        break;
-                    }
-                }else if(crnStation == 2){
-                    // 鍫嗗灈鏈烘帶鍒惰繃婊�
-                    if (!crnProtocol.getStatusTypeTwo().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNoTwo() != 0) {
-//                        continue;
-                        break;
-                    }
-                }else {
-                    break;
-                }
-
-                // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-                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")) {
-//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                        //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟
-                        WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                        // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-//                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())
-//                                || Cools.isEmpty(waitWrkMast)) {
-                        if (Cools.isEmpty(waitWrkMast)) {
-                            wrkMast.setUpdMk("Y");
-                            wrkMastMapper.updateById(wrkMast);
-                            // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                            moveLocForDeepLoc(slave, shallowLoc);
-                        }
-                        log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
-                        continue;
-                    } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
-                        WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                        if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                            continue;
-                        }
-                    }
-                }
-
-                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                    break;
-//                        return;
-                }
-
-                // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
-                CrnCommand crnCommand = new CrnCommand();
-                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                crnCommand.setTaskMode(CrnTaskModeType.SEPARATE_TAKE); // 浠诲姟妯″紡:  鍗曞彇璐�
-                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(crnStation==1? 2:5, 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());
-                    }
-                    break;
-                }
-            }
-        }
-
-    }
-
-    /**
-     * 鏌ユ壘宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級,涓擱GV鍏ュ簱鎺ラ┏绔欑鍚堢殑鐨勫叆搴撳伐浣滄。锛屾彁鍙栧嚭鏈�澶�2绗�
-     * @param slave
-     * @return
-     */
-    public synchronized List<WrkMast> getRgvInTask(RgvSlave slave){
-        List<WrkMast> wrkMastTask = new ArrayList<>();
-        List<Integer> staNos = new ArrayList<>();
-        for (RgvSlave.RgvStn rgvStn : slave.getRgvInSStn()) {
-            staNos.add(rgvStn.getStaNo());
-        }
-        if(staNos.size() < 1){
-            return null;
-        }
-        List<WrkMast> wrkMasts = wrkMastMapper.selectRgvInStep1(slave.getId(), staNos);
-        for(WrkMast wrkMast : wrkMasts){
-            Integer plcId = 0;
-            for (RgvSlave.RgvStn rgvStn : slave.getRgvInSStn()) {
-                if(rgvStn.getStaNo() == wrkMast.getRgvSstaNo()){
-                    plcId = rgvStn.getDevpPlcId();
-                    break;
-                }
-            }
-
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, plcId);
-            //鍒ゆ柇RGV鍏ュ簱婧愮珯鐐癸紝鑷姩銆佹湁鐗╋紝鏈変换鍔″彿锛屽彲鍑�
-            boolean flag1 = false;
-            StaProtocol staProtocol1 = devpThread.getStation().get(wrkMast.getRgvSstaNo());
-            if (staProtocol1 == null) {
-                continue;
-            } else {
-                staProtocol1 = staProtocol1.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl1 = basDevpService.selectById(wrkMast.getRgvSstaNo());
-            if (staDetl1 == null) {
-                log.error("RGV鍏ュ簱 ===>> 杈撻�佹満婧愮珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", wrkMast.getRgvSstaNo());
-                continue;
-            }
-            if (staProtocol1.isAutoing() && staProtocol1.isLoading() && staProtocol1.getWorkNo().intValue() == wrkMast.getWrkNo()
-                    && staProtocol1.isOutEnable() && staDetl1.getOutEnable() != null && staDetl1.getOutEnable().equals("Y")) {
-                flag1 = true;
-            }
-
-            //鍒ゆ柇RGV鍏ュ簱鐩爣绔欑偣锛岃嚜鍔ㄣ�佹棤鐗╋紝娌℃湁浠诲姟鍙凤紝鍙叆
-            boolean flag2 = false;
-            StaProtocol staProtocol2 = devpThread.getStation().get(wrkMast.getRgvDstaNo());
-            if (staProtocol2 == null) {
-                continue;
-            } else {
-                staProtocol2 = staProtocol2.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl2 = basDevpService.selectById(wrkMast.getRgvSstaNo());
-            if (staDetl2 == null) {
-                log.error("RGV鍏ュ簱 ===>> 杈撻�佹満婧愮珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", wrkMast.getRgvSstaNo());
-                continue;
-            }
-            if (staProtocol2.isAutoing() && staProtocol2.isLoading() && staProtocol2.getWorkNo().intValue() == wrkMast.getWrkNo()
-                    && staProtocol2.isInEnable() && staDetl2.getCanining() != null && staDetl2.getCanining().equals("Y")) {
-                flag2 = true;
-            }
-
-            if(flag1 && flag2){
-                wrkMastTask.add(wrkMast);
-                if(wrkMastTask.size() >= 2) break;
-            }
-        }
-        return wrkMastTask;
-    }
-
-    /**
-     * 鏌ユ壘宸ヤ綔鐘舵�佷负14锛堝嚭搴撳畬鎴愶級,涓擱GV鍑哄簱鎺ラ┏绔欑鍚堢殑鐨勫嚭搴撳伐浣滄。锛屾彁鍙栧嚭鏈�澶�2绗�
-     * @param slave
-     * @return
-     */
-    public synchronized List<WrkMast> getRgvOutTask(RgvSlave slave){
-        List<WrkMast> wrkMastTask = new ArrayList<>();
-        List<Integer> staNos = new ArrayList<>();
-        for (RgvSlave.RgvStn rgvStn : slave.getRgvOutSStn()) {
-            staNos.add(rgvStn.getStaNo());
-        }
-        if(staNos.size() < 1){
-            return null;
-        }
-        List<WrkMast> wrkMasts = wrkMastMapper.selectRgvOutStep1(slave.getId(), staNos);
-        for(WrkMast wrkMast : wrkMasts){
-            Integer plcId = 0;
-            for (RgvSlave.RgvStn rgvStn : slave.getRgvOutSStn()) {
-                if(rgvStn.getStaNo() == wrkMast.getRgvSstaNo()){
-                    plcId = rgvStn.getDevpPlcId();
-                    break;
-                }
-            }
-
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, plcId);
-            //鍒ゆ柇RGV鍑哄簱婧愮珯鐐癸紝鑷姩銆佹湁鐗╋紝鏈変换鍔″彿锛屽彲鍑�
-            boolean flag1 = false;
-            StaProtocol staProtocol1 = devpThread.getStation().get(wrkMast.getRgvSstaNo());
-            if (staProtocol1 == null) {
-                continue;
-            } else {
-                staProtocol1 = staProtocol1.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl1 = basDevpService.selectById(wrkMast.getRgvSstaNo());
-            if (staDetl1 == null) {
-                log.error("RGV鍑哄簱 ===>> 杈撻�佹満婧愮珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", wrkMast.getRgvSstaNo());
-                continue;
-            }
-            if (staProtocol1.isAutoing() && staProtocol1.isLoading() && staProtocol1.getWorkNo().intValue() == wrkMast.getWrkNo()
-                    && staProtocol1.isOutEnable() && staDetl1.getOutEnable() != null && staDetl1.getOutEnable().equals("Y")) {
-                flag1 = true;
-            }
-
-            //鍒ゆ柇RGV鍑哄簱鐩爣绔欑偣锛岃嚜鍔ㄣ�佹棤鐗╋紝娌℃湁浠诲姟鍙凤紝鍙叆
-            boolean flag2 = false;
-            StaProtocol staProtocol2 = devpThread.getStation().get(wrkMast.getRgvDstaNo());
-            if (staProtocol2 == null) {
-                continue;
-            } else {
-                staProtocol2 = staProtocol2.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl2 = basDevpService.selectById(wrkMast.getRgvSstaNo());
-            if (staDetl2 == null) {
-                log.error("RGV鍑哄簱 ===>> 杈撻�佹満婧愮珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", wrkMast.getRgvSstaNo());
-                continue;
-            }
-            if (staProtocol2.isAutoing() && staProtocol2.isLoading() && staProtocol2.getWorkNo().intValue() == wrkMast.getWrkNo()
-                    && staProtocol2.isInEnable() && staDetl2.getCanining() != null && staDetl2.getCanining().equals("Y")) {
-                flag2 = true;
-            }
-
-            if(flag1 && flag2){
-                wrkMastTask.add(wrkMast);
-                if(wrkMastTask.size() >= 2) break;
-            }
-        }
-        return wrkMastTask;
-    }
-
-    /**
-     * 搴撲綅绉昏浆
-     */
-    public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
-        // 鑾峰彇宸ヤ綔妗d俊鎭�
-        WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
-        if (null == wrkMast) {
-            return;
-        }
-        // 鑾峰彇婧愬簱浣嶄俊鎭�
-        LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-        if (null == sourceSta) {
-            log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
-            return;
-        }
-        // 婧愬簱浣�  搴撲綅鐘舵�佸垽鏂�
-        if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("S")) {
-            return;
-        }
-        // 鑾峰彇鐩爣搴撲綅淇℃伅
-        LocMast sta = locMastService.selectById(wrkMast.getLocNo());
-        if (null == sta) {
-            log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
-            return;
-        }
-        // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑�
-        BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
-        if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) {
-            return;
-        }
-
-        // 鍫嗗灈鏈烘帶鍒惰繃婊�
-        if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-            return;
-        }
-
-        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-            return;
-        }
-
-        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-        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(sta.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY(sta.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ(sta.getLev1().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());
-            }
-        }
-
-    }
-
-    /**
-     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
-     */
-    public synchronized void storeFinished() {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) {
-                continue;
-            }
-            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
-            if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
-                if (crnProtocol.getTaskNo() == 32222) {
-                    // 鍫嗗灈鏈哄浣�
-                    crnThread.setResetFlag(true);
-                } else if (crnProtocol.getCrnNo()<3) {
-                    // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                    WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(crnProtocol.getTaskNo().intValue());
-                    if (wrkMastCrn == null) {
-                        log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
-                        continue;
-                    }
-                    // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
-                    if (wrkMast == null) {
-                        log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
-                        continue;
-                    }
-
-                    // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                    WrkMast wrkMastOther = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue());
-                    if (wrkMastOther == null) {
-                        log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
-                        continue;
-                    }
-                    // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
-                    if (wrkMastCrn.getWrkSts() == 3 || (wrkMastCrn.getWrkSts() == 12 && wrkMastCrn.getIoType() == 11)) {
-                        wrkMastCrn.setWrkSts(4L);
-                    } else {
-                        continue;
-                    }
-                    Date now = new Date();
-                    wrkMastCrn.setModiTime(now);
-
-                    wrkMast.setCrnEndTime(now);
-                    wrkMast.setWrkSts(4L);
-                    wrkMast.setModiTime(now);
-
-                    wrkMastOther.setCrnEndTime(now);
-                    wrkMastOther.setWrkSts(4L);
-                    wrkMastOther.setModiTime(now);
-                    // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                    if (wrkMastCrnMapper.updateById(wrkMastCrn) > 0 && wrkMastMapper.updateById(wrkMast) > 0 && wrkMastMapper.updateById(wrkMastOther) > 0 ) {
-                        // 鍫嗗灈鏈哄浣�
-                        crnThread.setResetFlag(true);
-                    }
-                } else {
-                    // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
-                    if (wrkMast == null) {
-                        log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
-                        continue;
-                    }
-                    // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
-                    if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
-                        wrkMast.setWrkSts(4L);
-                    } else {
-                        continue;
-                    }
-                    Date now = new Date();
-                    wrkMast.setCrnEndTime(now);
-                    wrkMast.setModiTime(now);
-                    // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                    if (wrkMastMapper.updateById(wrkMast) > 0) {
-                        // 鍫嗗灈鏈哄浣�
-                        crnThread.setResetFlag(true);
-                    }
-                }
-
-            }
-        }
-    }
-    /**
-     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
-     */
-    public synchronized void storeFinishedTwo() {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            if (crn.getId()<3 || crn.getId()>5){
-                continue;
-            }
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) {
-                continue;
-            }
-            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
-            if (crnProtocol.statusTypeTwo == CrnStatusType.WAITING && crnProtocol.getTaskNoTwo() != 0) {
-                if (crnProtocol.getTaskNoTwo() == 32222) {
-                    // 鍫嗗灈鏈哄浣�
-                    crnThread.setResetFlagTwo(true);
-                } else {
-                    // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNoTwo().intValue());
-                    if (wrkMast == null) {
-                        log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNoTwo());
-                        continue;
-                    }
-                    // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
-                    if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
-                        wrkMast.setWrkSts(4L);
-                    } else {
-                        continue;
-                    }
-                    Date now = new Date();
-                    wrkMast.setCrnEndTime(now);
-                    wrkMast.setModiTime(now);
-                    // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                    if (wrkMastMapper.updateById(wrkMast) > 0) {
-                        // 鍫嗗灈鏈哄浣�
-                        crnThread.setResetFlagTwo(true);
-                    }
-                }
-
-            }
-        }
-    }
-
-    /**
-     * 寮傚父淇℃伅璁板綍
-     */
-    public synchronized void recErr() {
-        try {
-            this.recCrnErr();
-            this.recRgvErr();
-        } catch (Exception e) {
-            log.error("recErr fail", e);
-        }
-    }
-
-    /**
-     * RGV寮傚父淇℃伅璁板綍
-     */
-    public synchronized void recRgvErr() {
-        Date now = new Date();
+    public synchronized void loopSteCharge() {
         for (RgvSlave rgv : slaveProperties.getRgv()) {
-            // 鑾峰彇RGV淇℃伅
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
             RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                continue;
-            }
-            if (true) {
-                // 鏈変换鍔�
-                if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getTaskNo2() != 0) {
-                    Integer taskNo = rgvProtocol.getTaskNo1() > 0 ? rgvProtocol.getTaskNo1().intValue() : rgvProtocol.getTaskNo2().intValue();
-                    BasRgvErrLog latest = basRgvErrLogService.findLatestByTaskNo(rgv.getId(), taskNo);
-                    // 鏈夊紓甯�
-                    if (latest == null) {
-                        if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) {
-                            WrkMast wrkMast = wrkMastMapper.selectById(taskNo);
-                            if (wrkMast == null) {
-                                continue;
-                            }
-                            BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
-                            String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName();
-                            BasRgvErrLog basRgvErrLog = new BasRgvErrLog(
-                                    null,    // 缂栧彿
-                                    wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-                                    now,    // 鍙戠敓鏃堕棿
-                                    null,    // 缁撴潫鏃堕棿
-                                    wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-                                    wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-                                    rgv.getId(),    // 鍫嗗灈鏈�
-                                    null,    // plc
-                                    wrkMast.getLocNo(),    // 鐩爣搴撲綅
-                                    wrkMast.getStaNo(),    // 鐩爣绔�
-                                    wrkMast.getSourceStaNo(),    // 婧愮珯
-                                    wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-                                    wrkMast.getBarcode(),    // 鏉$爜
-                                    (int) rgvProtocol.getAlarm(),    // 寮傚父鐮�
-                                    errName,    // 寮傚父
-                                    1,    // 寮傚父鎯呭喌
-                                    now,    // 娣诲姞鏃堕棿
-                                    null,    // 娣诲姞浜哄憳
-                                    now,    // 淇敼鏃堕棿
-                                    null,    // 淇敼浜哄憳
-                                    "浠诲姟涓紓甯�"    // 澶囨敞
-                            );
-
-                            if (!basRgvErrLogService.insert(basRgvErrLog)) {
-                                log.error("RGV寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", rgv.getId(), errName);
-                            }
-                        }
-                    } else {
-                        // 寮傚父淇
-                        if (rgvProtocol.getAlarm() == null || rgvProtocol.getAlarm() == 0) {
-                            latest.setEndTime(now);
-                            latest.setUpdateTime(now);
-                            latest.setStatus(2);
-                            if (!basRgvErrLogService.updateById(latest)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", rgv.getId(), latest.getId());
-                            }
-                        }
-                    }
-                    // 鏃犱换鍔�
-                } else {
-                    BasRgvErrLog latest = basRgvErrLogService.findLatest(rgv.getId());
-                    // 鏈夊紓甯�
-                    if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) {
-                        // 璁板綍鏂板紓甯�
-                        if (latest == null || (latest.getErrCode() != rgvProtocol.getAlarm().intValue())) {
-                            BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
-                            String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName();
-                            BasRgvErrLog basRgvErrLog = new BasRgvErrLog(
-                                    null,    // 缂栧彿
-                                    null,    // 宸ヤ綔鍙�
-                                    now,    // 鍙戠敓鏃堕棿
-                                    null,    // 缁撴潫鏃堕棿
-                                    null,    // 宸ヤ綔鐘舵��
-                                    null,    // 鍏ュ嚭搴撶被鍨�
-                                    rgv.getId(),    // 鍫嗗灈鏈�
-                                    null,    // plc
-                                    null,    // 鐩爣搴撲綅
-                                    null,    // 鐩爣绔�
-                                    null,    // 婧愮珯
-                                    null,    // 婧愬簱浣�
-                                    null,    // 鏉$爜
-                                    (int) rgvProtocol.getAlarm(),    // 寮傚父鐮�
-                                    errName,    // 寮傚父
-                                    1,    // 寮傚父鎯呭喌
-                                    now,    // 娣诲姞鏃堕棿
-                                    null,    // 娣诲姞浜哄憳
-                                    now,    // 淇敼鏃堕棿
-                                    null,    // 淇敼浜哄憳
-                                    "鏃犱换鍔″紓甯�"    // 澶囨敞
-                            );
-
-                            if (!basRgvErrLogService.insert(basRgvErrLog)) {
-                                log.error("RGV寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", rgv.getId(), errName);
-                            }
-                        }
-                        // 鏃犲紓甯�
-                    } else {
-                        // 寮傚父淇
-                        if (latest != null && latest.getStatus() == 1) {
-                            latest.setEndTime(now);
-                            latest.setUpdateTime(now);
-                            latest.setStatus(2);
-                            if (!basRgvErrLogService.updateById(latest)) {
-                                log.error("RGV寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", rgv.getId(), latest.getId());
-                            }
-                        }
-                    }
-                }
-            }
-
-        }
-    }
-
-    /**
-     * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
-     */
-    public synchronized void recCrnErr() {
-        Date now = new Date();
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) {
-                continue;
-            }
-            if (true) {
-//            if (crnProtocol.getModeType() != CrnModeType.STOP) {
-                // 鏈変换鍔�
-                if (crnProtocol.getTaskNo() != 0) {
-                    BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue());
-                    // 鏈夊紓甯�
-                    if (latest == null) {
-                        if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
-                            WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
-                            if (wrkMast == null) {
-                                continue;
-                            }
-                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
-                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
-                            BasErrLog basErrLog = new BasErrLog(
-                                    null,    // 缂栧彿
-                                    wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
-                                    now,    // 鍙戠敓鏃堕棿
-                                    null,    // 缁撴潫鏃堕棿
-                                    wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-                                    wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
-                                    crn.getId(),    // 鍫嗗灈鏈�
-                                    null,    // plc
-                                    wrkMast.getLocNo(),    // 鐩爣搴撲綅
-                                    wrkMast.getStaNo(),    // 鐩爣绔�
-                                    wrkMast.getSourceStaNo(),    // 婧愮珯
-                                    wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-                                    wrkMast.getBarcode(),    // 鏉$爜
-                                    (int) crnProtocol.getAlarm(),    // 寮傚父鐮�
-                                    errName,    // 寮傚父
-                                    1,    // 寮傚父鎯呭喌
-                                    now,    // 娣诲姞鏃堕棿
-                                    null,    // 娣诲姞浜哄憳
-                                    now,    // 淇敼鏃堕棿
-                                    null,    // 淇敼浜哄憳
-                                    "浠诲姟涓紓甯�"    // 澶囨敞
-                            );
-                            if (!basErrLogService.insert(basErrLog)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
-                            }
-                        }
-                    } else {
-                        // 寮傚父淇
-                        if (crnProtocol.getAlarm() == null || crnProtocol.getAlarm() == 0) {
-                            latest.setEndTime(now);
-                            latest.setUpdateTime(now);
-                            latest.setStatus(2);
-                            if (!basErrLogService.updateById(latest)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
-                            }
-                        }
-                    }
-                    // 鏃犱换鍔�
-                } else {
-                    BasErrLog latest = basErrLogService.findLatest(crn.getId());
-                    // 鏈夊紓甯�
-                    if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
-                        // 璁板綍鏂板紓甯�
-                        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,    // 宸ヤ綔鍙�
-                                    now,    // 鍙戠敓鏃堕棿
-                                    null,    // 缁撴潫鏃堕棿
-                                    null,    // 宸ヤ綔鐘舵��
-                                    null,    // 鍏ュ嚭搴撶被鍨�
-                                    crn.getId(),    // 鍫嗗灈鏈�
-                                    null,    // plc
-                                    null,    // 鐩爣搴撲綅
-                                    null,    // 鐩爣绔�
-                                    null,    // 婧愮珯
-                                    null,    // 婧愬簱浣�
-                                    null,    // 鏉$爜
-                                    (int) crnProtocol.getAlarm(),    // 寮傚父鐮�
-                                    errName,    // 寮傚父
-                                    1,    // 寮傚父鎯呭喌
-                                    now,    // 娣诲姞鏃堕棿
-                                    null,    // 娣诲姞浜哄憳
-                                    now,    // 淇敼鏃堕棿
-                                    null,    // 淇敼浜哄憳
-                                    "鏃犱换鍔″紓甯�"    // 澶囨敞
-                            );
-                            if (!basErrLogService.insert(basErrLog)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName);
-                            }
-                        }
-                        // 鏃犲紓甯�
-                    } else {
-                        // 寮傚父淇
-                        if (latest != null && latest.getStatus() == 1) {
-                            latest.setEndTime(now);
-                            latest.setUpdateTime(now);
-                            latest.setStatus(2);
-                            if (!basErrLogService.updateById(latest)) {
-                                log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
-                            }
-                        }
-                    }
-                }
-            }
-
-        }
-    }
-
-    // -------------------------------------------------------------------------------
-
-    /**
-     * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
-     */
-    public synchronized void storeEmptyPlt() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            if (devp.getId()==1) continue;
-            // 閬嶅巻绌烘澘鍏ュ簱鍙�
-            for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
-                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 绔欑偣鏉′欢鍒ゆ柇
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk() && ((staProtocol.getWorkNo() > 32222 && staProtocol.getWorkNo() <= 63333) || staProtocol.getWorkNo()==0)  && staProtocol.isPakMk()) {
-
-                    try {
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setIoType(10);
-                        param.setSourceStaNo(emptyInSta.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                            staProtocol.setWorkNo(dto.getWorkNo());
-                            staProtocol.setStaNo(dto.getStaNo());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-                            }
-                        } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
-     */
-    public synchronized void storeEmptyPltSingle() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻绌烘澘鍏ュ簱鍙�
-            for (DevpSlave.Sta emptyInSta : devp.getEmptyInSingleSta()) {
-                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 绔欑偣鏉′欢鍒ゆ柇
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk() && ((staProtocol.getWorkNo() > 32222 && staProtocol.getWorkNo() <= 63333) || staProtocol.getWorkNo()==0)  && staProtocol.isPakMk()) {
-
-                    try {
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setIoType(10);
-                        param.setSourceStaNo(emptyInSta.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/pair/station/single/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                            staProtocol.setWorkNo(dto.getWorkNo());
-                            staProtocol.setStaNo(dto.getStaNo());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-                            }
-                        } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/pair/station/single/loc/v1", JSON.toJSONString(param), response);
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-                }
-            }
-        }
-    }
-    /**
-     * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
-     */
-    public synchronized void storeEmptyPltLarge() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻绌烘澘鍏ュ簱鍙�
-            for (DevpSlave.Sta emptyInSta : devp.getEmptyInLargeSta()) {
-                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 绔欑偣鏉′欢鍒ゆ柇
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk() && ((staProtocol.getWorkNo() > 32222 && staProtocol.getWorkNo() <= 63333) || staProtocol.getWorkNo()==0)  && staProtocol.isPakMk()) {
-
-                    try {
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setIoType(10);
-                        param.setSourceStaNo(emptyInSta.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                            staProtocol.setWorkNo(dto.getWorkNo());
-                            staProtocol.setStaNo(dto.getStaNo());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-                            }
-                        } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,1妤煎彔鐩樻満鍙犵洏
-     */
-    public synchronized void storeEmptyPlt2() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            if (devp.getId()==2) continue;
-            // 閬嶅巻绌烘澘鍏ュ簱鍙�
-            for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
-                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 绔欑偣鏉′欢鍒ゆ柇
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk() && ((staProtocol.getWorkNo() > 32222 && staProtocol.getWorkNo() <= 63333) || staProtocol.getWorkNo()==0) && staProtocol.isPakMk()) {
-                    try {
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(staProtocol.getSiteId() + 19999L);
-                        if (Cools.isEmpty(wrkMastSta)){
-                            WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),staProtocol.getSiteId());
-                            wrkMastSta1.setType(2);
-                            wrkMastSta1.setWrkType(1);//宸ヤ綔绫诲瀷  1:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  3锛氬彇鏀� 5锛氭弧鍙�  6锛氭弧鏀�
-                            wrkMastStaMapper.insert(wrkMastSta1);
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
-     */
-    public synchronized void storeEmptyPlt3() {
-        try{
-            RgvOneSign rgvOneSign = rgvOneSignMapper.selectOneSign();
-            if (Cools.isEmpty(rgvOneSign) || rgvOneSign.getRgvOneSign()==1){
-                return;
-            }
-            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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                        && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-//                        &&  (rgvProtocol.getLoaded2()==2  || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗�  锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-                        &&  rgvProtocol.getLoaded2()==3 ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗�  锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-                ) {
-                    try {
-                        WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep3(122);
-                        if (!Cools.isEmpty(wrkMast1)){
-                            continue;
-                        }
-                        // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
-
-                        SearchLocParam param = new SearchLocParam();
-                        param.setIoType(10);
-                        param.setSourceStaNo(122);
-                        param.setLocType1((short)1);
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/empty/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        if (jsonObject.getInteger("code").equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                            WrkMast wrkMast = wrkMastMapper.selectPakInStep3(dto.getWorkNo());
-                            if (!Cools.isEmpty(wrkMast) && wrkMast.getIoType()==10 && wrkMast.getWrkSts()==2){
-                                WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(wrkMast.getWrkNo().longValue());
-                                if (Cools.isEmpty(wrkMastSta)){
-                                    WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),wrkMast.getStaNo());
-                                    wrkMastSta1.setWrkNo(wrkMast.getWrkNo().longValue());
-                                    wrkMastSta1.setType(2);
-                                    wrkMastSta1.setWrkType(6);//宸ヤ綔绫诲瀷  1:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  3锛氬彇鏀� 5锛氭弧鍙�  6锛氭弧鏀�
-                                    wrkMastStaMapper.insert(wrkMastSta1);
-                                }
-                            }
-                        } else {
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/empty/loc/v1", JSON.toJSONString(param), response);
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-                }
-            }
-        }catch (Exception e){
-            log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
-            log.error("3933琛�"+e);
-        }
-    }
-
-    /**
-     * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
-     */
-    public synchronized void ledExecute() {
-        for (LedSlave led : slaveProperties.getLed()) {
-            // 鑾峰彇杈撻�佺嚎plc绾跨▼
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
-            // 鍛戒护闆嗗悎
-            List<LedCommand> commands = new ArrayList<>();
-            // 宸ヤ綔妗i泦鍚�
-            List<WrkMast> wrkMasts = new ArrayList<>();
-            for (Integer staNo : led.getStaArr()) {
-                // 鑾峰彇鍙夎溅绔欑偣
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                // 鑾峰彇宸ヤ綔妗f暟鎹�
-                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
-//                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
-                if (null == wrkMast) {
-                    continue;
-                }
-                wrkMasts.add(wrkMast);
-                // 缁勮鍛戒护
-                LedCommand ledCommand = new LedCommand();
-                ledCommand.setWorkNo(wrkMast.getWrkNo());
-                ledCommand.setIoType(wrkMast.getIoType());
-                // 鍑哄簱妯″紡
-                switch (wrkMast.getIoType()) {
-                    case 1:
-                    case 202:
-                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-                        break;
-                    case 10:
-                        ledCommand.setTitle("绌烘澘鍏ュ簱");
-                        break;
-                    case 101:
-                        ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
-                        break;
-                    case 103:
-                        ledCommand.setTitle("鎷f枡鍑哄簱");
-                        break;
-                    case 104:
-                        ledCommand.setTitle("骞舵澘鍑哄簱");
-                        break;
-                    case 107:
-                        ledCommand.setTitle("鐩樼偣鍑哄簱");
-                        break;
-                    case 110:
-                        ledCommand.setTitle("绌烘澘鍑哄簱");
-                        ledCommand.setEmptyMk(true);
-                        break;
-                    case 212:
-                        ledCommand.setTitle("绌烘澘鍑哄簱");
-                        ledCommand.setEmptyMk(true);
-                        break;
-                    default:
-                        log.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
-                        break;
-                }
-                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-                ledCommand.setLocNo(wrkMast.getLocNo());
-                ledCommand.setStaNo(wrkMast.getStaNo());
-//                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
-                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl)));
-                }
-                commands.add(ledCommand);
-            }
-            Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
-            // 鑾峰彇LED绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
-            // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
-            if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
-                continue;
-            }
-            // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
-            if (!commands.isEmpty()) {
-//                if (led.getId() == 7) {
-                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
-                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                        continue;
-                    } else {
-                        ledThread.setLedMk(false);
-                    }
-//                }
-//                else {
-//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
-//                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                        continue;
-//                    } else {
-//                        ledThread.setLedMk(false);
-//                    }
-//                }
-
-            }
-
+            BasRgv basRgv = basRgvService.selectById(rgv.getId());
+            if (Cools.isEmpty(rgvProtocol, basRgv)) { continue; }
             try {
-                // 淇敼涓绘。led鏍囪
-                for (WrkMast wrkMast : wrkMasts) {
-                    wrkMast.setOveMk("Y");
-                    wrkMast.setModiTime(new Date());
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
-                    }
+                // 鍦ㄧ嚎 绌洪棽   鏃犱綔涓氭爣璁�   涓嶅湪鍏呯數
+                if (rgvProtocol.getMode() == 0
+                        || !rgvProtocol.statusType.equals(RgvStatusType.IDLE)
+                        || basRgv.getPakMk().equals("Y")
+//                        || steProtocol.getChargeStatus() == 1
+                ) {
+                    continue;
                 }
-
-                // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
-                ledThread.setWorkNos(workNos);
-
             } catch (Exception e) {
-                e.printStackTrace();
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            }
-
-        }
-    }
-
-    /**
-     * 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
-     */
-    public synchronized void ledReset() {
-        for (LedSlave led : slaveProperties.getLed()) {
-            // 鑾峰彇杈撻�佺嚎plc绾跨▼
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
-            // 鍛戒护闆嗗悎
-            boolean reset = true;
-            for (Integer staNo : led.getStaArr()) {
-                // 鑾峰彇鍙夎溅绔欑偣
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) {
-                    continue;
-                }
-                if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
-                    reset = false;
-                    break;
-                }
-            }
-            // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
-            // led鏄剧ず榛樿鍐呭
-            if (reset && !ledThread.isLedMk()) {
-                if (led.getId() == 7) {
-                    ledThread.setLedMk(true);
-                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
-                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                    } else {
-
-                    }
-                } else {
-                    ledThread.setLedMk(true);
-                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
-                        log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                    } else {
-
-                    }
-                }
+                News.error("fail", e);
             }
         }
     }
-
-    /**
-     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堝叆搴撶増)
-     * 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("淇敼闃诲鍏ュ簱浠诲姟澶辫触");
-        }
-    }
-
-    /**
-     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
-     * tip锛氬悓姝�
-     */
-    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc) {
-        try {
-            List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
-            LocMast loc = null;
-            for (Integer row : rows) {
-                if (Utils.isDeepLoc(slaveProperties, row)) {
-                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
-
-                    if (loc != null) {
-                        if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) {
-                            String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
-                            LocMast shallowLoc1 = locMastService.selectById(shallowLocNo);
-                            if (!shallowLoc1.getLocSts().equals("O")) {
-                                loc = null;
-                            }
-                        }
-                    }
-                    if (null != loc) {
-                        break;
-                    }
-                }
-            }
-            if (null == loc) {
-                for (Integer row : rows) {
-                    if (Utils.isShallowLoc(slaveProperties, row)) {
-                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
-
-                        if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱
-                            String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());
-                            LocMast deepLoc1 = locMastService.selectById(deepLoc);
-                            if (!deepLoc1.getLocSts().equals("F") && !deepLoc1.getLocSts().equals("D")) {
-                                loc = null;
-                            }
-                        }
-
-                        if (null != loc) {
-                            break;
-                        }
-                    }
-                }
-            }
-
-            if (null == loc) {
-                log.error("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-                throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
-            }
-
-            // 鑾峰彇宸ヤ綔鍙�
-            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) {
-                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)) {
-                        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)) {
-                    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) {
-            log.error("鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-        }
-    }
-
-//    /**
-//     * 鍒濆鍖朢GV鍦板浘
-//     */
-//    public synchronized void initRgvMap() {
-//        Object data = redisUtil.get("rgv_map");
-//        if (data == null) {
-//            //閲嶆柊鑾峰彇鍏ㄨ矾寰勫湴鍥�
-//            BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(0);//鑾峰彇榛樿璺緞
-//            if (basRgvPath != null) {
-//                ArrayList<RgvNode> rgvNodes = new ArrayList<>();
-//                List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
-//                for (Integer integer : rgvPath) {
-//                    RgvNode rgvNode = new RgvNode(integer);
-//                    rgvNodes.add(rgvNode);
-//                }
-//                //灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis
-//                redisUtil.set("rgv_map", JSON.toJSONString(rgvNodes));
-//            }
-//        }
-//    }
-
-    /**
-     * 鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆
-     */
-    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) {
-            log.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) {
-                    log.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) {
-                        log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                    }
-                    log.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
-                }
-                // 鍑哄簱銆佺Щ搴�
-                if (wrkMast.getWrkSts() == 11) {
-                    log.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) {
-                        log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                    }
-                    log.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());
-
-                for (DevpSlave.Sta inSta : devp.getInSta()) {
-                    if (inSta.getStaNo() == 2) {
-                        continue;
-                    }
-                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
-                    switch (inSta.getStaNo()) {
-                        case 203://1F
-                            if (pakout != null) {
-                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-                                    // 鍑哄簱鍒囨崲涓�
-                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
-                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
-                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
-                                            && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading()
-                                            && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) {
-                                        // 鍑哄簱妯″紡
-                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
-                                    }
-                                }
-                            } else {
-                                // 鍏ュ簱妯″紡
-                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
-                            }
-                            break;
-                        case 401://1F
-                            if (pakout != null) {
-                                if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
-                                    // 鍑哄簱鍒囨崲涓�
-                                    devpThread.ioModeOf4F = IoModeType.PAKOUT_BOOTING;
-                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
-                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
-                                            && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading()
-                                            && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) {
-                                        // 鍑哄簱妯″紡
-                                        devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
-                                    }
-                                }
-                            } else {
-                                // 鍏ュ簱妯″紡
-                                devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
-                            }
-                            break;
-                    }
-                }
-
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-
-    }
-
-//    /**
-//     * 鍏朵粬  ===>> 鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩�
-//     */
-//    public synchronized void dischargingMachineOutputTray() {
-//        try {
-//            List<WrkMast> wrkMasts = wrkMastMapper.selectDischargingMachineOutputTray();
-//            if (Cools.isEmpty(wrkMasts) || wrkMasts.size()>3){
-//                return;
-//            }
-//
-//            // 鑾峰彇鍏ュ簱绔欎俊鎭�
-//            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-//            StaProtocol staProtocol = devpThread.getStation().get(213);
-//            if (staProtocol == null) {
-//                log.error("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐规煡璇㈠け璐�");
-//                return;
-//            } else {
-//                staProtocol = staProtocol.clone();
-//            }
-//
-//            if (!staProtocol.isLoading()){
-//                log.info("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐规棤鐗╋紝姝e湪鑷姩璋冨嚭绌烘澘锛�");
-//                int i = wrkMastMapper.selectConfigCount10468N();
-//                if (i==1){
-//                    wrkMastMapper.updateConfig10468Y();
-//                }
-//                return;
-//            }else {
-//                int i = wrkMastMapper.selectConfigCount10468N();
-//                if (i==0){
-//                    return;
-//                }
-//            }
-//            StaProtocol staProtocol214 = devpThread.getStation().get(214);
-//            // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-//            if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk() && staProtocol214.getWorkNo()==0) {
-//                staProtocol.setWorkNo((short)9999);
-//                staProtocol.setStaNo((short)214);
-//                devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
-//                if (!result) {
-//                    throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紒");
-//                }
-//                log.info("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂鎴愬姛锛氬伐浣滃彿9999銆佺洰鏍囩珯214锛�");
-//            }else {
-//                log.error("鐮佸灈浣嶈嚜鍔ㄨˉ鍏呯┖鏉匡細椹卞姩鎷嗙洏鏈鸿緭鍑烘墭鐩橈紝浠诲姟涓嬪彂澶辫触锛岀珯鐐圭姸鎬佷笉绗﹀悎锛�");
-//            }
-//        }catch (Exception e){
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//        }
-//    }
-
-//    /**
-//     * 鍏朵粬  ===>> 鎷嗙洏鏈哄绌烘澘鎵爜锛岄┍鍔ㄦ墭鐩樺悜鐮佸灈浣嶏紝涓嶅叆搴�
-//     */
-//    public synchronized void scanBarcodeEmptyBoard() {
-//        try {
-//
-//        }catch (Exception e){
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//        }
-//    }
-
-    /**
-     * 鍏朵粬  ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝ワ紙鍏ュ簱鍓嶆壂鐮侊級
-     */
-    public synchronized void stackingCompletionDriveTray() {
-        try {
-            int[] staNos=new int[]{215,219};//(2妤间袱涓叆搴撶爜鍨涚珯)
-            for (int staNo : staNos){
-                BasDevp basDevp = basDevpService.selectById(staNo);
-                if ((basDevp.getWrkNo()!=0 && (basDevp.getWrkNo()<9900 || basDevp.getWrkNo()>9999)) || Cools.isEmpty(basDevp.getBarcode())){
-                    continue;
-                }
-                Integer zpallet = waitPakinMapper.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", basDevp.getBarcode()).eq("status","N"));
-                if (zpallet<=0){
-                    continue;
-                }
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-//                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-//                    continue;
-//                }
-
-                if (!staProtocol.isLoading()){
-                    log.info("{}绔欑偣鏃犵墿锛屾鍦ㄨ嚜鍔ㄨ皟鍑虹┖鏉匡紒",staNo);
-                    continue;
-                }
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk()
-                        && (basDevp.getWrkNo()==0 || (basDevp.getWrkNo()>=9900 && basDevp.getWrkNo()<=9999))
-                ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
-                    int workNo = commonService.getWorkNo(5);
-                    staProtocol.setWorkNo(workNo);
-                    staProtocol.setStaNo(staNo + 2);
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
-                    if (!result) {
-                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
-                    }
-
-                }
-            }
-        }catch (Exception e){
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            log.error("鍏朵粬  ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝ワ紙鍏ュ簱鍓嶆壂鐮侊級"+e);
-        }
-    }
-    /**
-     * 鍏朵粬  ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�
-     */
-    public synchronized void stackingCompletionDriveTray2() {
-        try {
-            int[] staNos=new int[]{131,135};//(2涓叆搴撶珯鐐癸紝1妤�2涓嚭搴撶爜鍨涚珯,鏍规嵁鐜板満淇敼)
-            for (int staNo : staNos){
-                BasDevp basDevp = basDevpService.selectById(staNo);
-                if (Cools.isEmpty(basDevp) || basDevp.getReportSign()!=1){
-                    continue;
-                }
-                if (basDevp.getWrkNo()!=0 && (basDevp.getWrkNo()<9900 || basDevp.getWrkNo()>9999)){
-                    continue;
-                }
-                WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne202(staNo);
-                if (Cools.isEmpty(wrkMast)){
-                    continue;
-                }
-                // 鑾峰彇绔欑偣淇℃伅
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-//                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-//                    continue;
-//                }
-
-                if (!staProtocol.isLoading()){
-                    log.info("{}绔欑偣鏃犵墿锛屽紓甯革紒",staNo);
-                    continue;
-                }
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && (staProtocol.getWorkNo() == 0 || (staProtocol.getWorkNo()>9899 && staProtocol.getWorkNo()<10000))
-                ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
-
-                    //浠诲姟瀹屾垚
-                    boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol));
-                    Thread.sleep(100);
-
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(144);
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
-                    if (!result) {
-                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
-                    }
-                    wrkMast.setWrkSts(52L);
-                    wrkMastMapper.updateById(wrkMast);
-                    Thread.sleep(100);
-
-                    //浠诲姟瀹屾垚
-                    boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol));
-
-                }
-            }
-        }catch (Exception e){
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            log.error("鍏朵粬  ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�"+e);
-        }
-    }
-
-    /**
-     * 鍏朵粬  ===>> 鐮佸灈瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�
-     */
-    public synchronized void stackingCompletionDriveTrayOk2() {
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鎷f枡鍏ュ簱鍙�
-            for (DevpSlave.Sta pickSta : devp.getPickSta2()) {
-
-                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) 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.isPakMk()  && staProtocol.getWorkNo()!=0 && staProtocol.isOutEnable()) {//
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo());
-
-                    if (wrkMast == null) {
-                        log.error("绔欑偣鍙�"+staProtocol.getSiteId()+"鏈煡璇㈠埌宸ヤ綔妗f锛�");
-                        // 鏃犳嫞鏂欐暟鎹�
-                        continue;
-                    }
-                    if (Cools.isEmpty(wrkMast.getSheetNo()) || !wrkMast.getSheetNo().equals("2") || wrkMast.getIoType()<100 || wrkMast.getWrkSts()!=14){
-                        continue;
-                    }
-                    if (wrkMast.getIoType()==101){
-                        //浠诲姟瀹屾垚
-                        boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol));
-                        wrkMast.setSheetNo("3");
-                        wrkMastMapper.updateById(wrkMast);
-                    }else {
-                        if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
-                                || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
-                            continue;
-                        }
-                        //浠诲姟瀹屾垚
-                        boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol));
-                        wrkMast.setSheetNo("3");
-                        wrkMastMapper.updateById(wrkMast);
-
-                        try{
-                            Thread.sleep(100);
-                        }catch (Exception e){
-
-                        }
-
-                        boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol));
-
-                    }
-                }
-            }
-        }
-    }
-    /**
-     * 鍏朵粬  ===>> 璐存爣瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�
-     */
-    public synchronized void stackingCompletionDriveTray3() {
-        try {
-            int[] staNos=new int[]{144};//(1妤�1涓创鏍囦綅,鏍规嵁鐜板満淇敼)
-            for (int staNo : staNos){
-                BasDevp basDevp = basDevpService.selectById(staNo);
-                if ((basDevp.getWrkNo()<9900 || basDevp.getWrkNo()>9999) && basDevp.getWrkNo()!=32222){
-                    continue;
-                }
-                WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne202(staNo);
-                if (Cools.isEmpty(wrkMast)){
-                    continue;
-                }
-                // 鑾峰彇绔欑偣淇℃伅
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//                if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; }
-//                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) {
-//                    continue;
-//                }
-
-                if (!staProtocol.isLoading()){
-                    log.info("{}绔欑偣鏃犵墿锛屽紓甯革紒",staNo);
-                    continue;
-                }
-                if (!staProtocol.getWorkNo().equals(wrkMast.getWrkNo())){
-                    log.info("绔欑偣宸ヤ綔鍙�={} 涓庤创鏍囧伐浣滃彿={} 涓嶄竴鑷达紝寮傚父锛�",staProtocol.getWorkNo(),wrkMast.getWrkNo().shortValue());
-                }
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
-
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo());
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
-                    if (!result) {
-                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
-                    }
-                    wrkMast.setWrkSts(55L);
-                    wrkMastMapper.updateById(wrkMast);
-
-                }
-            }
-        }catch (Exception e){
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            log.error("鍏朵粬  ===>> 璐存爣瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�"+e);
-        }
-    }
-
-    /**
-     * 鍏朵粬  ===>> 閫�璐х爜鍨涘畬鎴愭墭鐩樼户缁笅涓�姝�
-     */
-    public synchronized void stackingCompletionDriveTrayOk3() {
-        try {
-            int[] staNos=new int[]{118};
-            for (int staNo : staNos){
-                BasDevp basDevp = basDevpService.selectById(staNo);
-                if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()!=0 || basDevp.getReportSign()!=3){
-                    continue;
-                }
-                WrkMast wrkMast = wrkMastMapper.selectWrkMastUnstackingOne145(145);
-                if (Cools.isEmpty(wrkMast)){
-                    continue;
-                }
-                // 鑾峰彇绔欑偣淇℃伅
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                StaProtocol staProtocol147 = devpThread.getStation().get(147);
-                if (staProtocol147 == null) {
-                    continue;
-                } else {
-                    staProtocol147 = staProtocol147.clone();
-                }
-
-                if (!staProtocol.isLoading()){
-                    log.info("{}绔欑偣鏃犵墿锛屽紓甯革紒",staNo);
-                    continue;
-                }
-
-                if (staProtocol147.isLoading()){
-                    log.info("{}绔欑偣鏈夌墿锛�",staProtocol147.getSiteId());
-                    continue;
-                }
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && !staProtocol.isEmptyMk()
-                ) {
-
-                    boolean result3 = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol147));
-
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo());
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol));
-                    if (!result) {
-                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
-                    }
-
-                    wrkMast.setSheetNo("5");
-                    wrkMastMapper.updateById(wrkMast);
-
-                    boolean result4 = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol147));
-
-                }
-            }
-        }catch (Exception e){
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            log.error("鍏朵粬  ===>> 閫�璐х爜鍨涘畬鎴愭墭鐩樼户缁笅涓�姝�"+e);
-        }
-    }
-
-    /**
-     * 鍏朵粬  ===>> 鎷嗗灈瀹屾垚缁х画涓嬩竴姝�  杩愯閫斾腑鑷姩閬胯绌烘澘
-     */
-    public synchronized void stackingCompletionDriveTray4() {
-        try {
-            int[] staNos=new int[]{134};//(134鏈変换鍔★紝135绌洪棽锛屽垯閬胯)
-            for (int staNo : staNos){
-                BasDevp basDevp = basDevpService.selectById(staNo);
-                BasDevp basDevp135 = basDevpService.selectById(135);
-                if (basDevp.getWrkNo()==0 || (basDevp.getWrkNo()<10000 && basDevp.getWrkNo()>9899) ){
-                    continue;
-                }
-                if (basDevp135.getReportSign()!=0){
-                    continue;
-                }
-                WrkMast wrkMast131 = wrkMastMapper.selectWrkMastUnstackingOne202Two(131);
-                if (Cools.isEmpty(wrkMast131)){
-                    continue;
-                }
-                // 鑾峰彇绔欑偣淇℃伅
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                StaProtocol staProtocol135 = devpThread.getStation().get(135);
-                if (staProtocol135 == null) {
-                    continue;
-                } else {
-                    staProtocol135 = staProtocol135.clone();
-                }
-                if (staProtocol135.getWorkNo()<9900 || staProtocol135.getWorkNo()>9999 || staProtocol135.getWorkNo()==0
-                        || !staProtocol135.isLoading() || !staProtocol135.isAutoing()){
-                    continue;
-                }
-                StaProtocol staProtocol = devpThread.getStation().get(staNo);
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                if (!staProtocol.isLoading()){
-                    continue;
-                }
-//                if (!staProtocol.getWorkNo().equals(wrkMast131.getWrkNo())){
-//                    log.info("绔欑偣宸ヤ綔鍙�={} 涓庤创鏍囧伐浣滃彿={} 涓嶄竴鑷达紝寮傚父锛�",staProtocol.getWorkNo(),wrkMast131.getWrkNo().shortValue());
-//                }
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && basDevp.getReportSign()==0
-                ) {//&& staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
-//                    if (true){
-//                        return;
-//                    }
-
-                    //浠诲姟瀹屾垚
-                    boolean result1 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(3, staProtocol135));
-                    try{
-                        Thread.sleep(100);
-                    }catch (Exception e){ }
-                    basDevp135.setReportSign(2);
-                    basDevpService.updateById(basDevp135);
-                    int workNo = commonService.getWorkNo(5);
-                    staProtocol135.setWorkNo(workNo);
-                    staProtocol135.setStaNo(144);
-                    devpThread.setPakMk(staProtocol135.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol135));
-                    if (!result) {
-                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触==>椹卞姩鐮佸灈浣嶆墭鐩樺墠杩涘け璐ワ紒");
-                    }
-                    boolean result2 = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(4, staProtocol135));
-
-                }
-            }
-        }catch (Exception e){
-//            e.printStackTrace();
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            log.error("鍏朵粬  ===>> 璐存爣瀹屾垚椹卞姩鎵樼洏杩涘叆涓嬩竴姝�"+e);
-        }
-    }
-
-    /**
-     *  瀹屾垚灏忚溅浠诲姟
-     */
-    public synchronized void rgvCompleteWrkMastSta() {
-        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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
-                if (rgvProtocol.getStatusType() == RgvStatusType.WORKING
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && ((rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.WAITING ) ||
-                        (rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING ))
-                ) {
-                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
-                    if (rgvProtocol.getTaskNo1()!=0 && (rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)){
-                        if (rgvProtocol.getTaskNo1()==(short)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());
-                            break;
-                        }
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().longValue());
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1 || wrkMastSta.getWrkSts()!=1){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
-                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-                        if (!Cools.isEmpty(wrkMast) && wrkMastSta.getWrkType()!=5){
-                            Thread.sleep(200);
-                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                            StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                            if (staProtocol == null) {
-                                continue;
-                            } else {
-                                staProtocol = staProtocol.clone();
-                            }
-                            if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                                continue;
-                            }
-                            // 涓嬪彂绔欑偣淇℃伅
-                            staProtocol.setWorkNo(wrkMast.getWrkNo());
-                            staProtocol.setStaNo(wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
-                                continue;
-                            }
-                            log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
-//                            try{
-//                                Thread.sleep(1000);
-//                                DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-//                                StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
-//                                log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
-//                                if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
-//                                    staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
-//                                    staProtocolEnd.setStaNo(wrkMast.getStaNo());
-//                                    if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
-//                                        continue;
-//                                    }
-//                                    log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
-//                                }
-//                            }catch (Exception e){
-//
-//                            }
-                        }
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                    }else if (rgvProtocol.getTaskNo2()!=0 && (rgvProtocol.getStatusType2()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)){
-                        if (rgvProtocol.getTaskNo2()==(short)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());
-                            break;
-                        }
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2().longValue());
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=2){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
-                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-                        if (!Cools.isEmpty(wrkMast)  && wrkMastSta.getWrkType()!=5){
-                            Thread.sleep(200);
-                            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                            StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                            if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                                continue;
-                            }
-                            // 涓嬪彂绔欑偣淇℃伅
-                            staProtocol.setWorkNo(wrkMast.getWrkNo());
-                            staProtocol.setStaNo(wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) {
-                                continue;
-                            }
-                            log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol);
-//                            try{
-//                                Thread.sleep(1000);
-//                                DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-//                                StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd());
-//                                log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd);
-//                                if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo())
-//                                    staProtocolEnd.setWorkNo(wrkMast.getWrkNo());
-//                                    staProtocolEnd.setStaNo(wrkMast.getStaNo());
-//                                    if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) {
-//                                        continue;
-//                                    }
-//                                    log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd);
-//                                }
-//                            }catch (Exception e){
-//
-//                            }
-                        }
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                    }else {
-                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
-                    }
-                }
-            }
-        }catch (Exception e){
-            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
-        }
-    }
-    /**
-     * 鍏ュ嚭搴�  ===>>  灏忚溅浣滀笟涓嬪彂
-     */
-    public synchronized boolean rgvIoExecute(Integer sign) {
-        boolean rgvIoExecuteSign = false;
-        try{
-            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                // 鑾峰彇灏忚溅淇℃伅
-                boolean signWork = false;
-                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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0
-                        && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                ) {
-                    switch (sign){
-                        //鎵ц灏忚溅璐х墿鎼繍浠诲姟
-                        case 1:
-                            signWork = rgvRunWrkMastFullSta(rgvSlave);
-                            break;
-                        //鎵ц灏忚溅绌烘澘鎼繍浠诲姟
-                        case 2://鏀�//鎷嗙洏
-                            signWork = rgvRunWrkMastEmptyStaPut(rgvSlave);
-                            break;
-                        case 3://婊℃斁
-                            signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave);
-                            break;
-                        case 4://鍙栧彔鐩�
-                            signWork = rgvRunWrkMastEmptyStaTake(rgvSlave);
-                            break;
-                        case 5:////婊″彇
-                            signWork = rgvRunWrkMastEmptyStaTakeFull(rgvSlave);
-                            break;
-                        case 6:////鎻愬崌
-//                            signWork = qwe();
-                            break;
-                        case 7:////浣嶇Щ
-                            break;
-                        default:
-                            break;
-                    }
-                    for (int signCount = 1;!signWork && signCount<7;signCount++){
-                        switch (signCount){
-                            case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟
-                                signWork = rgvRunWrkMastFullSta(rgvSlave);
-                                break;
-                            case 2://鏀�//鎷嗙洏
-                                signWork = rgvRunWrkMastEmptyStaPut(rgvSlave);
-                                break;
-                            case 3://婊℃斁
-                                signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave);
-                                break;
-                            case 4://鍙栧彔鐩�
-                                signWork = rgvRunWrkMastEmptyStaTake(rgvSlave);
-                                break;
-                            case 5:////婊″彇
-                                signWork = rgvRunWrkMastEmptyStaTakeFull(rgvSlave);
-                                break;
-                            case 6:////鎻愬崌
-//                            signWork = rgvRunWrkMastEmptyStaPut();
-                                break;
-                            case 7:////浣嶇Щ
-                                break;
-                            default:
-                                break;
-                        }
-                    }
-                }else {
-                    continue;
-                }
-                if (!rgvIoExecuteSign){
-                    rgvIoExecuteSign = signWork;
-                }
-            }
-//            if (!rgvIoExecuteSign){
-//                if (sign>6){
-//
-//                }
-//            }
-        }catch (Exception e){
-            log.error("RGV灏忚溅浠诲姟涓嬪彂鎶ラ敊"+e);
-        }
-        return rgvIoExecuteSign;
-    }
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     */
-    public synchronized boolean rgvRunWrkMastFullSta(RgvSlave rgvSlave) {
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    return false;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    return false;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0
-                        && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(basRgv.getRgvNo());
-                    if (basRgvMap == null) {
-                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                        return false;
-                    }
-                    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()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増   3锛氬彇鏀�
-                            continue;
-                        }
-                        BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
-                        if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
-                            continue;
-                        }
-                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
-                        if (sign){
-                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
-                            if (signMap){
-                                wrkMastSta.setWrkSts(1);
-                                try{
-                                    wrkMastStaMapper.updateById(wrkMastSta);
-                                }catch (Exception e){
-                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                                }
-                                return true;
-                            }else {
-                                log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                            }
-                        }else {
-                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-//            }
-        }catch (Exception e){
-            log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
-            log.error("3875琛�"+e);
-        }
-        return false;
-    }
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟//鎷嗙洏
-     */
-    public synchronized boolean rgvRunWrkMastEmptyStaPut(RgvSlave rgvSlave) {//鎷嗙洏
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    return false;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    return false;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤//鎷嗙洏
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                        && (rgvProtocol.getLoaded2()==3  || rgvProtocol.getLoaded2()==1 || rgvProtocol.getLoaded2()==4)////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛堝彧鑳芥媶鍙狅級 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗�() 锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (basRgvMap == null) {
-                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                        return false;
-                    }
-                    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){// 2:绌烘澘  || 宸ヤ綔绫诲瀷  1:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  5锛氭弧鍙�  6锛氭弧鏀�
-                            continue;
-                        }
-                        boolean sign = false;
-                        if ( wrkMastSta.getStaEnd()!=0){//鏀�
-                            BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
-                            if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
-                                continue;
-                            }
-                            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 true;
-                            }else {
-                                log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                            }
-                        }else {
-                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-//            }
-        }catch (Exception e){
-            log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
-            log.error("3933琛�"+e);
-        }
-        return false;
-    }
-
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     */
-    public synchronized boolean rgvRunWrkMastEmptyStaPutFull(RgvSlave rgvSlave) {//婊℃斁
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    return false;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    return false;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                        &&  (rgvProtocol.getLoaded2()==2  || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗�  锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (basRgvMap == null) {
-                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                        return false;
-                    }
-                    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()!=6){// 2:绌烘澘  || 宸ヤ綔绫诲瀷  1:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  5锛氭弧鍙�  6锛氭弧鏀�  7:鎻愬崌
-                            continue;
-                        }
-                        boolean sign = false;
-                        if ( wrkMastSta.getStaEnd()!=0){//婊℃斁
-                            BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd());
-                            if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y")){
-                                continue;
-                            }
-                            sign = rgvPutEmptyFull(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 true;
-                            }else {
-                                log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                            }
-                        }else {
-                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-//            }
-        }catch (Exception e){
-            log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
-            log.error("3933琛�"+e);
-        }
-        return false;
-    }
-
-    public synchronized boolean rgvRunWrkMastEmptyStaTake(RgvSlave rgvSlave) {//鍙犵洏
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    return false;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    return false;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                        &&  (rgvProtocol.getLoaded2()==0  || rgvProtocol.getLoaded2()==1 ) //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛�   锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (basRgvMap == null) {
-                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                        return false;
-                    }
-                    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:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  5锛氭弧鍙�  6锛氭弧鏀�
-                            continue;
-                        }
-                        boolean sign = false;
-                        if ( wrkMastSta.getStaStart()!=0){//鍙�
-                            BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaStart());
-                            if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
-                                continue;
-                            }
-                            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 true;
-                            }else {
-                                log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                            }
-                        }else {
-                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-//            }
-        }catch (Exception e){
-            log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
-            log.error("3989琛�"+e);
-        }
-        return false;
-    }
-
-    public synchronized boolean rgvRunWrkMastEmptyStaTakeFull(RgvSlave rgvSlave) {//婊″彇
-        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    return false;
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    return false;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0
-                        &&  rgvProtocol.getLoaded2()==0  //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛�   锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3  1銆�2灞傞兘鏈夌墿  4锛氾紙锛夊彧鍏佽鎷嗙洏
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (basRgvMap == null) {
-                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                        return false;
-                    }
-                    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()!=5){// 2:绌烘澘  || 宸ヤ綔绫诲瀷  1:鍙栵紙鍙犵洏锛�  2锛氭媶鐩�  5锛氭弧鍙�  6锛氭弧鏀�
-                            continue;
-                        }
-                        boolean sign = false;
-                        if (wrkMastSta.getStaStart()!=0){//婊″彇
-                            BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaStart());
-                            if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){
-                                continue;
-                            }
-                            sign = rgvTakeEmptyFull(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 true;
-                            }else {
-                                log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                            }
-                        }else {
-                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-//            }
-        }catch (Exception e){
-            log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
-            log.error("3989琛�"+e);
-        }
-        return false;
-    }
-
-    /*
-    * 鏈変换鍔′絾鏈墽琛�  姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
-    * */
-    public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
-        try{
-            Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
-            if (integer==0){
-                return;
-            }
-            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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                        && rgvProtocol.getTaskNo1()==0
-                        && rgvProtocol.getTaskNo2()==0
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
-                        continue;
-                    }
-                    if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){
-                        continue;
-                    } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){
-                        continue;
-                    }
-                    rgvAvoidanceXY(rgvProtocol.getRgvNo());
-                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                }
-            }
-        }catch (Exception e){
-            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
-            log.error("4109琛�"+e);
-        }
-    }
-
-    /*
-     * 鍒锋柊鍦板浘鏁版嵁
-     * */
-    public synchronized void refreshRgvMap() {
-        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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                        && rgvProtocol.getTaskNo1()==0
-                        && rgvProtocol.getTaskNo2()==0
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvSlave.getId());
-                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute());
-                }
-            }
-        }catch (Exception e){
-            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
-            log.error("4109琛�"+e);
-        }
-    }
-
-    /*
-     * 灏忚溅XY绉诲姩  閬胯
-     * */
-    public synchronized boolean rgvAvoidanceXY(Integer rgvId){
-        if (rgvId==1){
-            try{
-                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
-                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                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( (short)101);
-                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;
-
-            }
-        }else {
-            try{
-                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
-                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                RgvCommand rgvCommand = new RgvCommand();
-                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-                rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-                rgvCommand.setTaskNo2((short)32222); // 宸ヤ綅2宸ヤ綔鍙�
-                rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡:  鍥炲師鐐�
-                rgvCommand.setSourceStaNo2((short)117);
-                rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, 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;
-
-            }
-        }
-    }
-
-
-    /*
-    * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
-    * */
-    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.Rgv, 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.Rgv, 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 rgvTakeEmptyFull(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_5); // 宸ヤ綅2浠诲姟妯″紡:  婊″彇
-            rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅2璧风偣
-            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, 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 rgvPutEmptyFull(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_6); // 宸ヤ綅2浠诲姟妯″紡:  婊℃斁
-            rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, 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;
-        }
-    }
-
-    /*
-     * 灏忚溅鍦板浘鏇存柊  鏇存柊閿�
-     * */
-    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
-        if (true){
-            basRgvMapMapper.updateById(basRgvMapCurrent);
-            return true;
-        }
-
-//        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);
-            basRgvMapMapper.updateById(basRgvMapCurrent);
-
-            //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
-            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther();
-            BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
-            List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
-            Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
-            basRgvMapOther.setEndRoute(lockEndRoute);
-            basRgvMapMapper.updateById(basRgvMapOther);
-            return true;
-        }catch (Exception e){
-            log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
-            return false;
-        }
-    }
-
-    /**
-     * 鍏ュ嚭搴�  ===>>  灏忚溅浣滀笟涓嬪彂
-     */
-    public synchronized boolean steIoExecute(Integer sign) {
-        return false;
-    }
-
 }

--
Gitblit v1.9.1