From 1d5dea48f866528cb4c26be9eadf315e3ce0262f Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 12 八月 2025 19:58:34 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 5819 ++++++++++++++++++++++++++++++-----------------------------
 1 files changed, 2,990 insertions(+), 2,829 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 c5e91ff..1207dc7 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,772 +1,851 @@
-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.RouteUtils;
-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.News;
-import com.zy.core.CrnThread;
-import com.zy.core.DevpThread;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.*;
-import com.zy.core.model.*;
-import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.command.LedCommand;
-import com.zy.core.model.command.RgvCommand;
-import com.zy.core.model.protocol.CrnProtocol;
-import com.zy.core.model.protocol.RgvProtocol;
-import com.zy.core.model.protocol.StaProtocol;
-import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.LedThread;
-import com.zy.core.thread.RgvThread;
-import com.zy.core.thread.SiemensDevpThread;
-import 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;
-
-/**
- * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
- * Created by vincent on 2020/8/6
- */
-@Slf4j
-@Service("mainService")
-@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 BasDevpService basDevpService;
-    @Autowired
-    private LocDetlService locDetlService;
-    @Autowired
-    private BasErrLogService basErrLogService;
-    @Autowired
-    private BasCrnErrorMapper basCrnErrorMapper;
-    @Autowired
-    private WrkMastStaMapper wrkMastStaMapper;
-    @Autowired
-    private BasRgvService basRgvService;
-    @Autowired
-    private BasRgvMapMapper basRgvMapMapper;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private BasRgvMapService basRgvMapService;
-
-    @Value("${wms.url}")
-    private String wmsUrl;
-
-    public Integer wrkNo = 10000;
-
-    /**
-     * 缁勬墭
-     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
-     */
-    public synchronized void generateStoreWrkFile(Integer mark) {
-        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍏ュ簱鍙�
-            for (DevpSlave.Sta inSta : devp.getInSta()) {
-                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
-                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-                if (barcodeThread == null) {
-                    continue;
-                }
-                String barcode = barcodeThread.getBarcode();
-                // 灏哄妫�娴嬪紓甯�
-                boolean back = false;
-                String errMsg = "";
-                if (staProtocol.isFrontErr()) {
-                    errMsg = "鍓嶈秴闄�";
-                    back = true;
-                }
-                if (!back && staProtocol.isBackErr()) {
-                    errMsg = "鍚庤秴闄�";
-                    back = true;
-                }
-                if (!back && staProtocol.isHighErr()) {
-                    errMsg = "楂樿秴闄�";
-                    back = true;
-                }
-                if (!back && staProtocol.isLeftErr()) {
-                    errMsg = "宸﹁秴闄�";
-                    back = true;
-                }
-                if (!back && staProtocol.isRightErr()) {
-                    errMsg = "鍙宠秴闄�";
-                    back = true;
-                }
-                if (!back && staProtocol.isWeightErr()) {
-                    errMsg = "瓒呴噸";
-                    back = true;
-                }
-                if (!back && staProtocol.isBarcodeErr()) {
-                    errMsg = "鎵爜澶辫触";
-                    back = true;
-                }
-                // 閫�鍥�
-                if (back) {
-//                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
-                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
-
-                    if (!staProtocol.isLoading()){
-                        continue;
-                    }
-                    if (!staProtocol.isPakMk()) {
-                        continue;
-                    }
-                    staProtocol.setWorkNo(wrkNo);
-                    News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
-                    wrkNo++;
-                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    log.error("杈撻�佺嚎涓嬪彂1锛�"+wrkNo+","+inSta.getBackSta());
-                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk()
-                        && staProtocol.isPakMk()) {
-                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
-                        News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-
-                        continue;
-                    }
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
-                    if (wrkMast != null) {
-                        News.error(methodName + ":宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        if (ledThread != null) {
-                            News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
-                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={" + wrkMast.getWrkNo() + "}, 璇锋墜鍔ㄥ彇娑堝凡瀛樺湪宸ヤ綔妗�"));
-                        }
-                        continue;
-                    }
-                    WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
-                            .eq("barcode", barcode)
-                            .in("io_type", 107,103,57));
-                    if (!Cools.isEmpty(checkPick)) {
-                        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());
-                            staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo());
-                            if (!result) {
-                                News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
-
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-                            }else {
-                                ledThread.errorReset();
-                            }
-                        } else {
-                            staProtocol.setWorkNo(wrkNo);
-                            wrkNo++;
-                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//package com.zy.asrs.service.impl;
 //
-//                            if (ledThread != null) {
-                                String errorMsg = jsonObject.getString("msg");
-                                if (!Cools.isEmpty(errorMsg)) {
-                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
-                                }
+//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.RouteUtils;
+//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.News;
+//import com.zy.core.CrnThread;
+//import com.zy.core.DevpThread;
+//import com.zy.core.cache.MessageQueue;
+//import com.zy.core.cache.SlaveConnection;
+//import com.zy.core.enums.*;
+//import com.zy.core.model.*;
+//import com.zy.core.model.command.CrnCommand;
+//import com.zy.core.model.command.LedCommand;
+//import com.zy.core.model.command.RgvCommand;
+//import com.zy.core.model.protocol.CrnProtocol;
+//import com.zy.core.model.protocol.RgvProtocol;
+//import com.zy.core.model.protocol.StaProtocol;
+//import com.zy.core.properties.SlaveProperties;
+//import com.zy.core.thread.BarcodeThread;
+//import com.zy.core.thread.LedThread;
+//import com.zy.core.thread.RgvThread;
+//import com.zy.core.thread.SiemensDevpThread;
+//import 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;
+//
+///**
+// * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
+// * Created by vincent on 2020/8/6
+// */
+//@Slf4j
+//@Service("mainService")
+//@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 BasDevpService basDevpService;
+//    @Autowired
+//    private LocDetlService locDetlService;
+//    @Autowired
+//    private BasErrLogService basErrLogService;
+//    @Autowired
+//    private BasCrnErrorMapper basCrnErrorMapper;
+//    @Autowired
+//    private WrkMastStaMapper wrkMastStaMapper;
+//    @Autowired
+//    private BasRgvService basRgvService;
+//    @Autowired
+//    private BasRgvMapMapper basRgvMapMapper;
+//    @Autowired
+//    private WrkMastService wrkMastService;
+//    @Autowired
+//    private BasRgvMapService basRgvMapService;
+//
+//    @Value("${wms.url}")
+//    private String wmsUrl;
+//
+//    public Integer wrkNo = 10000;
+//
+//    /**
+//     * 缁勬墭
+//     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
+//     */
+//    public synchronized void generateStoreWrkFile(Integer mark) {
+//        String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
+//        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+//        for (DevpSlave devp : slaveProperties.getDevp()) {
+//            // 閬嶅巻鍏ュ簱鍙�
+//            for (DevpSlave.Sta inSta : devp.getInSta()) {
+//                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+//                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+//                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+//                if (staProtocol == null) {
+//                    continue;
+//                } else {
+//                    staProtocol = staProtocol.clone();
+//                }
+//
+//                if (barcodeThread == null) {
+//                    continue;
+//                }
+//                String barcode = barcodeThread.getBarcode();
+//                // 灏哄妫�娴嬪紓甯�
+//                boolean back = false;
+//                String errMsg = "";
+//                if (staProtocol.isFrontErr()) {
+//                    errMsg = "鍓嶈秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isBackErr()) {
+//                    errMsg = "鍚庤秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isHighErr()) {
+//                    errMsg = "楂樿秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isLeftErr()) {
+//                    errMsg = "宸﹁秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isRightErr()) {
+//                    errMsg = "鍙宠秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isWeightErr()) {
+//                    errMsg = "瓒呴噸";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isBarcodeErr()) {
+//                    errMsg = "鎵爜澶辫触";
+//                    back = true;
+//                }
+//
+//                // 閫�鍥�
+//                if (back) {
+//                    log.info("errmsg: " + errMsg);
+////                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+//                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
+//
+//                    if (!staProtocol.isLoading()) {
+//                        continue;
+//                    }
+//                    if (!staProtocol.isPakMk()) {
+//                        continue;
+//                    }
+//                    staProtocol.setWorkNo(wrkNo);
+//                    News.info("{}PLC鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
+//                    wrkNo++;
+//                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
+//                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                    log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta());
+//                }
+//
+//                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+//                if (staProtocol.isAutoing()
+//                        && staProtocol.isLoading()
+//                        && staProtocol.isInEnable()
+//                        && !staProtocol.isEmptyMk()
+//                        && staProtocol.isPakMk()) {
+//                    if (Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
+//                        News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+//
+//                        staProtocol.setWorkNo(wrkNo);
+//                        News.info("{}barcode鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
+//                        wrkNo++;
+//                        staProtocol.setStaNo(inSta.getBackSta().shortValue());
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                        log.error("杈撻�佺嚎涓嬪彂1锛�" + wrkNo + "," + inSta.getBackSta());
+//                        continue;
+//                    }
+//                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
+//                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
+//                    if (wrkMast != null) {
+////                        int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo()));
+////                        if (wrkNo1 != 0){
+////                            if (ledThread != null) {
+////                                News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
+////                            }
+////
+////                        }
+//                        News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+//                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo()));
+//                        continue;
+////                        barcodeThread.setBarcode("");
+////                        staProtocol.setWorkNo(wrkMast.getWrkNo());
+////                        staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo()));
+////                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+////                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+////                        log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+////
+////                        ledThread.errorReset();
+////                        log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+////
+////                        if (!result) {
+////                            News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+////                            log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
+////
+//////                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+////                            continue;
+////                        }
+//
+//                    }
+//                    WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+//                            .eq("barcode", barcode)
+//                            .in("io_type", 107, 103, 57));
+//                    if (!Cools.isEmpty(checkPick)) {
+//                        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()
+//                                .setTimeout(30,TimeUnit.SECONDS)
+//                                .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());
+//                            //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
+//                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            log.error("杈撻�佺嚎涓嬪彂2锛�" + dto.getWorkNo() + "," + dto.getStaNo());
+//
+//                            ledThread.errorReset();
+//                            log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+//
+//                            if (!result) {
+//                                News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+//
+//                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
 //                            }
-//                            News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
-                        }
-
-
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-
-                }
-
-
-            }
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
-
-    }
-
-    /**
-     * wms鍏ュ簱
-     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2
-     */
-    public synchronized void generateStoreWrkFile0(Integer mark) {
-        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鍏ュ簱鍙�
-            for (DevpSlave.Sta inSta : devp.getInSta()) {
-                // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-//                // 鍏ュ嚭搴撴ā寮忓垽鏂�
-                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) {
-                    continue;
-                }
-
-                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (!staProtocol.isLoading()){
-                    continue;
-                }
-                if (staProtocol.isAutoing() && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
-                        && staProtocol.isPakMk()) {
-                    News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
-                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo());
-                    if (wrkMast == null) {
-                        continue;
-                    }
-
-                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    log.error("杈撻�佺嚎涓嬪彂3锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                    if (result) {
-                        // 鏇存柊宸ヤ綔涓绘。
-                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
-                        wrkMast.setModiTime(new Date());
-                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
-                        }
-                    } else {
-                        News.error(""+mark+" - 2"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                    }
-
-                }else {
-                    News.errorNoLog(""+mark+" - 6"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isLoading()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
-                            +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk()+"銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
-                }
-            }
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - wms鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
-
-    }
-
-    /**
-     * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
-     */
-    public synchronized void stnToCrnStnPick(Integer mark) {
-        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)) {
-//                    News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", 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()) {
-                    News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�");
-                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
-//                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
-                    if (wrkMast == null) {
-                        // 鏃犳嫞鏂欐暟鎹�
-                        continue;
-                    }
-                    if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
-                            || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
-                        continue;
-                    }
-
-                    // 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹�
-//                    int stnNo = 0;
-//                    if (wrkMast.getStaNo() == 109) {
-//                        stnNo = 127;
-//                    } else if (wrkMast.getStaNo() == 113) {
-//                        stnNo = 128;
-//                    } else {
-//                        log.error("{}鍙蜂换鍔℃暟鎹紓甯革紒", wrkMast.getWrkNo());
+//                        } else {
+//                            if (jsonObject.getString("msg").equals("宸ヤ綔妗e凡瀛樺湪")) {
+//
+//                                //宸ヤ綔妗e凡瀛樺湪    鍐嶆杩涘幓
+////                                wrkMast = wrkMastMapper.selectPakInStepBarcode(barcode);
+////                                if (wrkMast != null) {
+////                                    barcodeThread.setBarcode("");
+////                                    staProtocol.setWorkNo(9999);
+////                                    //staProtocol.setWorkNo(wrkMast.getWrkNo());
+////                                    //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
+////                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
+////                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+////                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+////                                    log.error("杈撻�佺嚎涓嬪彂2锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
+////                                    ledThread.errorReset();
+////                                    log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+////                                    if (!result) {
+////                                        News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+////
+////                                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+////                                    }
+////                                }
+//
+//                                continue;
+//                            }
+//                            staProtocol.setWorkNo(wrkNo);
+//                            wrkNo++;
+//                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+////
+////                            if (ledThread != null) {
+//                            String errorMsg = jsonObject.getString("msg");
+//                            if (!Cools.isEmpty(errorMsg)) {
+//                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+//                            }
+////                            }
+////                            News.error(methodName + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+//                        }
+//
+//
+//                    } catch (Exception 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)) {
-                        News.error(""+mark+" - 2"+" - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
-                        staProtocol.setWorkNo(wrkNo++);
-                        staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue()-(short)1));
-                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                        log.error("杈撻�佺嚎涓嬪彂4锛�"+9989+","+(pickSta.getStaNo().shortValue()-(short)1));
-                        //LED
-                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
-                        // led 寮傚父鏄剧ず
-                        if (ledThread != null) {
-                            String errorMsg = "姝や负鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱.璇锋斁鍦�"+pickSta.getBackSta().shortValue()+"绔欑偣";
-                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                        }
-                        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((short) 161);
-                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    log.error("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                    if (!result) {
-                        News.error(""+mark+" - 3"+" - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                    }
-
-                }else {
-                    News.errorNoLog(""+mark+" - 6"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isLoading()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk());
-                }
-
-            }
-
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
-    }
-
-
-    //鐩樼偣鍐嶅叆搴�
-    public synchronized void stnToCrnStnPick2(){
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻鎷f枡鍏ュ簱鍙�
-            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
-                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
-                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
-                if (staProtocol == null) {
-                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk()
-//                        && staProtocol.getWorkNo() > 0
-                        && staProtocol.isPakMk()){
-
-                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-                    if (barcodeThread == null) {
-                        continue;
-                    }
-                    String barcode = barcodeThread.getBarcode();
-                    if(!Cools.isEmpty(barcode)) {
-//                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-                        if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
-                            staProtocol.setWorkNo(wrkNo++);
-                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-
-                            // led 寮傚父鏄剧ず
-                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
-                            if (ledThread != null) {
-                                String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
-                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                            }
-                            continue;
-                        }
-                    } else {
-                        staProtocol.setWorkNo(wrkNo++);
-                        staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-
-                        // led 寮傚父鏄剧ず
-                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
-                        if (ledThread != null) {
-                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
-                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                        }
-                        continue;
-                    }
-
-                    WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode);
-                    if (wrkMast == null) {
-                        // 鏃犵洏鐐规暟鎹�
-                        continue;
-                    }
-
-                    // 鍑哄簱纭淇″彿浣�
-//                    if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) {
-//                        continue;
-//                    }
-//                    if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo())
-//                            || Cools.isEmpty(wrkMast.getSourceStaNo())) {
-//                        continue;
-//                    }
-
-                    //   鑾峰彇搴撲綅鍙�
-                    try {
-                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-                        SearchLocParam param = new SearchLocParam();
-                        param.setBarcode(barcode);
-                        param.setIoType(107);
-                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
-                        if (!Cools.isEmpty(locMast)){
-                            param.setLocType1(locMast.getLocType1());
-                        }else {
-                            param.setLocType1(locTypeDto.getLocType1());
-                        }
-
-                        String response = "";
-                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
-                        try {
-                            response = new HttpHandler.Builder()
-                                    .setUri(wmsUrl)
-                                    .setPath("/rpc/pakin2/loc/v1")
-                                    .setJson(JSON.toJSONString(param))
-//                                    .setTimeout(15, TimeUnit.SECONDS)
-                                    .build()
-                                    .doPost();
-                        } catch(Exception e){
-                            log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
-                            log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
-                            e.printStackTrace();
-                            continue;
-                        }
-                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
-                        log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
-                        if(response.equals("")) {
-                            continue;
-                        }
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
-                        Integer code = jsonObject.getInteger("code");
-                        if (code == 200) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-                            if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
-                                log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
-                            } else {
-                                log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
-                                try {
-                                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                                    staProtocol.setStaNo((short)161);
-                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                                    ledThread.errorReset();
-                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                                    if (!result) {
-                                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                                    }
-                                    log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
-                                } catch (Exception e) {
-                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
-                                    e.printStackTrace();
-                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                }
-                            }
-                        } else {
-                            staProtocol.setWorkNo(wrkNo++);
-                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (ledThread != null) {
-                                String errorMsg = jsonObject.getString("msg");
-                                if (!Cools.isEmpty(errorMsg)) {
-                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                                }
-                            }
-                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
-                        }
-                    } catch (Exception e) {
-                        log.error("stnToCrnStnPick2===>>fail", e);
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-
-                }
-
-            }
-
-        }
-    }
-
-    /**
-     * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
-     */
-    public synchronized void crnStnToOutStn(Integer mark) {
-
-        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.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
-                            && crnProtocol.statusType == CrnStatusType.WAITING
-                            && crnProtocol.forkPosType == CrnForkPosType.HOME) {
-                        News.error("鍫嗗灈鏈哄嚭搴撳畬鎴� - 寮�濮嬫墽琛�");
-
-                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-
-                        // 涓嬪彂绔欑偣淇℃伅
-                        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) {
-                            // 澶嶄綅鍫嗗灈鏈�
-                            News.error("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�", wrkMast.getWrkNo());
-                            crnThread.setResetFlag(true);
-                        } else {
-                            News.error(""+mark+" - 1"+" - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
-                        }
-
-                    }else {
-                        News.errorNoLog(""+mark+" - 6"+" - 鍫嗗灈鏈轰俊鎭笉绗﹀悎鍏ュ簱鏉′欢锛侊紒锛�"
-                                +" 鍫嗗灈鏈虹姸鎬侊細"+crnProtocol.modeType+"==鑷姩AUTO锛�" + CrnModeType.AUTO
-                                +"銆佸爢鍨涙満浠诲姟鍙凤細"+crnProtocol.getTaskNo()+"==宸ヤ綔妗d换鍔″彿锛�" + wrkMast.getWrkNo().shortValue()
-                                +"銆佺姸鎬佹灇涓撅細"+crnProtocol.statusType+"==WAITING锛�90 //浠诲姟瀹屾垚绛夊緟WCS纭)锛�" + CrnStatusType.WAITING
-                                +"銆佽揣鍙変綅缃細"+crnProtocol.forkPosType+"==HOME锛�0  // 璐у弶鍘熶綅锛�" + CrnForkPosType.HOME);
-                    }
-
-                }
-            }
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯  ===銆嬫墽琛屽畬鎴�");
-    }
-
-    /**
-     * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
-     */
-    public synchronized void crnIoExecute(Integer mark) {
-
-        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) {
-                News.error(""+mark+" - 1"+" - {}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
-                continue;
-            }
-
-//            //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓�
-//            if(crnThread.isBackHpFlag()){
-//                continue;
+//
+//                }
+//
+//
 //            }
-
-            // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
-                    && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
-                // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-                if (crnProtocol.getLastIo().equals("I")) {
-                    if (basCrnp.getInEnable().equals("Y")) {
-                        //mark - 1 - ....
-                        this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
-                    } else if (basCrnp.getOutEnable().equals("Y")) {
-                        //mark - 2 - ....
-                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
-                    }
-                }
-                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-                else if (crnProtocol.getLastIo().equals("O")) {
-                    if (basCrnp.getOutEnable().equals("Y")) {
-                        this.locToCrnStn(crn, crnProtocol,mark); //  鍑哄簱
-                        crnProtocol.setLastIo("I");
-                    } else if (basCrnp.getInEnable().equals("Y")) {
-                        this.crnStnToLoc(crn, crnProtocol,mark); //  鍏ュ簱
-                        crnProtocol.setLastIo("O");
-                    }
-                }
-            }
-            // 搴撲綅绉昏浆
-            //mark - 3 - ....
-            this.locToLoc(crn, crnProtocol,mark);
-//            this.crnRebackHp(crnProtocol, crnThread);
-
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
-    }
-
-    /**
-     * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
-     */
-    public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - 缁勬墭  ===銆嬫墽琛屽畬鎴�");
+//
+//    }
+//
+//    /**
+//     * wms鍏ュ簱
+//     * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 1 ==>> 2
+//     */
+//    public synchronized void generateStoreWrkFile0(Integer mark) {
+//        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+//        for (DevpSlave devp : slaveProperties.getDevp()) {
+//            // 閬嶅巻鍏ュ簱鍙�
+//            for (DevpSlave.Sta inSta : devp.getInSta()) {
+//                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+//                if (staProtocol == null) {
+//                    continue;
+//                } else {
+//                    staProtocol = staProtocol.clone();
+//                }
+//
+////                // 鍏ュ嚭搴撴ā寮忓垽鏂�
+//                if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) {
+//                    continue;
+//                }
+//
+//                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+//                if (!staProtocol.isLoading()) {
+//                    continue;
+//                }
+//                if (staProtocol.isAutoing() && staProtocol.isInEnable()
+//                        && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
+//                        && staProtocol.isPakMk()) {
+//                    News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
+//                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
+//                    WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo());
+//                    if (wrkMast == null) {
+//                        continue;
+//                    }
+//
+//                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//
+//                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+//                    staProtocol.setWorkNo(wrkMast.getWrkNo());
+//                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+//                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                    log.error("杈撻�佺嚎涓嬪彂3锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
+//                    if (result) {
+//                        // 鏇存柊宸ヤ綔涓绘。
+//                        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
+//                        wrkMast.setModiTime(new Date());
+//                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                            News.error("" + mark + " - 1" + " - 鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+//                        }
+//                    } else {
+//                        News.error("" + mark + " - 2" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+//                    }
+//
+//                } else {
+//                    News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+//                            + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk() + "銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
+//                            + "銆侀攣瀹氭爣璁�" + staProtocol.isPakMk() + "銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
+//                }
+//            }
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - wms鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
+//
+//    }
+//
+//    /**
+//     * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
+//     */
+//    public synchronized void stnToCrnStnPick(Integer mark) {
+//        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();
+//                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//
+//                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+//
+//                // 灏哄妫�娴嬪紓甯�
+//                boolean back = false;
+//                String errMsg = "";
+//                if (staProtocol.isFrontErr()) {
+//                    errMsg = "鍓嶈秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isBackErr()) {
+//                    errMsg = "鍚庤秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isHighErr()) {
+//                    errMsg = "楂樿秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isLeftErr()) {
+//                    errMsg = "宸﹁秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isRightErr()) {
+//                    errMsg = "鍙宠秴闄�";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isWeightErr()) {
+//                    errMsg = "瓒呴噸";
+//                    back = true;
+//                }
+//                if (!back && staProtocol.isBarcodeErr()) {
+//                    errMsg = "鎵爜澶辫触";
+//                    back = true;
+//                }
+//
+//                // 閫�鍥�
+//                if (back) {
+//                    log.info("errmsg: " + errMsg);
+////                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+//                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg));
+//                    if (!staProtocol.isLoading()) {
+//                        continue;
+//                    }
+//                    if (!staProtocol.isPakMk()) {
+//                        continue;
+//                    }
+//                    staProtocol.setWorkNo(wrkNo);
+//                    News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", pickSta.getStaNo(), errMsg, wrkNo);
+//                    wrkNo++;
+//                    staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+//                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                    log.error("杈撻�佺嚎涓嬪彂1锛�" + 9999 + "," + pickSta.getBackSta());
+//                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+//
+//                    // led 寮傚父鏄剧ず
+//                    if (ledThread != null) {
+//                        MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg));
+//                    }
+//                    continue;
+//                }
+//                if (!Cools.isEmpty(barcode)) {
+//                    News.infoNoLog("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+//                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+//                        continue;
+//                    }
+//                } else {
+//                    continue;
+//                }
+//
+//
+//                if (!Cools.isEmpty(barcode)) {
+////                    News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+//                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+//                        continue;
+//                    }
+//                } else {
+//                    continue;
+//                }
+//
+//
+//                if (staProtocol == null) {
+//                    continue;
+//                } else {
+//                    staProtocol = staProtocol.clone();
+//                }
+//
+////                // 鍏ュ嚭搴撴ā寮忓垽鏂�
+////                if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
+//
+//                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+//                    News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
+//                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
+////                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
+//                    if (wrkMast == null) {
+//                        // 鏃犳嫞鏂欐暟鎹�
+//                        continue;
+//                    }
+//                    if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
+//                            || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+//                        continue;
+//                    }
+//
+//                    // 鎷c�佺洏銆佸苟 浣滀笟绔欒浆鎹�
+////                    int stnNo = 0;
+////                    if (wrkMast.getStaNo() == 109) {
+////                        stnNo = 127;
+////                    } else if (wrkMast.getStaNo() == 113) {
+////                        stnNo = 128;
+////                    } else {
+////                        log.error("{}鍙蜂换鍔℃暟鎹紓甯革紒", wrkMast.getWrkNo());
+////                    }
+//                    // 鑾峰彇鐩爣绔�
+//                    Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+//                            .eq("type_no", wrkMast.getIoType() - 50)
+//                            .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+//                            .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+//                    StaDesc staDesc = staDescService.selectOne(wrapper);
+//                    if (Cools.isEmpty(staDesc)) {
+//                        News.error("" + mark + " - 2" + " - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+//                        staProtocol.setWorkNo(wrkNo++);
+//                        staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue() - (short) 1));
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                        log.error("杈撻�佺嚎涓嬪彂4锛�" + 9989 + "," + (pickSta.getStaNo().shortValue() - (short) 1));
+//                        //LED
+//                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+//                        // led 寮傚父鏄剧ず
+//                        if (ledThread != null) {
+//                            String errorMsg = "姝や负鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱.璇锋斁鍦�" + pickSta.getBackSta().shortValue() + "绔欑偣";
+//                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+//                        }
+//                        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(Short.valueOf(wrkMast.getStaNo().toString()));
+//                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                    log.error("杈撻�佺嚎涓嬪彂5锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
+//                    if (!result) {
+//                        News.error("" + mark + " - 3" + " - 鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+//                    }
+//
+//                } else {
+//                    News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+//                            + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk());
+//                }
+//
+//            }
+//
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱  ===銆嬫墽琛屽畬鎴�");
+//    }
+//
+//
+//    //鐩樼偣鍐嶅叆搴�
+//    public synchronized void stnToCrnStnPick2() {
+//        for (DevpSlave devp : slaveProperties.getDevp()) {
+//            // 閬嶅巻鎷f枡鍏ュ簱鍙�
+//            for (DevpSlave.Sta pickSta : devp.getPickSta()) {
+//                // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+//                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+//                if (staProtocol == null) {
+//                    continue;
+//                } else {
+//                    staProtocol = staProtocol.clone();
+//                }
+//                if (staProtocol.isAutoing()
+//                        && staProtocol.isLoading()
+//                        && staProtocol.isInEnable()
+//                        && !staProtocol.isEmptyMk()
+////                        && staProtocol.getWorkNo() > 0
+//                        && staProtocol.isPakMk()) {
+//
+//                    // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+//                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+//                    if (barcodeThread == null) {
+//                        continue;
+//                    }
+//                    String barcode = barcodeThread.getBarcode();
+//                    if (!Cools.isEmpty(barcode)) {
+////                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+//                        if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) {
+//                            staProtocol.setWorkNo(wrkNo++);
+//                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//
+//                            // led 寮傚父鏄剧ず
+//                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+//                            if (ledThread != null) {
+//                                String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+//                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+//                            }
+//                            continue;
+//                        }
+//                    } else {
+//                        staProtocol.setWorkNo(wrkNo++);
+//                        staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+//                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//
+//                        // led 寮傚父鏄剧ず
+//                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+//                        if (ledThread != null) {
+//                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+//                            MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+//                        }
+//                        continue;
+//                    }
+//
+//                    WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode);
+//                    if (wrkMast == null) {
+//                        // 鏃犵洏鐐规暟鎹�
+//                        continue;
+//                    }
+//
+//                    // 鍑哄簱纭淇″彿浣�
+////                    if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) {
+////                        continue;
+////                    }
+////                    if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo())
+////                            || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+////                        continue;
+////                    }
+//
+//                    //   鑾峰彇搴撲綅鍙�
+//                    try {
+//                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+//                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+//                        SearchLocParam param = new SearchLocParam();
+//                        param.setBarcode(barcode);
+//                        param.setIoType(107);
+//                        param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
+//                        if (!Cools.isEmpty(locMast)) {
+//                            param.setLocType1(locMast.getLocType1());
+//                        } else {
+//                            param.setLocType1(locTypeDto.getLocType1());
+//                        }
+//
+//                        String response = "";
+//                        log.info("鍏ュ簱浣滀笟绔�" + pickSta.getStaNo() + "鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+//                        try {
+//                            response = new HttpHandler.Builder()
+//                                    .setUri(wmsUrl)
+//                                    .setPath("/rpc/pakin2/loc/v1")
+//                                    .setJson(JSON.toJSONString(param))
+////                                    .setTimeout(15, TimeUnit.SECONDS)
+//                                    .build()
+//                                    .doPost();
+//                        } catch (Exception e) {
+//                            log.error("鍏ュ簱浣滀笟绔�" + pickSta.getStaNo() + "鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+//                            log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
+//                            e.printStackTrace();
+//                            continue;
+//                        }
+//                        log.info("鍏ュ簱浣滀笟绔�" + pickSta.getStaNo() + "鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
+//                        log.info("鍏ュ簱浣滀笟绔�" + pickSta.getStaNo() + "涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
+//                        if (response.equals("")) {
+//                            continue;
+//                        }
+//                        JSONObject jsonObject = JSON.parseObject(response);
+//                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+//                        Integer code = jsonObject.getInteger("code");
+//                        if (code == 200) {
+//                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+//                            if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
+//                                log.error("浠诲姟鍙�" + wrkMast.getWrkNo() + "鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
+//                            } else {
+//                                log.info("浠诲姟鍙�" + wrkMast.getWrkNo() + "鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
+//                                try {
+//                                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+//                                    staProtocol.setWorkNo(wrkMast.getWrkNo());
+//                                    staProtocol.setStaNo(Short.valueOf(dto.getStaNo().toString()));
+//                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+//
+//                                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                                    if (!result) {
+//                                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+//                                    }
+//                                    log.info("浠诲姟鍙�" + wrkMast.getWrkNo() + "鐩樼偣鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
+//
+//                                    ledThread.errorReset();
+//                                    log.error("鐩樼偣鍚巐ed閿欒鍒犻櫎");
+//
+//                                } catch (Exception e) {
+//                                    log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
+//                                    e.printStackTrace();
+//                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                                }
+//                            }
+//                        } else {
+//                            staProtocol.setWorkNo(wrkNo++);
+//                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            if (ledThread != null) {
+//                                String errorMsg = jsonObject.getString("msg");
+//                                if (!Cools.isEmpty(errorMsg)) {
+//                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+//                                }
+//                            }
+//                            log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
+//                        }
+//                    } catch (Exception e) {
+//                        log.error("stnToCrnStnPick2===>>fail", e);
+//                        e.printStackTrace();
+//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                    }
+//
+//                }
+//
+//            }
+//
+//        }
+//    }
+//
+//    /**
+//     * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
+//     */
+//    public synchronized void crnStnToOutStn(Integer mark) {
+//
+//        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.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
+//                            && crnProtocol.statusType == CrnStatusType.WAITING
+//                            && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+//                        log.info("鍫嗗灈鏈哄嚭搴撳畬鎴� - 寮�濮嬫墽琛�");
+//
+//                        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//
+//                        // 涓嬪彂绔欑偣淇℃伅
+//                        staProtocol.setWorkNo(wrkMast.getWrkNo());
+//                        staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(), wrkMast.getSourceStaNo()));
+//                        if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+//                            log.info(staProtocol.getWorkNo() + "," + staProtocol.getStaNo() + "杈撻�佺嚎鍑哄簱鍛戒护涓嬪彂澶辫触");
+//                            continue;
+//                        } else {
+//                            log.info(staProtocol.getWorkNo() + "," + staProtocol.getStaNo() + "杈撻�佺嚎鍑哄簱鍛戒护涓嬪彂鎴愬姛");
+//                        }
+//
+//                        // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
+//                        wrkMast.setWrkSts(14L);
+//                        wrkMast.setCrnEndTime(new Date());
+//                        if (wrkMastMapper.updateById(wrkMast) != 0) {
+//                            // 澶嶄綅鍫嗗灈鏈�
+//                            log.error("鍑哄簱浠诲姟瀹屾垚涓嬪彂鍫嗗灈鏈哄浣�,{}", wrkMast.getWrkNo());
+//                            crnThread.setResetFlag(true);
+//                        } else {
+//                            News.error("" + mark + " - 1" + " - 鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+//                        }
+//
+//                    } else {
+//                        News.errorNoLog("" + mark + " - 6" + " - 鍫嗗灈鏈轰俊鎭笉绗﹀悎鍏ュ簱鏉′欢锛侊紒锛�"
+//                                + " 鍫嗗灈鏈虹姸鎬侊細" + crnProtocol.modeType + "==鑷姩AUTO锛�" + CrnModeType.AUTO
+//                                + "銆佸爢鍨涙満浠诲姟鍙凤細" + crnProtocol.getTaskNo() + "==宸ヤ綔妗d换鍔″彿锛�" + wrkMast.getWrkNo().shortValue()
+//                                + "銆佺姸鎬佹灇涓撅細" + crnProtocol.statusType + "==WAITING锛�90 //浠诲姟瀹屾垚绛夊緟WCS纭)锛�" + CrnStatusType.WAITING
+//                                + "銆佽揣鍙変綅缃細" + crnProtocol.forkPosType + "==HOME锛�0  // 璐у弶鍘熶綅锛�" + CrnForkPosType.HOME);
+//                    }
+//
+//                }
+//            }
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯  ===銆嬫墽琛屽畬鎴�");
+//    }
+//
+//    /**
+//     * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
+//     */
+//    public synchronized void crnIoExecute(Integer mark) {
+//
 //        for (CrnSlave crn : slaveProperties.getCrn()) {
 //            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
 //            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
@@ -776,1243 +855,1199 @@
 //            }
 //            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
 //            if (basCrnp == null) {
-//                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+//                News.error("" + mark + " - 1" + " - {}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
 //                continue;
 //            }
-        if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-            if (crnProtocol.getBay() == 1 && crnProtocol.getLevel() == 1) {
-                return;
-            }
-
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
-            if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
-                return;
-            }
-
-            //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
-            if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
-                return;
-            }
-
-            //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
-            if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
-                return;
-            }
-            News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            CrnCommand crnCommand = new CrnCommand();
-            crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-            crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
-            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-            crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
-            crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
-            crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
-            crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
-            crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
-            crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
-            crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
-            if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
-                News.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
-            }
-            crnThread.setBackHpFlag(true);
-        }
-//        }
-    }
-
-    /**
-     * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
-     */
-    public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
-        News.warnNoLog(""+mark+" - 1"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽叆搴�");
-        for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
-            boolean flag = false;
-            // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
-            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-            if (staProtocol == null) {
-                News.infoNoLog(""+mark+" - 1"+" - 1"+" - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц)锛歴taProtocol="+staProtocol);
-                continue;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            // 鏌ヨ绔欑偣璇︾粏淇℃伅
-            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-            if (staDetl == null) {
-                News.error(""+mark+" - 1"+" - 2"+" - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
-                continue;
-            }
-            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
-                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
-                flag = true;
-            }
-            if (!flag) {
-                News.errorNoLog(""+mark+" - 1"+" - 3"+" - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):"
-                        +"鑷姩淇″彿"+staProtocol.isAutoing()+"鏈夌墿淇″彿"+staProtocol.isLoading()
-                        +"宸ヤ綔鍙�>0"+staProtocol.getWorkNo()+"鍙叆淇″彿"+staProtocol.isInEnable()
-                        +"鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")"+staDetl.getCanining());
-                continue;
-            }
-            // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
-            WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
-            if (null == wrkMast) {
-                News.infoNoLog(""+mark+" - 1"+" - 4"+" - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
-//                log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
-                continue;
-            }
-            // 鑾峰彇搴撲綅淇℃伅
-            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
-            if (locMast == null) {
-                News.error(""+mark+" - 1"+" - 5"+" - 鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
-                continue;
-            }
-            if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
-                News.error(""+mark+" - 1"+" - 6"+" - 鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
-                continue;
-            }
-
-            // 鍫嗗灈鏈烘帶鍒惰繃婊�
-            if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
-//                News.infoNoLog(""+mark+" - 1"+" - 7"+" - 鍫嗗灈鏈烘帶鍒惰繃婊�:鍫嗗灈鏈烘槸鍚︾┖闂�={}锛屼换鍔″彿={}", crnProtocol.getStatusType(),crnProtocol.getTaskNo());
-                continue;
-            }
-
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                continue;
-            }
-
-            // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
-                News.warnNoLog(""+mark+" - 1"+" - 8"+" - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}",wrkMast.getWrkNo());
-                String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
-                LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-                // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-                if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                    News.warnNoLog(""+mark+" - 1"+" - 9"+" - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}",shallowLoc.getLocSts());
-                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                    if (null == waitWrkMast) {
-                        News.error(""+mark+" - 1"+" - 10"+" - {}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-                    } else {
-                        waitWrkMast.setIoPri(15D);
-                        waitWrkMast.setModiTime(new Date());
-                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                            News.error(""+mark+" - 1"+" - 11"+" - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                        }
-                        continue;
-                    }
-
-                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                    News.warnNoLog(""+mark+" - 1"+" - 12"+" - // F銆丏  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
-                    // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-                    if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-                        wrkMast.setUpdMk("Y");
-                        wrkMast.setIoPri(14D);
-                        wrkMastMapper.updateById(wrkMast);
-                        // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
-                        moveLocForDeepLoc(slave, shallowLoc,mark);
-                        // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-//                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
-                    }
-                    continue;
-                } else if (shallowLoc.getLocSts().equals("Q")) {
-                    News.warnNoLog(""+mark+" - 1"+" - 13"+" - // Q  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
-                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                    if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                        News.infoNoLog(""+mark+" - 1"+" - 14"+" - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}",waitWrkMast.getWrkSts());
-                        continue;
-                    }
-                }
-            }
-            News.warnNoLog(""+mark+" - 1"+" - 15"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
-                    ,crnStn.getRow().shortValue(),crnStn.getBay().shortValue(),crnStn.getLev().shortValue()
-                    ,locMast.getRow1().shortValue(),locMast.getBay1().shortValue(),locMast.getLev1().shortValue());
-
-            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            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());     // 鐩爣搴撲綅灞�
-            crnCommand.setTraySize(locMast.getLocType1() == 2);
-            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                News.error(""+mark+" - 1"+" - 16"+" - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-            } else {
-
-//                long startTime = System.currentTimeMillis();
-//                while ((System.currentTimeMillis() - startTime) < COMMAND_TIMEOUT) {
 //
-//                    if (true) {
-//                        break;
+////            //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓�
+////            if(crnThread.isBackHpFlag()){
+////                continue;
+////            }
+//
+//            // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+//            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
+//                    && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
+//                News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
+//                // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+//                if (crnProtocol.getLastIo().equals("I")) {
+//                    if (basCrnp.getInEnable().equals("Y")) {
+//                        //mark - 1 - ....
+//                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
+//                        crnProtocol.setLastIo("O");
+//                    } else if (basCrnp.getOutEnable().equals("Y")) {
+//                        //mark - 2 - ....
+//                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
+//                        crnProtocol.setLastIo("I");
 //                    }
+//                }
+//                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+//                else if (crnProtocol.getLastIo().equals("O")) {
+//                    if (basCrnp.getOutEnable().equals("Y")) {
+//                        this.locToCrnStn(crn, crnProtocol, mark); //  鍑哄簱
+//                        crnProtocol.setLastIo("I");
+//                    } else if (basCrnp.getInEnable().equals("Y")) {
+//                        this.crnStnToLoc(crn, crnProtocol, mark); //  鍏ュ簱
+//                        crnProtocol.setLastIo("O");
+//                    }
+//                }
+//            }
+//            // 搴撲綅绉昏浆
+//            //mark - 3 - ....
+//            this.locToLoc(crn, crnProtocol, mark);
+////            this.crnRebackHp(crnProtocol, crnThread);
 //
-//                    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) {
-                    News.error(""+mark+" - 1"+" - 17"+" - 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                }
-            }
-        }
-        News.infoNoLog(""+mark+" - 1"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍏ュ簱鎵ц瀹屾瘯");
-    }
-
-    /**
-     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
-     * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
-     */
-    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
-        News.warnNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
-        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) {
-                    News.error(""+mark+" - 2"+" - 1"+" - 鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
-                    continue;
-                }
-                // 鑾峰彇婧愬簱浣嶄俊鎭�
-                LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-                if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
-                    News.error(""+mark+" - 2"+" - 2"+" - 鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
-                    continue;
-                }
-                // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
-                if (staProtocol == null) {
-                    News.infoNoLog(""+mark+" - 2"+" - 3"+" - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol="+staProtocol);
-                    break;
-//                    continue;
-                } else {
-                    staProtocol = staProtocol.clone();
-                }
-
-//            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-//            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-//                if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-//                    News.infoNoLog(""+mark+" - 2"+" - 4"+" - 鍏ュ嚭搴撴ā寮忥紙姝ゅ鍑哄簱鏂规硶锛屽嚭搴撴ā寮忕户缁�=="+devpThread.ioModeOf2F);
-//                    continue;
-//                }
-
-                // 鏌ヨ绔欑偣璇︾粏淇℃伅
-                BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
-                if (staDetl == null) {
-                    News.error(""+mark+" - 2"+" - 5"+" - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", 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())) {
-                        News.warnNoLog(""+mark+" - 2"+" - 6"+" - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}",wrkMast.getWrkNo());
-                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
-                        LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-                        // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-                        if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                            News.warnNoLog(""+mark+" - 2"+" - 7"+" - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}",shallowLoc.getLocSts());
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-                            if (null == waitWrkMast) {
-                                News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-                            } else {
-                                if (waitWrkMast.getWrkSts() == 11) {
-                                    waitWrkMast.setIoPri(15D);
-                                    waitWrkMast.setModiTime(new Date());
-                                    if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                        News.error(""+mark+" - 2"+" - 8"+" - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-                                    }
-                                    continue;
-                                } else {
-
-                                }
-                            }
-                        } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-                            News.warnNoLog(""+mark+" - 2"+" - 9"+" - // F銆丏  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
-//                            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,mark);
-                            }
-                            News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
-                            continue;
-                        } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
-                            News.warnNoLog(""+mark+" - 2"+" - 10"+" - // Q銆丼  搴撲綅鐘舵��={}",shallowLoc.getLocSts());
-                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
-                            if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
-                                News.infoNoLog(""+mark+" - 2"+" - 11"+" - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}",waitWrkMast.getWrkSts());
-                                continue;
-                            }
-                        }
-                    }
-
-                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
-                        break;
-//                        return;
-                    }
-
-                    News.warnNoLog(""+mark+" - 2"+" - 12"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
-                            ,sourceSta.getRow1().shortValue(),sourceSta.getBay1().shortValue(),sourceSta.getLev1().shortValue()
-                            ,crnStn.getRow().shortValue(),crnStn.getBay().shortValue(),crnStn.getLev().shortValue());
-
-                    // 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());     // 鐩爣搴撲綅灞�
-                    crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error(""+mark+" - 2"+" - 13"+" - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
-                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                        Date now = new Date();
-                        wrkMast.setWrkSts(12L);
-                        wrkMast.setCrnStrTime(now);
-                        wrkMast.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.error(""+mark+" - 2"+" - 14"+" - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-            }
-        }
-        News.infoNoLog(""+mark+" - 2"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
-    }
-
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
+//    }
+//
 //    /**
-//     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
+//     * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
 //     */
-//    public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
-//        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
-//            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
-//            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
-//            if (wrkMast == null) {
-//                continue;
+//    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;
 //            }
-//            // 宸ヤ綔妗g姸鎬佸垽鏂�
-//            if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null){
-//                log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
-//                continue;
+//
+//            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
+//            if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
+//                return;
 //            }
-//            // 鑾峰彇婧愬簱浣嶄俊鎭�
-//            LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-//            if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
-//                log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
-//                continue;
+//
+//            //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
+//            if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
+//                return;
 //            }
-//            // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
-//            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+//
+//            //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
+//            if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+//                return;
+//            }
+//            News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
+//            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//            CrnCommand crnCommand = new CrnCommand();
+//            crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+//            crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+//            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//            crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  鍥炲師鐐�
+//            crnCommand.setSourcePosX((short) 0);     // 婧愬簱浣嶆帓
+//            crnCommand.setSourcePosY((short) 0);     // 婧愬簱浣嶅垪
+//            crnCommand.setSourcePosZ((short) 0);     // 婧愬簱浣嶅眰
+//            crnCommand.setDestinationPosX((short) 0);     // 鐩爣搴撲綅鎺�
+//            crnCommand.setDestinationPosY((short) 0);     // 鐩爣搴撲綅鍒�
+//            crnCommand.setDestinationPosZ((short) 0);     // 鐩爣搴撲綅灞�
+//            if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
+//                News.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
+//            }
+//            crnThread.setBackHpFlag(true);
+//        }
+////        }
+//    }
+//
+//    /**
+//     * 鍏ュ簱  ===>>  鍫嗗灈鏈虹珯鍒板簱浣�
+//     */
+//    public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
+//        News.warnNoLog("" + mark + " - 1" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽叆搴�");
+//        for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
+//            boolean flag = false;
+//            // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
+//            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
 //            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
 //            if (staProtocol == null) {
+//                News.infoNoLog("" + mark + " - 1" + " - 1" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
 //                continue;
 //            } else {
 //                staProtocol = staProtocol.clone();
 //            }
-//
-////            // 鍏ュ嚭搴撴ā寮忓垽鏂�
-////            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
-//
-//
 //            // 鏌ヨ绔欑偣璇︾粏淇℃伅
 //            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
 //            if (staDetl == null) {
-//                log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+//                News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
 //                continue;
 //            }
-//            // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-//            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
-//                    && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
-//                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//            if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+//                    && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+//                flag = true;
+//            }
+//            if (!flag) {
+//                News.errorNoLog("" + mark + " - 1" + " - 3" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):"
+//                        + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+//                        + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable()
+//                        + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+//                continue;
+//            }
+//            // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
+//            WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
+//            if (null == wrkMast) {
+//                News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+////                log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+//                continue;
+//            }
+//            // 鑾峰彇搴撲綅淇℃伅
+//            LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+//            if (locMast == null) {
+//                News.error("" + mark + " - 1" + " - 5" + " - 鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
+//                continue;
+//            }
+//            if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
+//                News.error("" + mark + " - 1" + " - 6" + " - 鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
+//                continue;
+//            }
 //
-//                // 鍫嗗灈鏈烘帶鍒惰繃婊�
-//                if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+//            // 鍫嗗灈鏈烘帶鍒惰繃婊�
+//            if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+////                News.infoNoLog(""+mark+" - 1"+" - 7"+" - 鍫嗗灈鏈烘帶鍒惰繃婊�:鍫嗗灈鏈烘槸鍚︾┖闂�={}锛屼换鍔″彿={}", crnProtocol.getStatusType(),crnProtocol.getTaskNo());
+//                continue;
+//            }
+//
+//            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+//            if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+//                continue;
+//            }
+//
+//            // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+//            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
+//                News.warnNoLog("" + mark + " - 1" + " - 8" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
+//                String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
+//                LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+//                // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+//                if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+//                    News.warnNoLog("" + mark + " - 1" + " - 9" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+//                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+//                    if (null == waitWrkMast) {
+//                        News.error("" + mark + " - 1" + " - 10" + " - {}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+//                    } else {
+//                        waitWrkMast.setIoPri(15D);
+//                        waitWrkMast.setModiTime(new Date());
+//                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+//                            News.error("" + mark + " - 1" + " - 11" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+//                        }
+//                        continue;
+//                    }
+//
+//                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+//                    News.warnNoLog("" + mark + " - 1" + " - 12" + " - // F銆丏  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+//                    // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
+//                    if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
+//                        wrkMast.setUpdMk("Y");
+//                        wrkMast.setIoPri(14D);
+//                        wrkMastMapper.updateById(wrkMast);
+//                        // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
+//                        moveLocForDeepLoc(slave, shallowLoc, mark);
+//                        // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
+////                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
+//                    }
 //                    continue;
-//                }
-//
-//                // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-//                if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
-//                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
-//                    LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-//                    // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
-//                    if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-//                        WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
-//                        if (null == waitWrkMast) {
-//                            log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-//                        } else {
-//                            if(waitWrkMast.getWrkSts() == 11) {
-//                                waitWrkMast.setIoPri(15D);
-//                                waitWrkMast.setModiTime(new Date());
-//                                if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-//                                    log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
-//                                }
-//                                continue;
-//                            } else {
-//
-//                            }
-//                        }
-//                    } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
-//                        // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
-//                        if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
-//                            wrkMast.setUpdMk("Y");
-//                            wrkMastMapper.updateById(wrkMast);
-//                            // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
-//                            moveLocForDeepLoc(slave, shallowLoc);
-//                        }
-//                        log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
+//                } else if (shallowLoc.getLocSts().equals("Q")) {
+//                    News.warnNoLog("" + mark + " - 1" + " - 13" + " - // Q  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+//                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+//                    if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
+//                        News.infoNoLog("" + mark + " - 1" + " - 14" + " - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
 //                        continue;
 //                    }
 //                }
+//            }
+//            News.warnNoLog("" + mark + " - 1" + " - 15" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
+//                    , crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue()
+//                    , locMast.getRow1().shortValue(), locMast.getBay1().shortValue(), locMast.getLev1().shortValue());
 //
-//                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-//                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(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+//            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+//            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+//            crnCommand.setDestinationPosX((short) (locMast.getRow1() + slave.getOffset()));     // 鐩爣搴撲綅鎺�
+//            crnCommand.setDestinationPosY((short) (locMast.getBay1() + slave.getOffset()));     // 鐩爣搴撲綅鍒�
+//            crnCommand.setDestinationPosZ((short) (locMast.getLev1() + slave.getOffset()));     // 鐩爣搴撲綅灞�
+//            crnCommand.setTraySize(locMast.getLocType1() == 2);
+//            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+//                News.error("" + mark + " - 1" + " - 16" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+//            } else {
+//
+////                long startTime = System.currentTimeMillis();
+////                while ((System.currentTimeMillis() - startTime) < COMMAND_TIMEOUT) {
+////
+////                    if (true) {
+////                        break;
+////                    }
+////
+////                    try{
+////                        Thread.sleep(500);
+////                    }catch(Exception ignore){}
+////                }
+//
+//                // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
+//                Date now = new Date();
+//                wrkMast.setWrkSts(3L);
+//                wrkMast.setCrnStrTime(now);
+//                wrkMast.setModiTime(now);
+//                if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                    News.error("" + mark + " - 1" + " - 17" + " - 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+//                }
+//            }
+//        }
+//        News.infoNoLog("" + mark + " - 1" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍏ュ簱鎵ц瀹屾瘯");
+//    }
+//
+//    /**
+//     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
+//     * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
+//     */
+//    public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
+//        News.warnNoLog("" + mark + " - 2" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽嚭搴�");
+//        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) {
+//                    News.error("" + mark + " - 2" + " - 1" + " - 鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
+//                    continue;
+//                }
+//                // 鑾峰彇婧愬簱浣嶄俊鎭�
+//                LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
+//                if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) {
+//                    News.error("" + mark + " - 2" + " - 2" + " - 鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
+//                    continue;
+//                }
+//                // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+//                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+//                if (staProtocol == null) {
+//                    News.infoNoLog("" + mark + " - 2" + " - 3" + " - 鍫嗗灈鏈哄嚭搴撶珯淇℃伅(staProtocol!=null缁х画鎵ц,鍚﹀垯寰幆缁堟)锛歴taProtocol=" + staProtocol);
+//                    break;
+////                    continue;
+//                } else {
+//                    staProtocol = staProtocol.clone();
 //                }
 //
-//                // 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());
+////            // 鍏ュ嚭搴撴ā寮忓垽鏂�
+////            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
+////                if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+////                    News.infoNoLog(""+mark+" - 2"+" - 4"+" - 鍏ュ嚭搴撴ā寮忥紙姝ゅ鍑哄簱鏂规硶锛屽嚭搴撴ā寮忕户缁�=="+devpThread.ioModeOf2F);
+////                    continue;
+////                }
+//
+//                // 鏌ヨ绔欑偣璇︾粏淇℃伅
+//                BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+//                if (staDetl == null) {
+//                    News.error("" + mark + " - 2" + " - 5" + " - 鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", 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())) {
+//                        News.warnNoLog("" + mark + " - 2" + " - 6" + " - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}", wrkMast.getWrkNo());
+//                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
+//                        LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+//                        // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+//                        if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+//                            News.warnNoLog("" + mark + " - 2" + " - 7" + " - // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+//                            if (null == waitWrkMast) {
+//                                News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+//                            } else {
+//                                if (waitWrkMast.getWrkSts() == 11) {
+//                                    waitWrkMast.setIoPri(15D);
+//                                    waitWrkMast.setModiTime(new Date());
+//                                    if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+//                                        News.error("" + mark + " - 2" + " - 8" + " - 璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+//                                    }
+//                                    continue;
+//                                } else {
+//
+//                                }
+//                            }
+//                        } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+//                            News.warnNoLog("" + mark + " - 2" + " - 9" + " - // F銆丏  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+////                            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, mark);
+//                            }
+//                            News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo);
+//                            continue;
+//                        } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
+//                            News.warnNoLog("" + mark + " - 2" + " - 10" + " - // Q銆丼  搴撲綅鐘舵��={}", shallowLoc.getLocSts());
+//                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo);
+//                            if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
+//                                News.infoNoLog("" + mark + " - 2" + " - 11" + " - // F銆丏  宸ヤ綔鐘舵��(鍒ゆ柇鏉′欢涓�==4)={}", waitWrkMast.getWrkSts());
+//                                continue;
+//                            }
+//                        }
+//                    }
+//
+//                    // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+//                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+//                        break;
+////                        return;
+//                    }
+//
+//                    News.warnNoLog("" + mark + " - 2" + " - 12" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
+//                            , sourceSta.getRow1().shortValue(), sourceSta.getBay1().shortValue(), sourceSta.getLev1().shortValue()
+//                            , crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue());
+//
+//                    // 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((short) (sourceSta.getRow1() + slave.getOffset()));     // 婧愬簱浣嶆帓
+//                    crnCommand.setSourcePosY((short) (sourceSta.getBay1() + slave.getOffset()));     // 婧愬簱浣嶅垪
+//                    crnCommand.setSourcePosZ((short) (sourceSta.getLev1() + slave.getOffset()));     // 婧愬簱浣嶅眰
+//                    crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
+//                    crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
+//                    crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+//                    crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
+//                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+//                        News.error("" + mark + " - 2" + " - 13" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+//                    } else {
+//                        // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+//                        Date now = new Date();
+//                        wrkMast.setWrkSts(12L);
+//                        wrkMast.setCrnStrTime(now);
+//                        wrkMast.setModiTime(now);
+//                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                            News.error("" + mark + " - 2" + " - 14" + " - 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+//                        }
+//                        break;
+//                    }
+//                }
+//            }
+//        }
+//        News.infoNoLog("" + mark + " - 2" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
+//    }
+//
+////    /**
+////     * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
+////     */
+////    public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
+////        for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
+////            // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
+////            WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo());
+////            if (wrkMast == null) {
+////                continue;
+////            }
+////            // 宸ヤ綔妗g姸鎬佸垽鏂�
+////            if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null){
+////                log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType());
+////                continue;
+////            }
+////            // 鑾峰彇婧愬簱浣嶄俊鎭�
+////            LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
+////            if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
+////                log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
+////                continue;
+////            }
+////            // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+////            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+////            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+////            if (staProtocol == null) {
+////                continue;
+////            } else {
+////                staProtocol = staProtocol.clone();
+////            }
+////
+//////            // 鍏ュ嚭搴撴ā寮忓垽鏂�
+//////            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
+////
+////
+////            // 鏌ヨ绔欑偣璇︾粏淇℃伅
+////            BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+////            if (staDetl == null) {
+////                log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+////                continue;
+////            }
+////            // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
+////            if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() !=null && staDetl.getCanouting().equals("Y")
+////                    && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+////                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+////
+////                // 鍫嗗灈鏈烘帶鍒惰繃婊�
+////                if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+////                    continue;
+////                }
+////
+////                // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+////                if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
+////                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
+////                    LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+////                    // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+////                    if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+////                        WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+////                        if (null == waitWrkMast) {
+////                            log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+////                        } else {
+////                            if(waitWrkMast.getWrkSts() == 11) {
+////                                waitWrkMast.setIoPri(15D);
+////                                waitWrkMast.setModiTime(new Date());
+////                                if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+////                                    log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+////                                }
+////                                continue;
+////                            } else {
+////
+////                            }
+////                        }
+////                    } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+////                        // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
+////                        if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
+////                            wrkMast.setUpdMk("Y");
+////                            wrkMastMapper.updateById(wrkMast);
+////                            // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
+////                            moveLocForDeepLoc(slave, shallowLoc);
+////                        }
+////                        log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛�", wrkMast.getWrkNo());
+////                        continue;
+////                    }
+////                }
+////
+////                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+////                if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+////                    return;
+////                }
+////
+////                // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+////                CrnCommand crnCommand = new CrnCommand();
+////                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+////                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+////                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+////                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+////                crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
+////                crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
+////                crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
+////                crnCommand.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
+////                crnCommand.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
+////                crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+////                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+////                    log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+////                } else {
+////                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+////                    Date now = new Date();
+////                    wrkMast.setWrkSts(12L);
+////                    wrkMast.setCrnStrTime(now);
+////                    wrkMast.setModiTime(now);
+////                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+////                        log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+////                    }
+////                }
+////            }
+////        }
+////    }
+//
+//    /**
+//     * 搴撲綅绉昏浆
+//     */
+//    public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol, Integer mark) {
+//        // 鑾峰彇宸ヤ綔妗d俊鎭�
+//        WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
+//        if (null == wrkMast) {
+//            return;
+//        }
+//        News.warnNoLog("" + mark + " - 3" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽簱浣嶇Щ杞�");
+//        // 鑾峰彇婧愬簱浣嶄俊鎭�
+//        LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
+//        if (null == sourceSta) {
+//            News.error("" + mark + " - 3" + " - 1" + " - 宸ヤ綔妗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) {
+//            News.error("" + mark + " - 3" + " - 2" + " - 宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
+//            return;
+//        }
+//        if (sta.getLocType1() != sourceSta.getLocType1()) {
+//            News.error("绉诲簱鐩爣搴撲綅绫诲瀷涓庢簮搴撲綅绫诲瀷涓嶇");
+//            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;
+//        }
+//
+//        News.warnNoLog("" + mark + " - 3" + " - 3" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue()
+//                , sourceSta.getRow1().shortValue(), sourceSta.getBay1().shortValue(), sourceSta.getLev1().shortValue()
+//                , sta.getRow1().shortValue(), sta.getBay1().shortValue(), sta.getLev1().shortValue());
+//
+//        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//        CrnCommand crnCommand = new CrnCommand();
+//        crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+//        crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+//        crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+//        crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+//        crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
+//        crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
+//        crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
+//        crnCommand.setDestinationPosX(sta.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
+//        crnCommand.setDestinationPosY(sta.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+//        crnCommand.setDestinationPosZ(sta.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+//        crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
+//        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+//            News.error("" + mark + " - 3" + " - 4" + " - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+//        } else {
+//            // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+//            Date now = new Date();
+//            wrkMast.setWrkSts(12L);
+//            wrkMast.setCrnStrTime(now);
+//            wrkMast.setModiTime(now);
+//            if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                News.error("" + mark + " - 3" + " - 5" + " - 銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+//            }
+//        }
+//        News.infoNoLog("" + mark + " - 3" + " - 0" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氬簱浣嶇Щ杞畬鎴�");
+//
+//    }
+//
+//    /**
+//     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
+//     */
+//    public synchronized void storeFinished(Integer mark) {
+//
+//        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) {
+//                News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + crnProtocol.getTaskNo());
+//
+//                // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+//                WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
+//                if (wrkMast == null) {
+//                    News.error("" + mark + " - 1" + " - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗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) {
+//                    // 鍫嗗灈鏈哄浣�
+//                    log.error(wrkMast.getWrkNo() + "浠诲姟淇敼鐘舵��4鎴愬姛锛屽浣嶅爢鍨涙満={}", crnThread.getCrnProtocol().getCrnNo());
+//                    News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
+//                    crnThread.setResetFlag(true);
+//                }
+//            }
+//
+//
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
+//    }
+//
+//    /**
+//     * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
+//     */
+//    public synchronized void recCrnErr(Integer mark) {
+//        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) {
+//                        News.warnNoLog("" + mark + " - 1" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
+//                        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)) {
+//                                News.error("" + mark + " - 2" + " - 鍫嗗灈鏈簆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)) {
+//                                News.error("" + mark + " - 3" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+//                            }
+//                        }
+//                    }
+//                    // 鏃犱换鍔�
+//                } else {
+//                    BasErrLog latest = basErrLogService.findLatest(crn.getId());
+//                    // 鏈夊紓甯�
+//                    if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
+//                        News.warnNoLog("" + mark + " - 4" + " - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏃犱换鍔★紝鏈夊紓甯�");
+//                        // 璁板綍鏂板紓甯�
+//                        if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
+//                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
+//                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
+//                            BasErrLog basErrLog = new BasErrLog(
+//                                    null,    // 缂栧彿
+//                                    null,    // 宸ヤ綔鍙�
+//                                    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)) {
+//                                News.error("" + mark + " - 5" + " - 鍫嗗灈鏈簆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)) {
+//                                News.error("" + mark + " - 6" + " - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
+//                            }
+//                        }
+//                    }
+//                }
+//            }
+//
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
+//    }
+//
+//
+//    // -------------------------------------------------------------------------------
+//
+//    /**
+//     * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
+//     */
+//    public synchronized void storeEmptyPlt(Integer mark) {
+//
+//        for (DevpSlave devp : slaveProperties.getDevp()) {
+//            // 閬嶅巻绌烘澘鍏ュ簱鍙�
+//            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();
+//                }
+//
+//                LedThread ledThread = null;
+//                if (!Cools.isEmpty(emptyInSta.getLed())) {
+//                    ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed());
+//                }
+//
+//                if (!staProtocol.isLoading()) {
+//                    continue;
+//                }
+//
+//                // 绔欑偣鏉′欢鍒ゆ柇
+//                if (staProtocol.isAutoing()
+//                        && staProtocol.isLoading()
+//                        && staProtocol.isInEnable()
+//                        && staProtocol.isEmptyMk()
+//                        && staProtocol.isPakMk()
+//                        && (staProtocol.getWorkNo() != 0 && staProtocol.getWorkNo() > 9700)
+//                ) {
+//                    News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
+//
+//                    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().shortValue());
+//                            //staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            log.error("杈撻�佺嚎涓嬪彂6锛�" + dto.getWorkNo() + "," + staProtocol.getSiteId());
+//                            if (!result) {
+//                                News.errorNoLog("" + mark + " - 1" + " - 鏇存柊plc绔欑偣淇℃伅澶辫触");
+//                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+//                            }
+//
+//                            if (ledThread != null) {
+//                                // 鍛戒护闆嗗悎
+//                                List<LedCommand> commands = new ArrayList<>();
+//                                // 缁勮鍛戒护
+//                                LedCommand ledCommand = new LedCommand();
+//                                ledCommand.setWorkNo(dto.getWorkNo());
+//                                ledCommand.setIoType(1);
+//                                ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+//                                ledCommand.setLocNo(dto.getLocNo());
+//                                ledCommand.setStaNo(dto.getStaNo());
+//                                commands.add(ledCommand);
+//                                MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(1, commands));
+////                                ledThread.errorReset();
+//                            }
+//                        } else {
+////                            staProtocol.setWorkNo(wrkNo++);
+////                            staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
+////                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+////                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+////                            if (!result) {
+////                                News.errorNoLog(""+mark+" - 2"+" - 鏇存柊plc绔欑偣淇℃伅澶辫触");
+////                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+////                            }
+////
+//                            if (ledThread != null) {
+//                                String errorMsg = jsonObject.getString("msg");
+//                                if (!Cools.isEmpty(errorMsg)) {
+//                                    MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg));
+//                                }
+//                            }
+////                            News.error(""+mark+" - 3"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+//                        }
+//                    } catch (Exception e) {
+//                        e.printStackTrace();
+//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                    }
+//
+//                } else {
+//                    News.errorNoLog("" + mark + " - 4" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isAutoing() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
+//                            + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk() + "銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
+//                            + "銆侀攣瀹氭爣璁�" + staProtocol.isPakMk());
+//                }
+//            }
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
+//    }
+//
+//    /**
+//     * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
+//     */
+//    public synchronized void ledExecute(Integer mark) {
+//        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) {
+//                    continue;
+//                }
+//                wrkMasts.add(wrkMast);
+//                // 缁勮鍛戒护
+//                LedCommand ledCommand = new LedCommand();
+//                ledCommand.setWorkNo(wrkMast.getWrkNo());
+//                ledCommand.setIoType(wrkMast.getIoType());
+//                // 鍑哄簱妯″紡
+//                switch (wrkMast.getIoType()) {
+//                    case 1:
+//                        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;
+//                    default:
+//                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+//                        break;
+//                }
+//                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+//                ledCommand.setStaNo(wrkMast.getStaNo());
+//                ledCommand.setBarcode(wrkMast.getBarcode());
+//                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+//                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+//
+//                    wrkDetls.forEach(wrkDetl -> {
+//                        Double total = 0.0;
+//                        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+//                        LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+//                        if (Cools.isEmpty(locDetl)) {
+//                            total = wrkDetl.getAnfme();
+//                        } else {
+//                            total = locDetl.getAnfme();
+//                        }
+//                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+//                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(), total));
+//                        }
+//                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+//                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(), total));
+//                        }
+//                        if (wrkMast.getIoType() == 107) {
+//                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(), total));
+//                        }
+//                    });
+//                }
+//                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 (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
+//                    News.error("{}鍙稬ED鏄剧ず鍐呭鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+//                    continue;
+//                }
+//            }
+//
+//            try {
+//                // 淇敼涓绘。led鏍囪
+//                for (WrkMast wrkMast : wrkMasts) {
+//                    wrkMast.setOveMk("Y");
+//                    wrkMast.setModiTime(new Date());
+//                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                        throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+//                    }
+//                }
+//
+//                // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
+//                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.isErr()) {
+//                    reset = false;
+//                    break;
+//                }
+//            }
+//            // 鑾峰彇led绾跨▼
+//            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
+//            // led鏄剧ず榛樿鍐呭
+//            if (reset) {
+//                if (ledThread == null) {
+//                    continue;
+//                }
+//                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+//                    News.error("{}鍙稬ED鏄剧ず榛樿鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
 //                }
 //            }
 //        }
 //    }
-
-    /**
-     * 搴撲綅绉昏浆
-     */
-    public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) {
-        // 鑾峰彇宸ヤ綔妗d俊鎭�
-        WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId());
-        if (null == wrkMast) {
-            return;
-        }
-        News.warnNoLog(""+mark+" - 3"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氭墽琛屽簱浣嶇Щ杞�");
-        // 鑾峰彇婧愬簱浣嶄俊鎭�
-        LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
-        if (null == sourceSta) {
-            News.error(""+mark+" - 3"+" - 1"+" - 宸ヤ綔妗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) {
-            News.error(""+mark+" - 3"+" - 2"+" - 宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
-            return;
-        }
-        if(sta.getLocType1() != sourceSta.getLocType1()){
-            News.error("绉诲簱鐩爣搴撲綅绫诲瀷涓庢簮搴撲綅绫诲瀷涓嶇");
-            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;
-        }
-
-        News.warnNoLog(""+mark+" - 3"+" - 3"+" - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}",wrkMast.getWrkNo().shortValue()
-                ,sourceSta.getRow1().shortValue(),sourceSta.getBay1().shortValue(),sourceSta.getLev1().shortValue()
-                ,sta.getRow1().shortValue(),sta.getBay1().shortValue(),sta.getLev1().shortValue());
-
-        // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-        CrnCommand crnCommand = new CrnCommand();
-        crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-        crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-        crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-        crnCommand.setSourcePosX(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
-        crnCommand.setSourcePosY(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
-        crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
-        crnCommand.setDestinationPosX(sta.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY(sta.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ(sta.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-        crnCommand.setTraySize(sourceSta.getLocType1() == 2);     //搴撲綅绫诲瀷
-        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-            News.error(""+mark+" - 3"+" - 4"+" - 鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-        } else {
-            // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-            Date now = new Date();
-            wrkMast.setWrkSts(12L);
-            wrkMast.setCrnStrTime(now);
-            wrkMast.setModiTime(now);
-            if (wrkMastMapper.updateById(wrkMast) == 0) {
-                News.error(""+mark+" - 3"+" - 5"+" - 銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-            }
-        }
-        News.infoNoLog(""+mark+" - 3"+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂锛氬簱浣嶇Щ杞畬鎴�");
-
-    }
-
-    /**
-     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
-     */
-    public synchronized void storeFinished(Integer mark) {
-
-        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) {
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
-                if (crnProtocol.getTaskNo() == 9999) {
-                    // 鍫嗗灈鏈哄浣�
-                    crnThread.setResetFlag(true);
-                } else {
-                    // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
-                    if (wrkMast == null) {
-                        News.error(""+mark+" - 1"+" - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗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) {
-                        // 鍫嗗灈鏈哄浣�
-                        News.warnNoLog(""+mark+" - 2"+" - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}",crnThread.getCrnProtocol().getCrnNo());
-                        crnThread.setResetFlag(true);
-                    }
-                }
-
-            }
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
-    }
-
-    /**
-     * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
-     */
-    public synchronized void recCrnErr(Integer mark) {
-        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) {
-                        News.warnNoLog(""+mark+" - 1"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏈変换鍔★紝鏈夊紓甯�");
-                        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)) {
-                                News.error(""+mark+" - 2"+" - 鍫嗗灈鏈簆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)) {
-                                News.error(""+mark+" - 3"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
-                            }
-                        }
-                    }
-                    // 鏃犱换鍔�
-                } else {
-                    BasErrLog latest = basErrLogService.findLatest(crn.getId());
-                    // 鏈夊紓甯�
-                    if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
-                        News.warnNoLog(""+mark+" - 4"+" - 寮�濮嬫墽琛岋細鍫嗗灈鏈哄紓甯镐俊鎭褰� 锛� 鏃犱换鍔★紝鏈夊紓甯�");
-                        // 璁板綍鏂板紓甯�
-                        if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) {
-                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
-                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
-                            BasErrLog basErrLog = new BasErrLog(
-                                    null,    // 缂栧彿
-                                    null,    // 宸ヤ綔鍙�
-                                    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)) {
-                                News.error(""+mark+" - 5"+" - 鍫嗗灈鏈簆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)) {
-                                News.error(""+mark+" - 6"+" - 鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId());
-                            }
-                        }
-                    }
-                }
-            }
-
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
-    }
-
-
-    // -------------------------------------------------------------------------------
-
-    /**
-     * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
-     */
-    public synchronized void storeEmptyPlt(Integer mark) {
-
-        for (DevpSlave devp : slaveProperties.getDevp()) {
-            // 閬嶅巻绌烘澘鍏ュ簱鍙�
-            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();
-                }
-
-                LedThread ledThread = null;
-                if (!Cools.isEmpty(emptyInSta.getLed()))  {
-                    ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed());
-                }
-
-                if (!staProtocol.isLoading()){
-                    continue;
-                }
-
-                // 绔欑偣鏉′欢鍒ゆ柇
-                if (staProtocol.isAutoing()
-                        && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk()
-                        && staProtocol.isPakMk()
-                        && (staProtocol.getWorkNo() !=0 && staProtocol.getWorkNo() > 9700)
-                        ) {
-                    News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
-
-                    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(staProtocol.getSiteId().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            log.error("杈撻�佺嚎涓嬪彂6锛�"+dto.getWorkNo()+","+staProtocol.getSiteId());
-                            if (!result) {
-                                News.errorNoLog(""+mark+" - 1"+" - 鏇存柊plc绔欑偣淇℃伅澶辫触");
-                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-                            }
-
-                            if (ledThread != null) {
-                                // 鍛戒护闆嗗悎
-                                List<LedCommand> commands = new ArrayList<>();
-                                // 缁勮鍛戒护
-                                LedCommand ledCommand = new LedCommand();
-                                ledCommand.setWorkNo(dto.getWorkNo());
-                                ledCommand.setIoType(1);
-                                ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-                                ledCommand.setLocNo(dto.getLocNo());
-                                ledCommand.setStaNo(dto.getStaNo());
-                                commands.add(ledCommand);
-                                MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(1, commands));
-//                                ledThread.errorReset();
-                            }
-                        } else {
-//                            staProtocol.setWorkNo(wrkNo++);
-//                            staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
-//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                            if (!result) {
-//                                News.errorNoLog(""+mark+" - 2"+" - 鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                            }
 //
-                            if (ledThread != null) {
-                                String errorMsg = jsonObject.getString("msg");
-                                if (!Cools.isEmpty(errorMsg)) {
-                                    MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg));
-                                }
-                            }
-//                            News.error(""+mark+" - 3"+" - 璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
-                        }
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    }
-
-                } else {
-                    News.errorNoLog(""+mark+" - 4"+" - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒"+" 鑷姩淇″彿锛�"+staProtocol.isAutoing()+"銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            +"銆佺┖鏉夸俊鍙凤細"+ staProtocol.isEmptyMk()+"銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
-                            +"銆侀攣瀹氭爣璁�"+ staProtocol.isPakMk());
-                }
-            }
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐ф墽琛屽畬鎴�");
-    }
-
-    /**
-     * 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
-     */
-    public synchronized void ledExecute(Integer mark) {
-        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) { continue; }
-                wrkMasts.add(wrkMast);
-                // 缁勮鍛戒护
-                LedCommand ledCommand = new LedCommand();
-                ledCommand.setWorkNo(wrkMast.getWrkNo());
-                ledCommand.setIoType(wrkMast.getIoType());
-                // 鍑哄簱妯″紡
-                switch (wrkMast.getIoType()) {
-                    case 1:
-                        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;
-                    default:
-                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
-                        break;
-                }
-                ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
-                ledCommand.setStaNo(wrkMast.getStaNo());
-                ledCommand.setBarcode(wrkMast.getBarcode());
-                if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-
-                    wrkDetls.forEach(wrkDetl -> {
-                        Double total = 0.0;
-                        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
-                        LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
-                        if (Cools.isEmpty(locDetl)) {
-                            total = wrkDetl.getAnfme();
-                        } else {
-                            total = locDetl.getAnfme();
-                        }
-                        if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                        if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                        if (wrkMast.getIoType() == 107) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
-                        }
-                    });
-                }
-                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 (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
-                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                    continue;
-                }
-            }
-
-            try {
-                // 淇敼涓绘。led鏍囪
-                for (WrkMast wrkMast : wrkMasts) {
-                    wrkMast.setOveMk("Y");
-                    wrkMast.setModiTime(new Date());
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
-                    }
-                }
-
-                // 鏇存柊绾跨▼褰撳墠宸ヤ綔鍙烽泦鍚�
-                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) {
-                    reset = false;
-                    break;
-                }
-            }
-            // 鑾峰彇led绾跨▼
-            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
-            // led鏄剧ず榛樿鍐呭
-            if (reset) {
-                if (ledThread == null) {
-                    continue;
-                }
-                ledThread.errorReset();
-                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
-                    News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堝叆搴撶増)
-     * 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("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+//    /**
+//     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堝叆搴撶増)
+//     * 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("绉昏浆澶辫触");
+//            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
 //        }
-        wrkMast.setLocNo(shallowLoc.getLocNo());
-        if (wrkMastMapper.updateById(wrkMast) == 0) {
-            throw new CoolException("淇敼闃诲鍏ュ簱浠诲姟澶辫触");
-        }
-    }
-
-    /**
-     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
-     * tip锛氬悓姝�
-     */
-    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) {
-
-        try {
-            News.warnNoLog(""+mark+"moveLocForDeepLoc"+" - 0"+" - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
-            List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
-            LocMast loc = null;
-            for (Integer row : rows) {
-                if (Utils.isDeepLoc(slaveProperties, row)) {
-                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
-
-                    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) {
-                News.error(""+mark+"moveLocForDeepLoc"+" - 1"+" - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + 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) {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 2"+" - 淇濆瓨宸ヤ綔妗eけ璐�");
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-            }
-            // 宸ヤ綔妗f槑缁嗕繚瀛�
-            if (shallowLoc.getLocSts().equals("F")) {
-                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
-                for (LocDetl locDetl : locDetls) {
-                    WrkDetl wrkDetl = new WrkDetl();
-                    wrkDetl.setWrkNo(workNo);
-                    wrkDetl.setIoTime(new Date());
-                    wrkDetl.setAnfme(locDetl.getAnfme());
-                    VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
-                    wrkDetl.setAppeTime(new Date());
-                    wrkDetl.setModiTime(new Date());
-                    if (!wrkDetlService.insert(wrkDetl)) {
-                        News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 3"+" - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
-                    }
-                }
-            }
-            // 淇敼婧愬簱浣嶇姸鎬�
-            if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
-                shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-                shallowLoc.setModiTime(new Date());
-                if (!locMastService.updateById(shallowLoc)) {
-                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 4"+" - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                    throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                }
-            } else {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 5"+" - 婧愬簱浣嶅嚭搴撳け璐�");
-                throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-            }
-            // 淇敼鐩爣搴撲綅鐘舵��
-            if (loc.getLocSts().equals("O")) {
-                loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-                loc.setModiTime(new Date());
-                if (!locMastService.updateById(loc)) {
-                    News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 6"+" - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                    throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                }
-            } else {
-                News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 7"+" - 绉昏浆澶辫触");
-                throw new CoolException("绉昏浆澶辫触");
-            }
-        } catch (Exception e) {
-            News.error(""+mark+"moveLocForDeepLoc"+" - 8"+" - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-        }
-    }
-
-    /**
-     * 鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆
-     */
-    public synchronized void crnDemoOfLocMove1() {
-        try {
-            for (CrnSlave crn : slaveProperties.getCrn()) {
-                if (!crn.getDemo()) {
-                    continue;
-                }   // 蹇呴』涓烘紨绀虹姸鎬�
-
-                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-                if (crnProtocol == null) {
-                    continue;
-                }
-
-                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-                if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                    // 鑾峰彇绉诲簱宸ヤ綔妗d俊鎭�
-                    WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId());
-                    if (null != wrkMast) {
-                        continue;
-                    }
-
-                    LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
-                    LocMast loc = locMastService.queryDemoLoc(crn.getId());
-                    if (null == sourceLoc || null == loc) {
-                        continue;
-                    }
-
-                    String sourceLocNo = sourceLoc.getLocNo();
-                    String locNo = loc.getLocNo();
-
-                    // 鑾峰彇宸ヤ綔鍙�
-                    int workNo = commonService.getWorkNo(0);
-                    // 淇濆瓨宸ヤ綔妗�
-                    wrkMast = new WrkMast();
-                    wrkMast.setWrkNo(workNo);
-                    wrkMast.setIoTime(new Date());
-                    wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-                    wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
-                    wrkMast.setIoPri(13D);
-                    wrkMast.setCrnNo(crn.getId());
-                    wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
-                    wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-                    wrkMast.setFullPlt("N"); // 婊℃澘锛歒
-                    wrkMast.setPicking("N"); // 鎷f枡
-                    wrkMast.setExitMk("N"); // 閫�鍑�
-                    wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
-                    wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
-                    wrkMast.setLinkMis("N");
-                    wrkMast.setAppeTime(new Date());
-                    wrkMast.setModiTime(new Date());
-                    int res = wrkMastMapper.insert(wrkMast);
-                    if (res == 0) {
-                        throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-                    }
-                    // 宸ヤ綔妗f槑缁嗕繚瀛�
-//                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+////        // 淇敼鐩爣搴撲綅鐘舵��
+////        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, Integer mark) {
+//
+//        try {
+//            News.warnNoLog("" + mark + "moveLocForDeepLoc" + " - 0" + " - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)");
+//            List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
+//            LocMast loc = null;
+//            for (Integer row : rows) {
+//                if (Utils.isDeepLoc(slaveProperties, row)) {
+//                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1());
+//
+//                    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) {
+//                News.error("" + mark + "moveLocForDeepLoc" + " - 1" + " - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + 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) {
+//                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 2" + " - 淇濆瓨宸ヤ綔妗eけ璐�");
+//                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+//            }
+//            // 宸ヤ綔妗f槑缁嗕繚瀛�
+//            if (shallowLoc.getLocSts().equals("F")) {
+//                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
 //                for (LocDetl locDetl : locDetls) {
 //                    WrkDetl wrkDetl = new WrkDetl();
 //                    wrkDetl.setWrkNo(workNo);
@@ -2022,644 +2057,628 @@
 //                    wrkDetl.setAppeTime(new Date());
 //                    wrkDetl.setModiTime(new Date());
 //                    if (!wrkDetlService.insert(wrkDetl)) {
+//                        News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
 //                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
 //                    }
 //                }
-                    // 淇敼婧愬簱浣嶇姸鎬�
-                    if (sourceLoc.getLocSts().equals("D")) {
-                        sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
-                        sourceLoc.setModiTime(new Date());
-                        if (!locMastService.updateById(sourceLoc)) {
-                            throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
-                        }
-                    } else {
-                        throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
-                    }
-                    // 淇敼鐩爣搴撲綅鐘舵��
-                    if (loc.getLocSts().equals("O")) {
-                        loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-                        loc.setModiTime(new Date());
-                        if (!locMastService.updateById(loc)) {
-                            throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
-                        }
-                    } else {
-                        throw new CoolException("绉昏浆澶辫触");
-                    }
-
-                }
-            }
-        } catch (Exception e) {
-            News.error("鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆澶辫触", e);
-            e.printStackTrace();
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-        }
-    }
-
-    /**
-     * 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
-     */
-    public synchronized void crnIoWrkMast() {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            if (crnProtocol == null) {
-                continue;
-            }
-            Date now = new Date();
-            // 鍫嗗灈鏈烘鍦ㄨ繍琛�
-            if (crnProtocol.getStatusType() != CrnStatusType.IDLE && crnProtocol.getTaskNo() != 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-                // 鑾峰彇宸ヤ綔妗�
-                WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
-                if (wrkMast == null) {
-                    continue;
-                }
-                // 鍏ュ簱
-                if (wrkMast.getWrkSts() == 1 || wrkMast.getWrkSts() == 2) {
-                    News.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
-                    // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
-                    wrkMast.setWrkSts(3L);
-                    wrkMast.setCrnStrTime(now);
-                    wrkMast.setModiTime(now);
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                    }
-                    News.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
-                }
-                // 鍑哄簱銆佺Щ搴�
-                if (wrkMast.getWrkSts() == 11) {
-                    News.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
-                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
-                    wrkMast.setWrkSts(12L);
-                    wrkMast.setCrnStrTime(now);
-                    wrkMast.setModiTime(now);
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
-                    }
-                    News.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
-                }
-
-
-            }
-
-        }
-    }
-
-    /**
-     * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
-     */
-    public synchronized void ioConvert() {
-        try {
-            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-            for (DevpSlave devp : slaveProperties.getDevp()) {
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-
-                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 outOfDevp(Integer mark) {
-
-        List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
-        if (wrkMasts.size()!=0){
-            News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛宱utOfDevp");
-        }
-        for (WrkMast wrkMast : wrkMasts) {
-            if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
-                wrkMast.setCtnNo("Y");
-                if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    News.error(""+mark+" - 1"+" - 淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
-                }
-            }
-        }
-//        News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚");
-    }
-
-
-    public synchronized void autoEmptyOut() {
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        List<Integer> list = new ArrayList<>();
-        list.add(101);list.add(112);
-        Map<Integer,Integer> map = new HashMap<>();
-        map.put(101,102);map.put(112,111);
-        for (Integer site:list){
-            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site)));
-            if (!Cools.isEmpty(wrkMast)){
-                continue;
-            }
-            //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
-            StaProtocol staProtocol = devpThread.getStation().get(site);
-            if (staProtocol == null) {
-                return;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            if (staProtocol.isAutoing()  //鑷姩
-                    && !staProtocol.isLoading()  //鏃犵墿
-                    && staProtocol.isOutEnable()  //鍙嚭淇″彿
-                    && staProtocol.getWorkNo() == 0
-            ) {
-                WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(site);
-                if (null != pakoutEmpty) {
-                    return;
-                }
-                Short loctype1 = 1;
-                if (site == 101){
-                    loctype1 = 2;
-                }
-                LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
-                locTypeDto.setSiteId(site);
-                try {
-                    String response = new HttpHandler.Builder()
-                            .setUri(wmsUrl)
-                            .setPath("/rpc/auto/emptyOut/v1")
-                            .setJson(JSON.toJSONString(locTypeDto))
-                            .build()
-                            .doPost();
-                    JSONObject jsonObject = JSON.parseObject(response);
-                    if (jsonObject.getInteger("code").equals(200)) {
-                        String data = jsonObject.get("data").toString();
-                        News.info((String) jsonObject.get("msg")+","+data);
-                    } else {
-                        News.warnNoLog("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                }
-            }
-        }
-
-    }
-
-    public synchronized void autoEmptyIn() {
-        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        List<Integer> list = new ArrayList<>();
-        list.add(153);list.add(157);
-        for (Integer site:list){
-            StaProtocol staProtocol = devpThread.getStation().get(site);
-            if (staProtocol == null) {
-                return;
-            } else {
-                staProtocol = staProtocol.clone();
-            }
-            if (staProtocol.isAutoing()  //鑷姩
-                    && staProtocol.isLoading()  //鏈夌墿
-                    && staProtocol.isInEnable()  //鍙叆淇″彿
-                    && staProtocol.isPakMk()
-                    && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
-            ) {
-
-                try {
-                    Short loctype1 = 1;
-                    if (site == 153){
-                        loctype1 = 2;
-                    }
-                    LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
-                    locTypeDto.setSiteId(site);
-
-                    String response = new HttpHandler.Builder()
-                            .setUri(wmsUrl)
-                            .setPath("/rpc/auto/emptyIn/v1")
-                            .setJson(JSON.toJSONString(locTypeDto))
-                            .build()
-                            .doPost();
-                    JSONObject jsonObject = JSON.parseObject(response);
-                    if (jsonObject.getInteger("code").equals(200)) {
-                        News.info((String) jsonObject.get("msg"));
-                        staProtocol.setWorkNo(jsonObject.get("data").hashCode());
-                        staProtocol.setStaNo(site.shortValue());
-                        devpThread.setPakMk(site,false);
-                        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
-                    } else {
-                        News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                }
-            }
-
-        }
-
-    }
-
-    /*
-     * 灏忚溅鍦板浘鏇存柊  鏇存柊閿�
-     * */
-    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){
-
-//        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
-        //鏇存柊褰撳墠灏忚溅閿�
-        try{
-            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
-            Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
-            basRgvMapCurrent.setLockEndRoute(fallMerge);
-            Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
-//            if (i>0){
-                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent));
 //            }
-
-            //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
-            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
-            BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
-            List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
-            Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
-            basRgvMapOther.setEndRoute(lockEndRoute);
-            Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
-//            if (i1>0){
-                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther));
+//            // 淇敼婧愬簱浣嶇姸鎬�
+//            if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+//                shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+//                shallowLoc.setModiTime(new Date());
+//                if (!locMastService.updateById(shallowLoc)) {
+//                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+//                    throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+//                }
+//            } else {
+//                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
+//                throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
 //            }
-            return true;
-        }catch (Exception e){
-            log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�");
-            return false;
-        }
-    }
-
-    /*
-     * 鍒锋柊鍦板浘鏁版嵁
-     * */
-    public synchronized void refreshRgvMap() {
-        try{
-            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�2", rgvSlave.getRgvNo());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
-                    rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                    && (rgvProtocol.getTaskNo1()==0)
-                        &&rgvThread.isPakMk()
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-
-                    Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo());
-                    RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther);
-                    RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol();
-                    if (rgvProtocolOther == null) {
-                        continue;
-                    }else {
-                        rgvProtocolOther = rgvProtocolOther.clone();
-                    }
-                    if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocolOther.getModeType() == RgvModeType.AUTO
-                        && rgvProtocolOther.getLoaded1()==0
-                        && (rgvProtocolOther.getTaskNo1()==0)
-                        &&rgvThreadOther.isPakMk()
-                    ){
-                        //瀵瑰伐浣滄。杩涜鍒ゆ柇
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        if (rgvProtocol.getTaskNo1() >0 && rgvProtocol.getTaskNo1()<=9000){
-                            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
-                            rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2366");
-                        }else if (rgvProtocol.getTaskNo1() == 0){
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2366");
-                        }
-
-                    }
-
-
-
-                }
-            }
-        }catch (Exception e){
-            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
-            log.error("4109琛�"+e);
-        }
-    }
-
-
-    /**
-     *  瀹屾垚灏忚溅浠诲姟
-     */
-    public synchronized void rgvCompleteWrkMastSta() {
-        try{
-            for (DevpSlave devp : slaveProperties.getDevp()) {
-                List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getRgvNo());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
-                if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
-                ){
-                    log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
-                    if (rgvProtocol.getTaskNo1()!=0){
-                        if (rgvProtocol.getTaskNo1()==32222){
-                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-                            if (!rgvComplete){
-                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            }
-                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                            rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415");
-                            rgvThread.setPakMk(true);
-                            break;
-                        }
-                        WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
-                        if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
-                            log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
-                            continue;
-                        }
-
-                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                        StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
-                        if (staProtocol == null) {
-                            continue;
-                        } else {
-                            staProtocol = staProtocol.clone();
-                        }
-                        if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
-                            continue;
-                        }
-                        WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
-                        if (!Cools.isEmpty(wrkMast)){
-                            if (!staProtocol.isPakMk()){
-                                continue;
-                            }
-                            // 涓嬪彂绔欑偣淇℃伅
-                            staProtocol.setWorkNo(wrkMast.getWrkNo());
-                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
-                                continue;
-                            }
-                        }else {
-                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。");
-                            // 涓嬪彂绔欑偣淇℃伅
-                            Map<Integer,Integer> map = new HashMap<>();
-                            map.put(101,102);map.put(112,111);
-                            map.put(100,100);
-                            staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
-                            staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-//                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
-                            if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
-                                continue;
-                            }
-                        }
-                        boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
-//                        boolean rgvComplete = true;
-                        if (!rgvComplete){
-                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
-                            break;
-                        }
-                        WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
-                        wrkMast1.setUpdMk("Y");
-
-                        wrkMastService.updateById(wrkMast1);
-
-                        wrkMastSta.setWrkSts(3);
-                        wrkMastStaMapper.updateById(wrkMastSta);
-                        BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
-                        rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
-                        rgvThread.setPakMk(true);
-                    }
-
-                    else {
-                        log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
-                    }
-                }
-            }
-            }
-        }catch (Exception e){
-            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
-        }
-    }
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     */
-    public synchronized void rgvRunWrkMastFullSta() {
-        boolean wrkEnable = false;
-        try{
-            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0
-                        && rgvProtocol.getTaskNo1() == 0
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (basRgvMap == null) {
-                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-                        continue;
-                    }
-                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
-                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
-                    for (WrkMastSta wrkMastSta : wrkMastStaList){
-                        if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3){//1:婊$増   3锛氬彇鏀�
-                            continue;
-                        }
-                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
-                        wrkEnable = true;
-                        if (sign){
-                            rgvThread.setPakMk(false);
-                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
-                            if (signMap){
-                                Thread.sleep(300);
-                                wrkMastSta.setWrkSts(1);
-                                try{
-                                    wrkMastStaMapper.updateById(wrkMastSta);
-                                    return;
-                                }catch (Exception e){
-                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-                                }
-                                break;
-                            }else {
-                                log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-                            }
-                        } else {
-                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-                        }
-                        break;
-                    }
-                }
-
-            }
-            if (!wrkEnable){
-                rgvRunWrkMastEmptyStaAvoidance();
-            }
-        }catch (Exception e){
-            log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
-            log.error("3875琛�"+e);
-        }
-    }
-    /**
-     * 鎵ц灏忚溅鎼繍浠诲姟
-     */
-//    public synchronized void rgvRunWrkMastEmptyStaPut() {//鏀�
-//        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
-//                    continue;
+//            // 淇敼鐩爣搴撲綅鐘舵��
+//            if (loc.getLocSts().equals("O")) {
+//                loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+//                loc.setModiTime(new Date());
+//                if (!locMastService.updateById(loc)) {
+//                    News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+//                    throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
 //                }
-//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-//                if (basRgv == null) {
-//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�5", rgvSlave.getId());
-//                    continue;
-//                }
-//
-//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
-//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && rgvProtocol.getLoaded1()==1  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-//                ) {
-//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-//                    if (basRgvMap == null) {
-//                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
-//                        continue;
-//                    }
-//                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
-//                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
-//                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
-//                    for (WrkMastSta wrkMastSta : wrkMastStaList){
-//                        if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:绌烘澘  2:鏀� 4锛氭媶鐩�
-//                            continue;
-//                        }
-//                        boolean sign = false;
-//                        if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//鏀�
-//                            sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
-//                        }else {
-//                            continue;
-//                        }
-//                        if (sign){
-//                            boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
-//                            if (signMap){
-//                                wrkMastSta.setWrkSts(2);
-//                                try{
-//                                    wrkMastStaMapper.updateById(wrkMastSta);
-//                                }catch (Exception e){
-//                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
-//                                }
-//                                return;
-//                            }else {
-//                                log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
-//                            }
-//                        }else {
-//                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
-//                        }
-//                        break;
-//                    }
-//                }
+//            } else {
+//                News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
+//                throw new CoolException("绉昏浆澶辫触");
 //            }
-//        }catch (Exception e){
-//            log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
-//            log.error("3933琛�"+e);
+//        } catch (Exception e) {
+//            News.error("" + mark + "moveLocForDeepLoc" + " - 8" + " - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
+//            e.printStackTrace();
+//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 //        }
 //    }
-
-//    public synchronized void rgvRunWrkMastEmptyStaTake() {//鍙�
-//        try{
-//            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
-//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
-//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-//                if (rgvProtocol == null) {
+//
+//    /**
+//     * 鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆
+//     */
+//    public synchronized void crnDemoOfLocMove1() {
+//        try {
+//            for (CrnSlave crn : slaveProperties.getCrn()) {
+//                if (!crn.getDemo()) {
 //                    continue;
-//                }
-//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
-//                if (basRgv == null) {
-//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�6", rgvSlave.getId());
+//                }   // 蹇呴』涓烘紨绀虹姸鎬�
+//
+//                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+//                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+//                if (crnProtocol == null) {
 //                    continue;
 //                }
 //
-//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
+//                // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+//                if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+//                    // 鑾峰彇绉诲簱宸ヤ綔妗d俊鎭�
+//                    WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId());
+//                    if (null != wrkMast) {
+//                        continue;
+//                    }
+//
+//                    LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
+//                    LocMast loc = locMastService.queryDemoLoc(crn.getId());
+//                    if (null == sourceLoc || null == loc) {
+//                        continue;
+//                    }
+//
+//                    String sourceLocNo = sourceLoc.getLocNo();
+//                    String locNo = loc.getLocNo();
+//
+//                    // 鑾峰彇宸ヤ綔鍙�
+//                    int workNo = commonService.getWorkNo(0);
+//                    // 淇濆瓨宸ヤ綔妗�
+//                    wrkMast = new WrkMast();
+//                    wrkMast.setWrkNo(workNo);
+//                    wrkMast.setIoTime(new Date());
+//                    wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+//                    wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+//                    wrkMast.setIoPri(13D);
+//                    wrkMast.setCrnNo(crn.getId());
+//                    wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
+//                    wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
+//                    wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+//                    wrkMast.setPicking("N"); // 鎷f枡
+//                    wrkMast.setExitMk("N"); // 閫�鍑�
+//                    wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+//                    wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+//                    wrkMast.setLinkMis("N");
+//                    wrkMast.setAppeTime(new Date());
+//                    wrkMast.setModiTime(new Date());
+//                    int res = wrkMastMapper.insert(wrkMast);
+//                    if (res == 0) {
+//                        throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+//                    }
+//                    // 宸ヤ綔妗f槑缁嗕繚瀛�
+////                List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+////                for (LocDetl locDetl : locDetls) {
+////                    WrkDetl wrkDetl = new WrkDetl();
+////                    wrkDetl.setWrkNo(workNo);
+////                    wrkDetl.setIoTime(new Date());
+////                    wrkDetl.setAnfme(locDetl.getAnfme());
+////                    VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+////                    wrkDetl.setAppeTime(new Date());
+////                    wrkDetl.setModiTime(new Date());
+////                    if (!wrkDetlService.insert(wrkDetl)) {
+////                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+////                    }
+////                }
+//                    // 淇敼婧愬簱浣嶇姸鎬�
+//                    if (sourceLoc.getLocSts().equals("D")) {
+//                        sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+//                        sourceLoc.setModiTime(new Date());
+//                        if (!locMastService.updateById(sourceLoc)) {
+//                            throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+//                        }
+//                    } else {
+//                        throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
+//                    }
+//                    // 淇敼鐩爣搴撲綅鐘舵��
+//                    if (loc.getLocSts().equals("O")) {
+//                        loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+//                        loc.setModiTime(new Date());
+//                        if (!locMastService.updateById(loc)) {
+//                            throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+//                        }
+//                    } else {
+//                        throw new CoolException("绉昏浆澶辫触");
+//                    }
+//
+//                }
+//            }
+//        } catch (Exception e) {
+//            News.error("鍫嗗灈鏈烘紨绀�  ===>> 搴撲綅绉昏浆澶辫触", e);
+//            e.printStackTrace();
+//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//        }
+//    }
+//
+//    /**
+//     * 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
+//     */
+//    public synchronized void crnIoWrkMast() {
+//        for (CrnSlave crn : slaveProperties.getCrn()) {
+//            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+//            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+//            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+//            if (crnProtocol == null) {
+//                continue;
+//            }
+//            Date now = new Date();
+//            // 鍫嗗灈鏈烘鍦ㄨ繍琛�
+//            if (crnProtocol.getStatusType() != CrnStatusType.IDLE && crnProtocol.getTaskNo() != 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+//                // 鑾峰彇宸ヤ綔妗�
+//                WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
+//                if (wrkMast == null) {
+//                    continue;
+//                }
+//                // 鍏ュ簱
+//                if (wrkMast.getWrkSts() == 1 || wrkMast.getWrkSts() == 2) {
+//                    News.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
+//                    // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
+//                    wrkMast.setWrkSts(3L);
+//                    wrkMast.setCrnStrTime(now);
+//                    wrkMast.setModiTime(now);
+//                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                        News.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+//                    }
+//                    News.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
+//                }
+//                // 鍑哄簱銆佺Щ搴�
+//                if (wrkMast.getWrkSts() == 11) {
+//                    News.warn("鍫嗗灈鏈洪潪绌洪棽鎯呭喌涓嬶紝寮�濮嬩慨鏀瑰伐浣滄。鐘舵�併�俒id:{},鏃堕棿锛歿}] >>>>> 鍫嗗灈鏈哄綋鍓嶇姸鎬佷负锛歿}銆備换鍔″彿:{}", crn.getId(), DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), crnProtocol.getStatusType().desc, crnProtocol.getTaskNo());
+//                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+//                    wrkMast.setWrkSts(12L);
+//                    wrkMast.setCrnStrTime(now);
+//                    wrkMast.setModiTime(now);
+//                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                        News.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+//                    }
+//                    News.warn("淇敼宸ヤ綔妗g姸鎬佹垚鍔熴�俒鏃堕棿锛歿}] >>>>> 浠诲姟鍙�:{}", DateUtils.convert(now, DateUtils.yyyyMMddHHmmsssss_F), wrkMast.getWrkNo());
+//                }
+//
+//
+//            }
+//
+//        }
+//    }
+//
+//    /**
+//     * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
+//     */
+//    public synchronized void ioConvert() {
+//        try {
+//            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+//            for (DevpSlave devp : slaveProperties.getDevp()) {
+//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//
+//                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 outOfDevp(Integer mark) {
+//
+//        List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
+//        if (wrkMasts.size() != 0) {
+//            News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛宱utOfDevp");
+//        }
+//        for (WrkMast wrkMast : wrkMasts) {
+//            if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
+//                wrkMast.setCtnNo("Y");
+//                if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                    News.error("" + mark + " - 1" + " - 淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
+//                }
+//            }
+//        }
+////        News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚");
+//    }
+//
+//
+//    public synchronized void autoEmptyOut() {
+//        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+//        List<Integer> list = new ArrayList<>();
+//        list.add(101);
+//        list.add(112);
+//        Map<Integer, Integer> map = new HashMap<>();
+//        map.put(101, 102);
+//        map.put(112, 111);
+//        for (Integer site : list) {
+//            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site)));
+//            if (!Cools.isEmpty(wrkMast)) {
+//                continue;
+//            }
+//            //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
+//            StaProtocol staProtocol = devpThread.getStation().get(site);
+//            if (staProtocol == null) {
+//                return;
+//            } else {
+//                staProtocol = staProtocol.clone();
+//            }
+//            if (staProtocol.isAutoing()  //鑷姩
+//                    && !staProtocol.isLoading()  //鏃犵墿
+//                    && staProtocol.isOutEnable()  //鍙嚭淇″彿
+//                    && staProtocol.getWorkNo() == 0
+//            ) {
+//                WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(site);
+//                if (null != pakoutEmpty) {
+//                    return;
+//                }
+//                Short loctype1 = 1;
+//                if (site == 101) {
+//                    loctype1 = 2;
+//                }
+//                LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
+//                locTypeDto.setSiteId(site);
+//                try {
+//                    String response = new HttpHandler.Builder()
+//                            .setUri(wmsUrl)
+//                            .setPath("/rpc/auto/emptyOut/v1")
+//                            .setJson(JSON.toJSONString(locTypeDto))
+//                            .build()
+//                            .doPost();
+//                    JSONObject jsonObject = JSON.parseObject(response);
+//                    if (jsonObject.getInteger("code").equals(200)) {
+//                        String data = jsonObject.get("data").toString();
+//                        News.info((String) jsonObject.get("msg") + "," + data);
+//                    } else {
+//                        News.warnNoLog("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1", "", response);
+//                    }
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                }
+//            }
+//        }
+//
+//    }
+//
+//    public synchronized void autoEmptyIn() {
+//        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+//        List<Integer> list = new ArrayList<>();
+//        list.add(153);
+//        list.add(157);
+//        for (Integer site : list) {
+//            StaProtocol staProtocol = devpThread.getStation().get(site);
+//            if (staProtocol == null) {
+//                return;
+//            } else {
+//                staProtocol = staProtocol.clone();
+//            }
+//            if (staProtocol.isAutoing()  //鑷姩
+//                    && staProtocol.isLoading()  //鏈夌墿
+//                    && staProtocol.isInEnable()  //鍙叆淇″彿
+//                    && staProtocol.isPakMk()
+//                    && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
+//            ) {
+//
+//                try {
+//                    Short loctype1 = 1;
+//                    if (site == 153) {
+//                        loctype1 = 2;
+//                    }
+//                    LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1);
+//                    locTypeDto.setSiteId(site);
+//
+//                    String response = new HttpHandler.Builder()
+//                            .setUri(wmsUrl)
+//                            .setPath("/rpc/auto/emptyIn/v1")
+//                            .setJson(JSON.toJSONString(locTypeDto))
+//                            .build()
+//                            .doPost();
+//                    JSONObject jsonObject = JSON.parseObject(response);
+//                    if (jsonObject.getInteger("code").equals(200)) {
+//                        News.info((String) jsonObject.get("msg"));
+//                        staProtocol.setWorkNo(jsonObject.get("data").hashCode());
+//                        staProtocol.setStaNo(site.shortValue());
+//                        devpThread.setPakMk(site, false);
+//                        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+//                    } else {
+//                        News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
+//                    }
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                }
+//            }
+//
+//        }
+//
+//    }
+//
+//    /*
+//     * 灏忚溅鍦板浘鏇存柊  鏇存柊閿�
+//     * */
+//    public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent, Integer staStart, Integer staEnd, String sign) {
+//        log.info("灏忚溅鍦板浘鏇存柊锛乕鏍囪锛歿}];[BasRgvMap锛歿}];[staStart锛歿}];[staEnd锛歿}];", sign, JSON.toJSONString(basRgvMapCurrent), staStart, staEnd);
+//
+////        List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
+//        //鏇存柊褰撳墠灏忚溅閿�
+//        try {
+//            Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐�
+//            log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栨渶杩滅珯鐐�;[farCurrentStaNo锛歿}]", farCurrentStaNo);
+//            Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤�
+//            log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栧悎骞跺共娑夐」;[fallMerge锛歿}]", fallMerge);
+//            basRgvMapCurrent.setLockEndRoute(fallMerge);
+//            Integer i = basRgvMapMapper.updateById(basRgvMapCurrent);
+////            if (i>0){
+////                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent));
+////            }
+//
+//            //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥�
+//            Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo());
+//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彿;[rgvNoOther锛歿}]", rgvNoOther);
+//
+//            BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther);
+//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞�;[basRgvMapOther锛歿}]", JSON.toJSONString(basRgvMapOther));
+//
+//            List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
+//            Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
+//            log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�;[lockEndRoute锛歿}]", lockEndRoute);
+//            basRgvMapOther.setEndRoute(lockEndRoute);
+//            Integer i1 = basRgvMapMapper.updateById(basRgvMapOther);
+////            if (i1>0){
+////                log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther));
+////            }
+//            return true;
+//        } catch (Exception e) {
+//            log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛佸紓甯稿師鍥狅細" + e);
+//            return false;
+//        }
+//    }
+//
+//    /*
+//     * 鍒锋柊鍦板浘鏁版嵁
+//     * */
+//    public synchronized void refreshRgvMap() {
+//        try {
+//            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+//            for (BasRgvMap rgvSlave : basRgvMaps) {
+//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+//                if (rgvProtocol == null) {
+//                    continue;
+//                } else {
+//                    rgvProtocol = rgvProtocol.clone();
+//                }
+//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+//                if (basRgv == null) {
+//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�2", rgvSlave.getRgvNo());
+//                    continue;
+//                }
+//
+//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE &&
+//                        rgvProtocol.getModeType() == RgvModeType.AUTO
+//                        && rgvProtocol.getLoaded1() == 0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+//                        && (rgvProtocol.getTaskNo1() == 0)
+//                        && rgvThread.isPakMk()
+//                ) {
+//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//
+//                    Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo());
+//                    RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther);
+//                    RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol();
+//                    if (rgvProtocolOther == null) {
+//                        continue;
+//                    } else {
+//                        rgvProtocolOther = rgvProtocolOther.clone();
+//                    }
+//                    if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE
+//                            && rgvProtocolOther.getModeType() == RgvModeType.AUTO
+//                            && rgvProtocolOther.getLoaded1() == 0
+//                            && (rgvProtocolOther.getTaskNo1() == 0)
+//                            && rgvThreadOther.isPakMk()
+//                    ) {
+//                        //瀵瑰伐浣滄。杩涜鍒ゆ柇
+//                        basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+//                        if (rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo1() <= 9000) {
+//                            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+//                            rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(), "2366");
+//                        } else if (rgvProtocol.getTaskNo1() == 0) {
+//                            rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), basRgvMap.getStartRoute(), "2366");
+//                        }
+//
+//                    }
+//
+//
+//                }
+//            }
+//        } catch (Exception e) {
+//            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
+//            log.error("4109琛�" + e);
+//        }
+//    }
+//
+//
+//    /**
+//     * 瀹屾垚灏忚溅浠诲姟
+//     */
+//    public synchronized void rgvCompleteWrkMastSta() {
+//        try {
+//            for (DevpSlave devp : slaveProperties.getDevp()) {
+//                List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+//                for (BasRgvMap rgvSlave : basRgvMaps) {
+//                    RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+//                    RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+//                    if (rgvProtocol == null) {
+//                        continue;
+//                    } else {
+//                        rgvProtocol = rgvProtocol.clone();
+//                    }
+//                    BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+//                    if (basRgv == null) {
+//                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getRgvNo());
+//                        continue;
+//                    }
+//
+//                    // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
+//                    if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1() == RgvStatusType.FETCHWAITING)
+//                            && rgvProtocol.getModeType() == RgvModeType.AUTO
+//                            && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
+//                    ) {
+//                        log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}", rgvProtocol.getRgvNo(), rgvProtocol.getStatusType(), rgvProtocol);
+//                        if (rgvProtocol.getTaskNo1() != 0) {
+//                            if (rgvProtocol.getTaskNo1() == 32222) {
+//                                boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+//                                if (!rgvComplete) {
+//                                    log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+//                                }
+//                                BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//                                basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+//                                rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), basRgvMap.getStartRoute(), "2415");
+//                                rgvThread.setPakMk(true);
+//                                break;
+//                            }
+//                            WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+//                            if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts() != 1) {
+//                                log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�" + wrkMastSta);
+//                                continue;
+//                            }
+//
+//                            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//                            StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+//                            if (staProtocol == null) {
+//                                continue;
+//                            } else {
+//                                staProtocol = staProtocol.clone();
+//                            }
+//                            if (!staProtocol.isAutoing() || !staProtocol.isLoading()) {
+//                                continue;
+//                            }
+//                            WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
+//                            if (!Cools.isEmpty(wrkMast)) {
+//                                if (!staProtocol.isPakMk()) {
+//                                    continue;
+//                                }
+//                                // 涓嬪彂绔欑偣淇℃伅
+//                                staProtocol.setWorkNo(wrkMast.getWrkNo());
+//                                staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+//                                devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                                log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
+//                                if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
+//                                    continue;
+//                                }
+//                            } else {
+//                                log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。");
+//                                // 涓嬪彂绔欑偣淇℃伅
+//                                Map<Integer, Integer> map = new HashMap<>();
+//                                map.put(101, 102);
+//                                map.put(112, 111);
+//                                map.put(100, 100);
+//                                staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue());
+//                                staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue());
+//                                devpThread.setPakMk(staProtocol.getSiteId(), false);
+////                            log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+//                                if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
+//                                    continue;
+//                                }
+//                            }
+//                            boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo());
+////                        boolean rgvComplete = true;
+//                            if (!rgvComplete) {
+//                                log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�", rgvProtocol.getRgvNo());
+//                                break;
+//                            }
+//                            WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue());
+//                            wrkMast1.setPdcType("Y");
+//
+//                            wrkMastService.updateById(wrkMast1);
+//
+//                            wrkMastSta.setWrkSts(3);
+//                            wrkMastStaMapper.updateById(wrkMastSta);
+//                            BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//                            basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+//                            rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), basRgvMap.getStartRoute(), "2471");
+//                            rgvThread.setPakMk(true);
+//                        } else {
+//                            log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒", rgvProtocol.getRgvNo());
+//                        }
+//                    }
+//                }
+//            }
+//        } catch (Exception e) {
+//            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�" + e);
+//        }
+//    }
+//
+//    /**
+//     * 鎵ц灏忚溅鎼繍浠诲姟
+//     */
+//    public synchronized void rgvRunWrkMastFullSta() {
+//        boolean wrkEnable = false;
+//        try {
+//            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+//            for (BasRgvMap rgvSlave : basRgvMaps) {
+//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+//                if (rgvProtocol == null) {
+//                    continue;
+//                } else {
+//                    rgvProtocol = rgvProtocol.clone();
+//                }
+//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+//                if (basRgv == null) {
+//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
+//                    continue;
+//                }
+//
+//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
 //                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
 //                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-//                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+//                        && rgvProtocol.getLoaded1() == 0
+//                        && rgvProtocol.getTaskNo1() == 0
+//                        && rgvThread.isPakMk()
 //                ) {
 //                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
 //                    if (basRgvMap == null) {
@@ -2669,209 +2688,301 @@
 //                    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:鍙�
+//                    for (WrkMastSta wrkMastSta : wrkMastStaList) {
+//                        if (wrkMastSta.getType() != 0 || wrkMastSta.getWrkType() != 3 || wrkMastSta.getWrkSts() != 0) {//1:婊$増   3锛氬彇鏀�
 //                            continue;
 //                        }
-//                        boolean sign = false;
-//                        if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙�
-//                            sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
-//                        } else {
-//                            continue;
+//                        //鍒ゆ柇宸ヤ綔缁撴潫浣嶇疆鐘舵��
+//                        BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd()));
+//                        if (!Cools.isEmpty(devNo)) {
+//                            if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")) {
+//                                continue;
+//                            }
 //                        }
-//                        if (sign){
-//                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
-//                            if (signMap){
+//                        boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+//                        wrkEnable = true;
+//                        if (sign) {
+//                            rgvThread.setPakMk(false);
+//                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(), "2526");
+//                            if (signMap) {
+//                                Thread.sleep(300);
 //                                wrkMastSta.setWrkSts(1);
-//                                try{
+//                                try {
 //                                    wrkMastStaMapper.updateById(wrkMastSta);
-//                                }catch (Exception e){
+//                                    return;
+//                                } catch (Exception e) {
 //                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
 //                                }
-//                                return;
-//                            }else {
-//                                log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+//                                break;
+//                            } else {
+//                                log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触", wrkMastSta.getWrkNo());
+//                                Thread.sleep(500);
 //                            }
-//                        }else {
-//                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+//                        } else {
+//                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�", wrkMastSta.getWrkNo());
+//                            Thread.sleep(500);
 //                        }
 //                        break;
 //                    }
 //                }
+//
 //            }
-//        }catch (Exception e){
-//            log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
-//            log.error("3989琛�"+e);
+//            if (!wrkEnable) {
+//                rgvRunWrkMastEmptyStaAvoidance();
+//            }
+//        } catch (Exception e) {
+//            log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
+//            log.error("3875琛�" + e);
 //        }
 //    }
-
-    /*
-     * 鏈変换鍔′絾鏈墽琛�  姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
-     * */
-    public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
-        try{
-            Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
-            if (integer==0){
-                return;
-            }
-            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-            for (BasRgvMap rgvSlave:basRgvMaps) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    continue;
-                }else {
-                    rgvProtocol = rgvProtocol.clone();
-                }
-                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
-                if (basRgv == null) {
-                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo());
-                    continue;
-                }
-
-                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
-                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                        && rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
-                        && rgvProtocol.getTaskNo1()==0
-                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
-//                        && rgvProtocol.getTaskNo2()==0
-                ) {
-                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
-                    if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
-                        continue;
-                    }
-//                    if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
-//                        continue;
-//                    } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157)  ){
+//
+//    /**
+//     * 鎵ц灏忚溅鎼繍浠诲姟
+//     */
+////    public synchronized void rgvRunWrkMastEmptyStaPut() {//鏀�
+////        try{
+////            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+////                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+////                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+////                if (rgvProtocol == null) {
+////                    continue;
+////                }
+////                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+////                if (basRgv == null) {
+////                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�5", rgvSlave.getId());
+////                    continue;
+////                }
+////
+////                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤
+////                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+////                        && rgvProtocol.getModeType() == RgvModeType.AUTO
+////                        && rgvProtocol.getLoaded1()==1  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+////                ) {
+////                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+////                    if (basRgvMap == null) {
+////                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+////                        continue;
+////                    }
+////                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+////                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
+////                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
+////                    for (WrkMastSta wrkMastSta : wrkMastStaList){
+////                        if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:绌烘澘  2:鏀� 4锛氭媶鐩�
+////                            continue;
+////                        }
+////                        boolean sign = false;
+////                        if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//鏀�
+////                            sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
+////                        }else {
+////                            continue;
+////                        }
+////                        if (sign){
+////                            boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
+////                            if (signMap){
+////                                wrkMastSta.setWrkSts(2);
+////                                try{
+////                                    wrkMastStaMapper.updateById(wrkMastSta);
+////                                }catch (Exception e){
+////                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+////                                }
+////                                return;
+////                            }else {
+////                                log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+////                            }
+////                        }else {
+////                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+////                        }
+////                        break;
+////                    }
+////                }
+////            }
+////        }catch (Exception e){
+////            log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触");
+////            log.error("3933琛�"+e);
+////        }
+////    }
+//
+////    public synchronized void rgvRunWrkMastEmptyStaTake() {//鍙�
+////        try{
+////            for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+////                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+////                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+////                if (rgvProtocol == null) {
+////                    continue;
+////                }
+////                BasRgv basRgv = basRgvService.selectById(rgvSlave.getId());
+////                if (basRgv == null) {
+////                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�6", rgvSlave.getId());
+////                    continue;
+////                }
+////
+////                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤
+////                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+////                        && rgvProtocol.getModeType() == RgvModeType.AUTO
+////                        && rgvProtocol.getLoaded1()==0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+////                ) {
+////                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+////                    if (basRgvMap == null) {
+////                        log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+////                        continue;
+////                    }
+////                    List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+////                    basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+////                    List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
+////                    for (WrkMastSta wrkMastSta : wrkMastStaList){
+////                        if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘  1:鍙�
+////                            continue;
+////                        }
+////                        boolean sign = false;
+////                        if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙�
+////                            sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta);
+////                        } else {
+////                            continue;
+////                        }
+////                        if (sign){
+////                            boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
+////                            if (signMap){
+////                                wrkMastSta.setWrkSts(1);
+////                                try{
+////                                    wrkMastStaMapper.updateById(wrkMastSta);
+////                                }catch (Exception e){
+////                                    log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+////                                }
+////                                return;
+////                            }else {
+////                                log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+////                            }
+////                        }else {
+////                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+////                        }
+////                        break;
+////                    }
+////                }
+////            }
+////        }catch (Exception e){
+////            log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触");
+////            log.error("3989琛�"+e);
+////        }
+////    }
+//
+//    /*
+//     * 鏈変换鍔′絾鏈墽琛�  姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃�
+//     * */
+//    public synchronized void rgvRunWrkMastEmptyStaAvoidance() {
+//        try {
+//            Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null, 0);//鏌ヨ鐘舵�佷负0鐨勪换鍔�
+//            if (integer == 0) {
+//                return;
+//            }
+//            List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+//            for (BasRgvMap rgvSlave : basRgvMaps) {
+//                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+//                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+//                if (rgvProtocol == null) {
+//                    continue;
+//                } else {
+//                    rgvProtocol = rgvProtocol.clone();
+//                }
+//                BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+//                if (basRgv == null) {
+//                    log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo());
+//                    continue;
+//                }
+//
+//                // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+//                if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+//                        && rgvProtocol.getModeType() == RgvModeType.AUTO
+//                        && rgvProtocol.getLoaded1() == 0  //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴
+//                        && rgvProtocol.getTaskNo1() == 0
+//                        && rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+//                        && rgvThread.isPakMk()
+////                        && rgvProtocol.getTaskNo2()==0
+//                ) {
+//                    BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+//                    if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())) {
 //                        continue;
 //                    }
-                    rgvAvoidanceXY(rgvProtocol.getRgvNo());
-                    rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727");
-                }
-            }
-        }catch (Exception e){
-            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
-            log.error("4109琛�"+e);
-        }
-    }
-
-    /*
-     * 灏忚溅XY绉诲姩  閬胯
-     * */
-    public synchronized boolean rgvAvoidanceXY(Integer rgvId){
-        BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId);
-        if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){
-            try{
-
-                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                RgvCommand rgvCommand = new RgvCommand();
-                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-                rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
-                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
-                //basRgvMap.getLockStartRoute().shortValue()
-                rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
-                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
-                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                    return false;
-                } else {
-                    return true;
-                }
-            }catch (Exception e){
-                return false;
-
-            }
-        }else {
-            try{
-                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                RgvCommand rgvCommand = new RgvCommand();
-                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-                rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙�
-                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
-                //basRgvMap.getLockStartRoute().shortValue()
-                rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
-                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
-                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
-                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
-                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                    return false;
-                } else {
-                    return true;
-                }
-            }catch (Exception e){
-                return false;
-
-            }
-        }
-    }
-
-
-    /*
-     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
-     * */
-    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;
+////                    if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){
+////                        continue;
+////                    } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157)  ){
+////                        continue;
+////                    }
+//                    rgvAvoidanceXY(rgvProtocol.getRgvNo());
+//                    rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), basRgvMap.getStartRoute(), "2727");
+//                }
 //            }
-//        }catch (Exception e){
-//            return false;
+//        } catch (Exception e) {
+//            log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触");
+//            log.error("4109琛�" + e);
 //        }
 //    }
-
-    /*
-     * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟
-     * */
-//    public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){
-//        try{
+//
+//    /*
+//     * 灏忚溅XY绉诲姩  閬胯
+//     * */
+//    public synchronized boolean rgvAvoidanceXY(Integer rgvId) {
+//        BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId);
+//        if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101) {
+//            try {
+//
+//                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//                RgvCommand rgvCommand = new RgvCommand();
+//                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+//                rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+//                rgvCommand.setTaskNo1((short) 32222); // 宸ヤ綅1宸ヤ綔鍙�
+//                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
+//                //basRgvMap.getLockStartRoute().shortValue()
+//                rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
+//                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+//                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+//                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
+//                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+//                    return false;
+//                } else {
+//                    return true;
+//                }
+//            } catch (Exception e) {
+//                return false;
+//
+//            }
+//        } else {
+//            try {
+//                //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//                RgvCommand rgvCommand = new RgvCommand();
+//                rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+//                rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+//                rgvCommand.setTaskNo1((short) 32222); // 宸ヤ綅1宸ヤ綔鍙�
+//                rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡:  鍥炲師鐐�
+//                //basRgvMap.getLockStartRoute().shortValue()
+//                rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue());
+//                rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+//                if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+//                    //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�   step=9锛屽洖鍘熺偣 9999浠诲姟鍙�
+//                    log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+//                    return false;
+//                } else {
+//                    return true;
+//                }
+//            } catch (Exception e) {
+//                return false;
+//
+//            }
+//        }
+//    }
+//
+//
+//    /*
+//     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
+//     * */
+//    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.PUT); // 宸ヤ綅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))) {
@@ -2881,79 +2992,129 @@
 //            } else {
 //                return true;
 //            }
-//        }catch (Exception e){
+//        } catch (Exception e) {
 //            return false;
 //        }
 //    }
-
-    /*
-     * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟
-     * */
-//    public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){
-//        try{
+//
+//    /*
+//     * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
+//     * */
+////    public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){
+////        try{
+////            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+////            RgvCommand rgvCommand = new RgvCommand();
+////            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+////            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+////            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+////            rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栬揣
+////            rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅1璧风偣
+////            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+////            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+////                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+////                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+////                return false;
+////            } else {
+////                return true;
+////            }
+////        }catch (Exception e){
+////            return false;
+////        }
+////    }
+//
+//    /*
+//     * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟
+//     * */
+////    public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){
+////        try{
+////            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+////            RgvCommand rgvCommand = new RgvCommand();
+////            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+////            rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+////            rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+////            rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+////            rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+////            rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+////            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+////                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+////                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+////                return false;
+////            } else {
+////                return true;
+////            }
+////        }catch (Exception e){
+////            return false;
+////        }
+////    }
+//
+//    /*
+//     * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟
+//     * */
+////    public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){
+////        try{
+////            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+////            RgvCommand rgvCommand = new RgvCommand();
+////            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+////            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+////            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+////            rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栬揣
+////            rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅2璧风偣
+////            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
+////            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) {
+////                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+////                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+////                return false;
+////            } else {
+////                return true;
+////            }
+////        }catch (Exception e){
+////            return false;
+////        }
+////    }
+//
+//    /*
+//     * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟
+//     * */
+////    public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){
+////        try{
+////            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+////            RgvCommand rgvCommand = new RgvCommand();
+////            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+////            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+////            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+////            rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
+////            rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅2鐩爣绔欑偣
+////            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
+////            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) {
+////                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+////                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+////                return false;
+////            } else {
+////                return true;
+////            }
+////        }catch (Exception e){
+////            return false;
+////        }
+////    }
+//
+//    /*
+//     * 灏忚溅澶嶄綅
+//     * */
+//    public synchronized boolean rgvComplete(Integer rgvId) {
+//        try {
 //            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//            RgvCommand rgvCommand = new RgvCommand();
-//            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-//            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-//            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-//            rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栬揣
-//            rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅2璧风偣
-//            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-//            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) {
+//            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, JSON.toJSON(rgvCommand));
+//                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}", rgvId);
 //                return false;
 //            } else {
+//                log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}", rgvId);
 //                return true;
 //            }
-//        }catch (Exception e){
+//        } catch (Exception e) {
+//            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細" + e, rgvId);
 //            return false;
 //        }
 //    }
-
-    /*
-     * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟
-     * */
-//    public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){
-//        try{
-//            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-//            RgvCommand rgvCommand = new RgvCommand();
-//            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-//            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-//            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-//            rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
-//            rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-//            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-//            if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) {
-//                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-//                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-//                return false;
-//            } else {
-//                return true;
-//            }
-//        }catch (Exception e){
-//            return false;
-//        }
-//    }
-
-    /*
-     * 灏忚溅澶嶄綅
-     * */
-    public synchronized boolean rgvComplete(Integer rgvId){
-        try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId);
-                return false;
-            } else {
-                log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId);
-                return true;
-            }
-        }catch (Exception e){
-            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId);
-            return false;
-        }
-    }
-
-}
+//
+//}

--
Gitblit v1.9.1