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

---
 /dev/null                                                      |  336 --
 src/main/java/com/zy/asrs/controller/ConsoleController.java    |    4 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java    | 5962 +++++++++++++++++++++++-----------------------
 src/main/java/com/zy/asrs/WrkMast.java                         |  469 +++
 src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java |   80 
 src/main/java/com/zy/core/CtuMainProcess.java                  |    4 
 src/main/java/com/zy/asrs/entity/WrkMast.java                  |   48 
 src/main/resources/mapper/WrkMastMapper.xml                    |    3 
 src/main/java/com/zy/core/MainProcess.java                     |  210 
 src/main/java/com/zy/asrs/controller/CrnController.java        |    5 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java        |  317 +-
 src/main/resources/application.yml                             |    8 
 12 files changed, 3,763 insertions(+), 3,683 deletions(-)

diff --git a/src/main/java/com/zy/asrs/WrkMast.java b/src/main/java/com/zy/asrs/WrkMast.java
new file mode 100644
index 0000000..ff69cae
--- /dev/null
+++ b/src/main/java/com/zy/asrs/WrkMast.java
@@ -0,0 +1,469 @@
+package com.zy.asrs;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.entity.BasWrkIotype;
+import com.zy.asrs.entity.BasWrkStatus;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.LocMastService;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("asr_wrk_mast")
+public class WrkMast implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value = "宸ヤ綔鍙�")
+    @TableId(value = "wrk_no", type = IdType.AUTO)
+    @TableField("wrk_no")
+    private Long wrkNo;
+
+    /**
+     * plc宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value = "plc宸ヤ綔鍙�")
+    @TableField("plc_wrk_no")
+    private Integer plcWrkNo;
+
+    @ApiModelProperty(value = "")
+    @TableField("inv_wh")
+    private String invWh;
+
+    @ApiModelProperty(value = "")
+    private Date ymd;
+
+    @ApiModelProperty(value = "")
+    private String mk;
+
+    @ApiModelProperty(value = "")
+    @TableField("whs_type")
+    private Integer whsType;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty(value = "宸ヤ綔鐘舵��")
+    @TableField("wrk_sts")
+    private Long wrkSts;
+
+    /**
+     * 鍏ュ嚭搴撶被鍨�
+     */
+    @ApiModelProperty(value = "鍏ュ嚭搴撶被鍨�")
+    @TableField("io_type")
+    private Integer ioType;
+
+    /**
+     * 鍫嗗灈鏈�
+     */
+    @ApiModelProperty(value = "鍫嗗灈鏈�")
+    @TableField("crn_no")
+    private String crnNo;
+
+    @ApiModelProperty(value = "")
+    @TableField("sheet_no")
+    private String sheetNo;
+
+    /**
+     * 浼樺厛绾�
+     */
+    @ApiModelProperty(value = "浼樺厛绾�")
+    @TableField("io_pri")
+    private Double ioPri;
+
+    @ApiModelProperty(value = "")
+    @TableField("wrk_date")
+    private Date wrkDate;
+
+    /**
+     * 鐩爣搴撲綅
+     */
+    @ApiModelProperty(value = "鐩爣搴撲綅")
+    @TableField("loc_no")
+    private String locNo;
+
+
+
+    /**
+     * 婧愬簱浣�
+     */
+    @ApiModelProperty(value = "婧愬簱浣�")
+    @TableField("source_loc_no")
+    private String sourceLocNo;
+
+    @ApiModelProperty(value = "")
+    @TableField("loc_sts")
+    private String locSts;
+
+    /**
+     * 鎷f枡
+     */
+    @ApiModelProperty(value = "鎷f枡")
+    private String picking;
+
+    @ApiModelProperty(value = "")
+    @TableField("link_mis")
+    private String linkMis;
+
+    @ApiModelProperty(value = "")
+    @TableField("online_yn")
+    private String onlineYn;
+
+    @ApiModelProperty(value = "")
+    @TableField("upd_mk")
+    private String updMk;
+
+    /**
+     * 閫�鍑�
+     */
+    @ApiModelProperty(value = "閫�鍑�")
+    @TableField("exit_mk")
+    private String exitMk;
+
+    @ApiModelProperty(value = "")
+    @TableField("plt_type")
+    private Integer pltType;
+
+    /**
+     * 绌烘澘
+     */
+    @ApiModelProperty(value = "绌烘澘")
+    @TableField("empty_mk")
+    private String emptyMk;
+
+    /**
+     * 宸ヤ綔鏃堕棿
+     */
+    @ApiModelProperty(value = "宸ヤ綔鏃堕棿")
+    @TableField("io_time")
+    private Date ioTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("ctn_type")
+    private Integer ctnType;
+
+    @ApiModelProperty(value = "")
+    private String packed;
+
+    @ApiModelProperty(value = "")
+    @TableField("ove_mk")
+    private String oveMk;
+
+    @ApiModelProperty(value = "")
+    @TableField("mtn_type")
+    private Double mtnType;
+
+    @ApiModelProperty(value = "")
+    @TableField("user_no")
+    private String userNo;
+
+    /**
+     * 鍫嗗灈鏈哄惎鍔ㄦ椂闂�
+     */
+    @ApiModelProperty(value = "鍫嗗灈鏈哄惎鍔ㄦ椂闂�")
+    @TableField("crn_str_time")
+    private Date crnStrTime;
+
+    /**
+     * 鍫嗗灈鏈哄仠姝㈡椂闂�
+     */
+    @ApiModelProperty(value = "鍫嗗灈鏈哄仠姝㈡椂闂�")
+    @TableField("crn_end_time")
+    private Date crnEndTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("plc_str_time")
+    private Date plcStrTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("crn_pos_time")
+    private Date crnPosTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("load_time")
+    private Double loadTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("exp_time")
+    private Double expTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("ref_wrkno")
+    private Double refWrkno;
+
+    /**
+     * 鎷f枡鏃堕棿
+     */
+    @ApiModelProperty(value = "鎷f枡鏃堕棿")
+    @TableField("ref_iotime")
+    private Date refIotime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value = "淇敼浜哄憳")
+    @TableField("modi_user")
+    private Long modiUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @ApiModelProperty(value = "鍒涘缓鑰�")
+    @TableField("appe_user")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value = "娣诲姞鏃堕棿")
+    @TableField("appe_time")
+    private Date appeTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("pause_mk")
+    private String pauseMk;
+
+    @ApiModelProperty(value = "")
+    @TableField("error_time")
+    private Date errorTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("error_memo")
+    private String errorMemo;
+
+    @ApiModelProperty(value = "")
+    @TableField("ctn_kind")
+    private Integer ctnKind;
+
+    @ApiModelProperty(value = "")
+    @TableField("manu_type")
+    private String manuType;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value = "澶囨敞")
+    private String memo;
+
+    @ApiModelProperty(value = "")
+    @TableField("sc_weight")
+    private Double scWeight;
+
+    @ApiModelProperty(value = "")
+    @TableField("log_mk")
+    private String logMk;
+
+    @ApiModelProperty(value = "")
+    @TableField("log_err_time")
+    private Date logErrTime;
+
+    @ApiModelProperty(value = "")
+    @TableField("log_err_memo")
+    private String logErrMemo;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value = "鏉$爜")
+    private String barcode;
+
+    // Y:閿�鍞鍗曞嚭搴撲换鍔�
+    @ApiModelProperty(value = "")
+    @TableField("Pdc_type")
+    private String PdcType;
+
+    @ApiModelProperty(value = "")
+    @TableField("ctn_no")
+    private String ctnNo;
+
+    /**
+     * 婊℃澘
+     */
+    @ApiModelProperty(value = "婊℃澘")
+    @TableField("full_plt")
+    private String fullPlt;
+
+    /**
+     * 鍏堝叆鍝� / 鍙岄噸鍏ュ簱
+     */
+    @ApiModelProperty(value = "鍏堝叆鍝�")
+    @TableField("pre_have")
+    private String preHave;
+
+    /**
+     * 绌烘搷浣� / 鍙栬揣鏃犵
+     */
+    @ApiModelProperty(value = "绌烘搷浣�")
+    @TableField("take_none")
+    private String takeNone;
+
+    public WrkMast() {
+    }
+
+    public String getYmd$() {
+        if (Cools.isEmpty(this.ymd)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ymd);
+    }
+
+
+    public String getCrnNo$() {
+        BasCrnpService service = SpringUtils.getBean(BasCrnpService.class);
+        BasCrnp basCrnp = service.selectById(this.crnNo);
+        if (!Cools.isEmpty(basCrnp)) {
+            return String.valueOf(basCrnp.getCrnNo());
+        }
+        return null;
+    }
+
+    public String getWrkDate$() {
+        if (Cools.isEmpty(this.wrkDate)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.wrkDate);
+    }
+
+    public String getLocNo$() {
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.locNo);
+        if (!Cools.isEmpty(locMast)) {
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+
+
+    public String getSourceLocNo$() {
+        LocMastService service = SpringUtils.getBean(LocMastService.class);
+        LocMast locMast = service.selectById(this.sourceLocNo);
+        if (!Cools.isEmpty(locMast)) {
+            return String.valueOf(locMast.getLocNo());
+        }
+        return null;
+    }
+
+    public String getIoTime$() {
+        if (Cools.isEmpty(this.ioTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+    }
+
+    public String getCrnStrTime$() {
+        if (Cools.isEmpty(this.crnStrTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnStrTime);
+    }
+
+    public String getCrnEndTime$() {
+        if (Cools.isEmpty(this.crnEndTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnEndTime);
+    }
+
+    public String getPlcStrTime$() {
+        if (Cools.isEmpty(this.plcStrTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.plcStrTime);
+    }
+
+    public String getCrnPosTime$() {
+        if (Cools.isEmpty(this.crnPosTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.crnPosTime);
+    }
+
+    public String getRefIotime$() {
+        if (Cools.isEmpty(this.refIotime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.refIotime);
+    }
+
+    public String getModiUser$() {
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)) {
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getModiTime$() {
+        if (Cools.isEmpty(this.modiTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeUser$() {
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.appeUser);
+        if (!Cools.isEmpty(user)) {
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getAppeTime$() {
+        if (Cools.isEmpty(this.appeTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+    public String getErrorTime$() {
+        if (Cools.isEmpty(this.errorTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
+    }
+
+//    public void setErrorMemo(String errorMemo) {
+//        if (errorMemo.length() > 255) {
+//            errorMemo = errorMemo.substring(0, 150);
+//        }
+//        this.errorMemo = errorMemo;
+//    }
+
+    public String getLogErrTime$() {
+        if (Cools.isEmpty(this.logErrTime)) {
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.logErrTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index 208b218..e748fce 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -231,8 +231,6 @@
                         if (wrkMast != null) {
                             vo.setWrkSts(wrkMast.getWrkSts$());   // 宸ヤ綔鐘舵��
                             vo.setIoType(wrkMast.getIoType$());   //  鍏ュ嚭搴撶被鍨�
-                            vo.setSourceStaNo(wrkMast.getSourceStaNo$());
-                            vo.setStaNo(wrkMast.getStaNo$());
                             vo.setSourceLocNo(wrkMast.getSourceLocNo$());
                             vo.setLocNo(wrkMast.getLocNo$());
                         }
@@ -275,8 +273,6 @@
                 if (crnProtocol.getTaskNo() > 0) {
                     WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
                     if (wrkMast != null) {
-                        vo.setSourceStaNo(wrkMast.getSourceStaNo$());
-                        vo.setStaNo(wrkMast.getStaNo$());
                         vo.setWrkSts(wrkMast.getWrkSts$());   // 宸ヤ綔鐘舵��
                         vo.setIoType(wrkMast.getIoType$());   //  鍏ュ嚭搴撶被鍨�
                         vo.setSourceLocNo(wrkMast.getSourceLocNo$());
diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java
index 5720631..f6bda11 100644
--- a/src/main/java/com/zy/asrs/controller/CrnController.java
+++ b/src/main/java/com/zy/asrs/controller/CrnController.java
@@ -20,7 +20,6 @@
 import com.zy.asrs.service.BasCrnpService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.service.impl.MainServiceImpl;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.core.CrnThread;
 import com.zy.core.cache.MessageQueue;
@@ -65,8 +64,6 @@
     private BasCrnErrorMapper basCrnErrorMapper;
     @Autowired
     private BasCrnpService basCrnpService;
-    @Autowired
-    private MainServiceImpl mainService;
     @Autowired
     private LocMastService locMastService;
 
@@ -160,8 +157,6 @@
                 WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
                 if (wrkMast != null) {
                     vo.setStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc());   //  妯″紡鐘舵��
-                    vo.setSourceStaNo(wrkMast.getSourceStaNo$());    //  婧愮珯
-                    vo.setStaNo(wrkMast.getStaNo$());   //  鐩爣绔�
                     vo.setSourceLocNo(wrkMast.getSourceLocNo());    //  婧愬簱浣�
                     vo.setLocNo(wrkMast.getLocNo());    //  鐩爣搴撲綅
                 }
diff --git a/src/main/java/com/zy/asrs/controller/RgvController.java b/src/main/java/com/zy/asrs/controller/RgvController.java
deleted file mode 100644
index 3be5b88..0000000
--- a/src/main/java/com/zy/asrs/controller/RgvController.java
+++ /dev/null
@@ -1,336 +0,0 @@
-package com.zy.asrs.controller;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.annotations.ManagerAuth;
-import com.core.common.R;
-import com.core.exception.CoolException;
-import com.zy.asrs.domain.enums.RgvStatusType;
-import com.zy.asrs.domain.param.CrnOperatorParam;
-import com.zy.asrs.domain.param.RgvOperatorParam;
-import com.zy.asrs.domain.vo.RgvMsgTableVo;
-import com.zy.asrs.domain.vo.RgvStateTableVo;
-import com.zy.asrs.entity.BasRgv;
-import com.zy.asrs.entity.BasRgvErr;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.mapper.BasRgvErrMapper;
-import com.zy.asrs.service.BasRgvService;
-import com.zy.asrs.service.LocMastService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.service.impl.MainServiceImpl;
-import com.zy.core.cache.MessageQueue;
-import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.RgvModeType;
-import com.zy.core.enums.RgvTaskModeType;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.RgvSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.command.RgvCommand;
-import com.zy.core.model.protocol.RgvProtocol;
-import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.RgvThread;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * RGV鎺ュ彛
- * Created by vincent on 2020-06-01
- */
-@Slf4j
-@RestController
-@RequestMapping("/rgv")
-public class RgvController {
-
-    @Autowired
-    private SlaveProperties slaveProperties;
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private BasRgvErrMapper basRgvErrMapper;
-    @Autowired
-    private BasRgvService basRgvService;
-    @Autowired
-    private MainServiceImpl mainService;
-    @Autowired
-    private LocMastService locMastService;
-
-    @ManagerAuth(memo = "瑙i攣灏忚溅")
-    @PostMapping("/lock")
-    public R lock(CrnOperatorParam param){
-        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, param.getRgvNo());
-        rgvThread.setPakMk(true);
-        return R.ok();
-    }
-
-    @PostMapping("/table/rgv/state")
-    @ManagerAuth(memo = "RGV淇℃伅琛�")
-    public R rgvStateTable(){
-        List<RgvStateTableVo> list = new ArrayList<>();
-        List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no"));
-        for (BasRgv basRgv : rgvs) {
-            // 琛ㄦ牸琛�
-            RgvStateTableVo vo = new RgvStateTableVo();
-            vo.setRgvNo(basRgv.getRgvNo());   //  RGV鍙�
-            list.add(vo);
-            // 鑾峰彇RGV淇℃伅
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
-            if (rgvThread == null) {
-                continue;
-            }
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                continue;
-            }
-            vo.setStatusType(rgvProtocol.modeType.desc);   //  妯″紡鐘舵��
-            vo.setStatus(rgvProtocol.getStatusType().desc);     //  鐘舵��
-            vo.setWorkNo1(rgvProtocol.getTaskNo1());  //  宸ヤ綅1浠诲姟鍙�
-            vo.setStatus1(rgvProtocol.getStatusType1().desc);  // 宸ヤ綅1鐘舵��
-            vo.setLoading1(rgvProtocol.getLoaded1()==1?"鏈夌墿":"鏃犵墿");  // 宸ヤ綅1鏈夌墿
-            vo.setRgvPos(rgvProtocol.getRgvPos());
-            vo.setRgvPos1(rgvProtocol.getRgvPosI());
-            vo.setWalkPos(rgvProtocol.getWalkPos()==1?"鍦ㄥ畾浣�":"涓嶅湪瀹氫綅");
-            vo.setPakMk(rgvThread.isPakMk()?"鏃犻攣":"閿佸畾");
-//            vo.setWorkNo2(rgvProtocol.getTaskNo2());  //  宸ヤ綅2浠诲姟鍙�
-//            vo.setStatus2(rgvProtocol.getStatusType2().desc);  // 宸ヤ綅2鐘舵��
-//            vo.setLoading2(rgvProtocol.getLoaded2()==1?"鏈夌墿":"鏃犵墿");  // 宸ヤ綅2鏈夌墿
-
-            vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm()));
-            if (rgvProtocol.getAlarm() > 0) {
-                BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm());
-                vo.setAlarm(rgvErr==null?"鏈煡寮傚父":rgvErr.getErrName());
-            }
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/table/rgv/msg")
-    @ManagerAuth(memo = "RGV鏁版嵁琛�")
-    public R rgvMsgTable(){
-        List<RgvMsgTableVo> list = new ArrayList<>();
-        List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no"));
-        for (BasRgv basRgv : rgvs) {
-            // 琛ㄦ牸琛�
-            RgvMsgTableVo vo = new RgvMsgTableVo();
-            vo.setRgvNo(basRgv.getRgvNo());   //  RGV鍙�
-            list.add(vo);
-            // 鑾峰彇RGV淇℃伅
-            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo());
-            if (rgvThread == null) {
-                continue;
-            }
-            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-            if (rgvProtocol == null) {
-                continue;
-            }
-
-            vo.setWorkNo(rgvProtocol.getTaskNo1());  //  浠诲姟鍙�
-            if (rgvProtocol.getTaskNo1()>0) {
-                WrkMast wrkMast = wrkMastService.selectById(rgvProtocol.getTaskNo1());
-                if (wrkMast != null) {
-                    vo.setStatus(RgvStatusType.process(wrkMast.getIoType()).getDesc());   //  妯″紡鐘舵��
-                    vo.setSourceStaNo(wrkMast.getSourceStaNo$());    //  婧愮珯
-                    vo.setStaNo(wrkMast.getStaNo$());   //  鐩爣绔�
-                    vo.setSourceLocNo(wrkMast.getSourceLocNo());    //  婧愬簱浣�
-                    vo.setLocNo(wrkMast.getLocNo());    //  鐩爣搴撲綅
-                }
-            } else {
-                vo.setStatus(rgvProtocol.modeType.equals(RgvModeType.AUTO)? rgvProtocol.modeType.desc: RgvModeType.HAND.desc);   //  妯″紡鐘舵��
-            }
-            vo.setXspeed(rgvProtocol.getXSpeed());  //  璧拌閫熷害锛坢/min)
-            vo.setXdistance(rgvProtocol.getXDistance());  //  璧拌璺濈(Km)
-            vo.setXduration(rgvProtocol.getXDuration());    //  璧拌鏃堕暱(H)
-        }
-        return R.ok().add(list);
-    }
-
-    @PostMapping("/output/site")
-    @ManagerAuth(memo = "RGV鎶ユ枃鏃ュ織杈撳嚭")
-    public R rgvOutput(){
-        StringBuilder str = new StringBuilder();
-        String s;
-        int i = 0;
-        while((s = OutputQueue.RGV.poll()) != null && i <=10) {
-            str.append("\n").append(s);
-            i++;
-        }
-        return R.ok().add(str.toString());
-    }
-
-    /****************************************************************/
-    /************************** 鎵嬪姩鎿嶄綔 ******************************/
-    /****************************************************************/
-
-    @ManagerAuth(memo = "鍙栨斁璐�")
-    @PostMapping("/operator/put")
-    public R rgvFetchPut(RgvOperatorParam param){
-        RgvCommand command = new RgvCommand();
-        command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
-        command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
-        command.setDestinationStaNo1(param.getStaNo1());  // 鐩爣绔�
-//        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-//        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
-//        command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
-//        command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
-//        command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
-        command.setCommand((short) 0);
-
-        return rgvControl(command)? R.ok(): R.error();
-    }
-
-    @ManagerAuth(memo = "鍙栬揣")
-    @PostMapping("/operator/take")
-    public R rgvFetch(RgvOperatorParam param){
-        RgvCommand command = new RgvCommand();
-        command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode1(RgvTaskModeType.FETCH); // 浠诲姟妯″紡: 鍙栬揣
-        command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
-        command.setDestinationStaNo1(param.getStaNo1());  // 鐩爣绔�
-        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
-        command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
-        command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
-        command.setCommand((short) 0);
-
-        return rgvControl(command)? R.ok(): R.error();
-    }
-
-    @ManagerAuth(memo = "鏀捐揣")
-    @PostMapping("/operator/stockMove")
-    public R rgvPut(RgvOperatorParam param){
-        RgvCommand command = new RgvCommand();
-        command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode1(RgvTaskModeType.PUT); // 浠诲姟妯″紡: 鏀捐揣
-        command.setSourceStaNo1(param.getSourceStaNo1()); // 婧愮珯
-        command.setDestinationStaNo1(param.getStaNo1());  // 鐩爣绔�
-        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode2(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
-        command.setSourceStaNo2(param.getSourceStaNo2()); // 婧愮珯
-        command.setDestinationStaNo2(param.getStaNo2());  // 鐩爣绔�
-        command.setCommand((short) 0);
-
-        return rgvControl(command)? R.ok(): R.error();
-    }
-
-
-
-    @ManagerAuth(memo = "浠诲姟瀹屾垚")
-    @PostMapping("/operator/taskComplete")
-    public R rgvTaskComplete(RgvOperatorParam param){
-        RgvCommand command = new RgvCommand();
-        command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 1);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
-        command.setSourceStaNo1((short) 0); // 婧愮珯
-        command.setDestinationStaNo1((short) 0);  // 鐩爣绔�
-        command.setAckFinish2((short) 1);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
-        command.setSourceStaNo2((short) 0); // 婧愮珯
-        command.setDestinationStaNo2((short) 0);  // 鐩爣绔�
-        command.setCommand((short) 0);
-
-        return rgvControl(command)? R.ok(): R.error();
-    }
-
-    @ManagerAuth(memo = "娓呴櫎鍛戒护")
-    @PostMapping("/operator/clearCommand")
-    public R rgvClearCommand(RgvOperatorParam param){
-        if (param.getRgvNo() == null) {
-            throw new CoolException("璇烽�夋嫨RGV鍙�");
-        }
-        RgvCommand command = new RgvCommand();
-        command.setRgvNo(param.getRgvNo()); // RGV缂栧彿
-        command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo1((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode1(RgvTaskModeType.NONE); // 浠诲姟妯″紡
-        command.setSourceStaNo1((short) 0); // 婧愮珯
-        command.setDestinationStaNo1((short) 0);  // 鐩爣绔�
-        command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-        command.setTaskNo2((short) 0); // 宸ヤ綔鍙�
-        command.setTaskMode2(RgvTaskModeType.NONE); // 浠诲姟妯″紡
-        command.setSourceStaNo2((short) 0); // 婧愮珯
-        command.setDestinationStaNo2((short) 0);  // 鐩爣绔�
-        command.setCommand((short) 0);
-
-        return rgvControl(command)? R.ok(): R.error();
-    }
-
-    @ManagerAuth(memo = "鎵嬪姩澶嶄綅")
-    @PostMapping("/operator/handleReset")
-    public R handleReset(RgvOperatorParam param) throws Exception {
-        if (param.getRgvNo() == null) {
-            throw new CoolException("璇烽�夋嫨RGV");
-        }
-        // 鑾峰彇RGV缂撳瓨
-        for (RgvSlave rgv : slaveProperties.getRgv()) {
-            // 鑾峰彇RGV淇℃伅
-            if (param.getRgvNo().equals(rgv.getId())) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-                if (rgvThread == null) {
-                    throw new CoolException("RGV涓嶅湪绾�");
-                }
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    throw new CoolException("RGV涓嶅湪绾�");
-                }
-                RgvCommand Command = new RgvCommand();
-                Command.setRgvNo(rgv.getId()); // RGV缂栧彿
-                Command.setTaskMode1(RgvTaskModeType.NONE);
-                Command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                Command.setAckFinish2((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                Command.setCommand((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                // 寤舵椂鍙戦��
-                Thread.sleep(1000L);
-                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, Command))) {
-                    return R.ok();
-                } else {
-                    throw new CoolException("鍛戒护涓嬪彂澶辫触");
-                }
-
-            }
-        }
-        return R.error();
-    }
-
-    private boolean rgvControl(RgvCommand command){
-        if (command.getRgvNo() == null) {
-            throw new CoolException("璇烽�夋嫨RGV");
-        }
-        for (RgvSlave rgv : slaveProperties.getRgv()) {
-            // 鑾峰彇RGV淇℃伅
-            if (command.getRgvNo().equals(rgv.getId())) {
-                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
-                if (rgvThread == null) {
-                    throw new CoolException("RGV涓嶅湪绾�");
-                }
-                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
-                if (rgvProtocol == null) {
-                    throw new CoolException("RGV涓嶅湪绾�");
-                }
-                if (MessageQueue.offer(SlaveType.Rgv, rgv.getId(), new Task(4, command))) {
-                    return true;
-                } else {
-                    throw new CoolException("鍛戒护涓嬪彂澶辫触");
-                }
-            }
-        }
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index e896efc..18cda39 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -28,9 +28,16 @@
      * 宸ヤ綔鍙�
      */
     @ApiModelProperty(value= "宸ヤ綔鍙�")
-    @TableId(value = "wrk_no", type = IdType.INPUT)
+    @TableId(value = "wrk_no", type = IdType.AUTO)
     @TableField("wrk_no")
-    private Integer wrkNo;
+    private Long wrkNo;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("plc_wrk_no")
+    private Integer plcWrkNo;
 
     @ApiModelProperty(value= "")
     @TableField("inv_wh")
@@ -65,7 +72,7 @@
      */
     @ApiModelProperty(value= "鍫嗗灈鏈�")
     @TableField("crn_no")
-    private Integer crnNo;
+    private String crnNo;
 
     @ApiModelProperty(value= "")
     @TableField("sheet_no")
@@ -89,19 +96,6 @@
     @TableField("loc_no")
     private String locNo;
 
-    /**
-     * 鐩爣绔�
-     */
-    @ApiModelProperty(value= "鐩爣绔�")
-    @TableField("sta_no")
-    private Integer staNo;
-
-    /**
-     * 婧愮珯
-     */
-    @ApiModelProperty(value= "婧愮珯")
-    @TableField("source_sta_no")
-    private Integer sourceStaNo;
 
     /**
      * 婧愬簱浣�
@@ -358,23 +352,7 @@
         return null;
     }
 
-    public String getStaNo$(){
-        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
-        BasDevp basDevp = service.selectById(this.staNo);
-        if (!Cools.isEmpty(basDevp)){
-            return String.valueOf(basDevp.getDevNo());
-        }
-        return null;
-    }
 
-    public String getSourceStaNo$(){
-        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
-        BasDevp basDevp = service.selectById(this.sourceStaNo);
-        if (!Cools.isEmpty(basDevp)){
-            return String.valueOf(basDevp.getDevNo());
-        }
-        return null;
-    }
 
     public String getSourceLocNo$(){
         LocMastService service = SpringUtils.getBean(LocMastService.class);
@@ -470,12 +448,6 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.errorTime);
     }
 
-    public void setErrorMemo(String errorMemo) {
-        if (errorMemo.length() > 255) {
-            errorMemo = errorMemo.substring(0, 150);
-        }
-        this.errorMemo = errorMemo;
-    }
 
     public String getLogErrTime$(){
         if (Cools.isEmpty(this.logErrTime)){
diff --git a/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
index 6eb2d28..db82921 100644
--- a/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
@@ -1,10 +1,11 @@
 package com.zy.asrs.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.mapper.*;
-import com.zy.asrs.service.*;
-import com.zy.common.service.CommonService;
+import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WrkMastService;
 import com.zy.common.utils.News;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
@@ -16,7 +17,6 @@
 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;
 
@@ -27,7 +27,7 @@
  * Created by vincent on 2020/8/6
  */
 @Slf4j
-@Service("mainService")
+@Service("ctuMainService")
 @Transactional
 public class CtuMainServiceImpl {
 
@@ -36,8 +36,12 @@
 
     @Autowired
     private SlaveProperties slaveProperties;
+
     @Autowired
     private WrkMastMapper wrkMastMapper;
+
+    @Autowired
+    private LocMastService locMastService;
 
     @Autowired
     private WrkMastService wrkMastService;
@@ -62,28 +66,49 @@
                     staProtocol = staProtocol.clone();
                 }
                 // 鍒ゆ柇鏄惁婊¤冻鏉′欢
-                if (!staProtocol.isLoading()) {
-                    continue;
-                }
-                if (staProtocol.isAutoing() && staProtocol.isInEnable()
-                        && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
-                        && staProtocol.isPakMk()) {
+//                if (!staProtocol.isLoading()) {
+//                    continue;
+//                }
+                // && staProtocol.isInEnable()
+                if (staProtocol.isAutoing() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) {
                     WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo());
-                    if (wrkMast.getWrkSts() == 106) {
+                    if (wrkMast != null) {
                         //涓嬪彂绉诲姩浠诲姟锛屽苟鐢熸垚鍏ュ簱宸ヤ綔妗�
-
-                    } else {
-                        log.info("" + mark + " - " + staProtocol.getWorkNo() + " - 鎵句笉鍒板搴旂殑宸ヤ綔妗�");
+                        WrkMast in = new WrkMast();
+                        wrkMast.setWrkSts(223L);
+                        wrkMast.setModiTime(new Date());
+                        wrkMastService.updateById(wrkMast);
+                        in.setSourceLocNo("1007");
+                        in.setLocNo(wrkMast.getSourceLocNo());
+                        in.setIoType(10);
+                        in.setIoTime(new Date());
+                        in.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+                        in.setIoPri(13D); // 浼樺厛绾э細13
+                        in.setFullPlt("Y"); // 婊℃澘锛歒
+                        in.setPicking("N"); // 鎷f枡
+                        in.setExitMk("N"); // 閫�鍑�
+                        in.setEmptyMk("Y"); // 绌烘澘
+                        in.setLinkMis("N");
+                        in.setAppeTime(new Date());
+                        in.setModiTime(new Date());
+                        in.setBarcode(wrkMast.getBarcode());
+                        in.setPlcWrkNo(wrkMast.getPlcWrkNo());
+                        wrkMastService.insert(in);
+                        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+                        locMast.setLocSts("S");
+                        locMast.setModiTime(new Date());
+                        locMastService.selectById(locMast);
                     }
                 }
             }
         }
     }
 
+
     /**
-     * 鍑哄簱绔欏埌鎷f枡绔�
+     * 鍑哄簱
      */
-    public synchronized void generateStoreWrkFile0(Integer mark) {
+    public synchronized void out(Integer mark) {
         // 鏍规嵁杈撻�佺嚎plc閬嶅巻
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鍏ュ簱鍙�
@@ -100,13 +125,12 @@
                 if (!staProtocol.isLoading()) {
                     continue;
                 }
-
-                if (staProtocol.isAutoing() && staProtocol.isOutEnable()
-                        && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999)
-                        && staProtocol.isPakMk()) {
+                //&& staProtocol.isOutEnable()
+                if (staProtocol.isAutoing() && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999) && staProtocol.isPakMk()) {
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", staProtocol.getSiteId()).eq("wrk_sts", 105));
+                    // 106涔熺畻涓婏紝浠ュ悗106-銆�107鐢ㄤ簬鏇存柊搴撳瓨
+                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("loc_no", "1001").in("wrk_sts", 106,107));
                     if (wrkMast == null) {
                         continue;
                     }
@@ -114,14 +138,14 @@
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                    staProtocol.setWorkNo(wrkMast.getPlcWrkNo());
+                    staProtocol.setStaNo((short) 1004);
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                    log.info("杈撻�佺嚎涓嬪彂3锛歿},{}", wrkMast.getWrkNo(), wrkMast.getStaNo());
+                    log.info("杈撻�佺嚎涓嬪彂3锛歿},{}", wrkMast.getWrkNo(), 1004);
                     if (result) {
                         // 鏇存柊宸ヤ綔涓绘。
-                        wrkMast.setWrkSts(106L);
+                        wrkMast.setWrkSts(108L);
                         wrkMast.setModiTime(new Date());
                         if (wrkMastMapper.updateById(wrkMast) == 0) {
                             News.error("" + mark + " - 1" + " - 鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
@@ -131,9 +155,7 @@
                     }
 
                 } else {
-                    News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable()
-                            + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk() + "銆佸伐浣滃彿锛�" + staProtocol.getWorkNo()
-                            + "銆侀攣瀹氭爣璁�" + staProtocol.isPakMk() + "銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
+                    News.errorNoLog("" + mark + " - 6" + " - 绔欑偣淇℃伅涓嶇鍚堝叆搴撴潯浠讹紒锛侊紒" + " 鑷姩淇″彿锛�" + staProtocol.isLoading() + "銆佸彲鍏ヤ俊鍙凤細" + staProtocol.isInEnable() + "銆佺┖鏉夸俊鍙凤細" + staProtocol.isEmptyMk() + "銆佸伐浣滃彿锛�" + staProtocol.getWorkNo() + "銆侀攣瀹氭爣璁�" + staProtocol.isPakMk() + "銆佸叆搴撳嵃璁帮細" + staProtocol.getStamp());
                 }
             }
         }
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 9c8ba39..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,909 +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) {
-                    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 + ":鎵爜澶辫触锛岃閲嶈瘯");
-//                            }
+//package com.zy.asrs.service.impl;
 //
-//                        }
-                        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()));
+//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);
-//                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-//                        log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+//                        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;
+////                        }
 //
-//                        ledThread.errorReset();
-//                        log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+//                    }
+//                    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);
 //
-//                        if (!result) {
-//                            News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
-//                            log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
+//                        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());
 //
-////                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+//                            ledThread.errorReset();
+//                            log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+//
+//                            if (!result) {
+//                                News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+//
+//                                throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+//                            }
+//                        } 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();
+//                    }
+//
+//                }
+//
+//
+//            }
+//        }
+////        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;
 //                        }
-
-                    }
-                    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绔欑偣淇℃伅澶辫触");
-                            }
-                        } 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();
-                    }
-
-                }
-
-
-            }
-        }
-//        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) {
+//                        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;
 //                    }
-//                    if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo())
-//                            || Cools.isEmpty(wrkMast.getSourceStaNo())) {
+//
+//                    WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode);
+//                    if (wrkMast == null) {
+//                        // 鏃犵洏鐐规暟鎹�
 //                        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());
-            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 ((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();
+//                    }
+//
+//                }
+//
 //            }
-
-            // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
-            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) {
+//
+//        }
+//    }
+//
+//    /**
+//     * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
+//     */
+//    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());
@@ -913,1245 +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((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;
+////            //鍫嗗灈鏈哄洖鍘熺偣浠诲姟涓�
+////            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((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" + " - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 锛� 鍑哄簱鎵ц瀹屾瘯");
-    }
-
+//        }
+////        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殑瀹屾垚鎿嶄綔锛屼换鍔″彿:" + 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());
-                }
-            }
-        }
-    }
-
-    /**
-     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堝叆搴撶増)
-     * 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);
@@ -2161,665 +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) {
-        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));
+//            // 淇敼婧愬簱浣嶇姸鎬�
+//            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("灏忚溅鍦板浘鏇存柊鍑洪敊锛佸紓甯稿師鍥狅細" + 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.getTaskNo1() == 0
-                        && rgvThread.isPakMk()
-                ) {
-                    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 || wrkMastSta.getWrkSts() != 0) {//1:婊$増   3锛氬彇鏀�
-                            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;
-                            }
-                        }
-                        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());
-                                Thread.sleep(500);
-                            }
-                        } else {
-                            log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�", wrkMastSta.getWrkNo());
-                            Thread.sleep(500);
-                        }
-                        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) {
@@ -2829,210 +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
-                        && rgvThread.isPakMk()
-//                        && 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))) {
@@ -3042,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;
-        }
-    }
-
-}
+//
+//}
diff --git a/src/main/java/com/zy/core/CtuMainProcess.java b/src/main/java/com/zy/core/CtuMainProcess.java
index fc0ba45..10ca97f 100644
--- a/src/main/java/com/zy/core/CtuMainProcess.java
+++ b/src/main/java/com/zy/core/CtuMainProcess.java
@@ -46,8 +46,8 @@
                     // 鍏ュ簱
                     ctuMainService.generateStoreWrkFile(1);
 
-                    // 鎷f枡瀹屾垚
-                    //ctuMainService.checkCpm(1);
+                    // 鍑哄簱
+                    ctuMainService.out(1);
 
                 } catch (Exception e) {
                     e.printStackTrace();
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 38df41c..346856f 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -1,106 +1,106 @@
-package com.zy.core;
-
-import com.zy.asrs.service.impl.MainServiceImpl;
-import com.zy.core.properties.SystemProperties;
-import lombok.Data;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.PreDestroy;
-import java.util.ArrayList;
-
-/**
- * WCS涓绘祦绋�
- * Created by vincent on 2020/8/6
- */
-@Data
-@Slf4j
-@Component
-public class MainProcess {
-
-    @Autowired
-    private MainServiceImpl mainService;
-    // 鎵�灞炵嚎绋�
-    private Thread thread;
-    // 棰戠巼
-    private int i = 0;
-    private boolean rgcWrk = true;
-
-    /**
-     * =====>>  寮�濮嬪伐浣�
-     */
-    public void start(){
-        thread = new Thread(() -> {
-            while (!Thread.currentThread().isInterrupted()) {
-                try {
-
-                    // 闂撮殧
-                    Thread.sleep(1000);
-
-                    // 绯荤粺杩愯鐘舵�佸垽鏂�
-                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
-                        continue;
-                    }
-
-                    // 婕旂ず
-//                    mainService.crnDemoOfLocMove1();
-
-                    // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
-//                    mainService.ioConvert();
-
-
-                  //  mainService.stnToCrnStnPick2();
-
-                    // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
-                    mainService.generateStoreWrkFile(1); // 缁勬墭
-//                    mainService.generateStoreWrkFile0(2); // WMS鍏ュ簱
-                    Thread.sleep(400);
-
-
-                    // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
-                    mainService.stnToCrnStnPick(3);
-                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
-                    mainService.crnStnToOutStn(4);
-                    // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
-                    mainService.crnIoExecute(5);
-                    // 鍏ュ嚭搴撳寮� ===>> 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
-//                    mainService.crnIoWrkMast();
-                    // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
-                    mainService.storeFinished(6);
-                    // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
-                    mainService.recCrnErr(7);
-                    // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
-                    mainService.storeEmptyPlt(8);
-                    // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
-                    mainService.ledExecute(9);
-                    // 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
-                    mainService.ledReset();
-
-                    mainService.outOfDevp(11);
-
-//                    if (i>10){
-//                        //绌烘墭鐩樿嚜鍔ㄥ嚭搴�
-//                        mainService.autoEmptyOut();
-//                        //绌烘墭鐩樿嚜鍔ㄥ叆搴�
-//                        mainService.autoEmptyIn();
-//                        i=0;
+//package com.zy.core;
+//
+//import com.zy.asrs.service.impl.MainServiceImpl;
+//import com.zy.core.properties.SystemProperties;
+//import lombok.Data;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.stereotype.Component;
+//
+//import javax.annotation.PreDestroy;
+//import java.util.ArrayList;
+//
+///**
+// * WCS涓绘祦绋�
+// * Created by vincent on 2020/8/6
+// */
+//@Data
+//@Slf4j
+//@Component
+//public class MainProcess {
+//
+//    @Autowired
+//    private MainServiceImpl mainService;
+//    // 鎵�灞炵嚎绋�
+//    private Thread thread;
+//    // 棰戠巼
+//    private int i = 0;
+//    private boolean rgcWrk = true;
+//
+//    /**
+//     * =====>>  寮�濮嬪伐浣�
+//     */
+//    public void start(){
+//        thread = new Thread(() -> {
+//            while (!Thread.currentThread().isInterrupted()) {
+//                try {
+//
+//                    // 闂撮殧
+//                    Thread.sleep(1000);
+//
+//                    // 绯荤粺杩愯鐘舵�佸垽鏂�
+//                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
+//                        continue;
 //                    }
-//                    i++;
-
-
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        });
-        thread.start();
-    }
-
-    @PreDestroy
-    public void shutDown(){
-        if (thread != null) thread.interrupt();
-    }
-
-}
+//
+//                    // 婕旂ず
+////                    mainService.crnDemoOfLocMove1();
+//
+//                    // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
+////                    mainService.ioConvert();
+//
+//
+//                  //  mainService.stnToCrnStnPick2();
+//
+//                    // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
+//                    mainService.generateStoreWrkFile(1); // 缁勬墭
+////                    mainService.generateStoreWrkFile0(2); // WMS鍏ュ簱
+//                    Thread.sleep(400);
+//
+//
+//                    // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
+//                    mainService.stnToCrnStnPick(3);
+//                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
+//                    mainService.crnStnToOutStn(4);
+//                    // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
+//                    mainService.crnIoExecute(5);
+//                    // 鍏ュ嚭搴撳寮� ===>> 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
+////                    mainService.crnIoWrkMast();
+//                    // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
+//                    mainService.storeFinished(6);
+//                    // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
+//                    mainService.recCrnErr(7);
+//                    // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
+//                    mainService.storeEmptyPlt(8);
+//                    // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
+//                    mainService.ledExecute(9);
+//                    // 鍏朵粬  ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
+//                    mainService.ledReset();
+//
+//                    mainService.outOfDevp(11);
+//
+////                    if (i>10){
+////                        //绌烘墭鐩樿嚜鍔ㄥ嚭搴�
+////                        mainService.autoEmptyOut();
+////                        //绌烘墭鐩樿嚜鍔ㄥ叆搴�
+////                        mainService.autoEmptyIn();
+////                        i=0;
+////                    }
+////                    i++;
+//
+//
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            }
+//        });
+//        thread.start();
+//    }
+//
+//    @PreDestroy
+//    public void shutDown(){
+//        if (thread != null) thread.interrupt();
+//    }
+//
+//}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index bb12fe9..9dc5f37 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -5,19 +5,14 @@
 import HslCommunication.Profinet.Siemens.SiemensPLCS;
 import HslCommunication.Profinet.Siemens.SiemensS7Net;
 import com.alibaba.fastjson.JSON;
-import com.core.common.Cools;
 import com.core.common.DateUtils;
-import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.entity.BasRgvMap;
 import com.zy.asrs.service.BasDevpService;
-import com.zy.asrs.service.BasRgvMapService;
 import com.zy.common.utils.News;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
-import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.IoModeType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.DevpSlave;
@@ -47,33 +42,30 @@
     private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
     private short heartBeatVal = 1;
     private StaError1 staError1;
-//    public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
-//
-//    }};
-    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
-        add(100);add(101);add(102);add(103);
-        add(104);add(105);add(106);add(107);
-        add(108);add(109);add(110);add(111);
-        add(112);add(113);add(114);add(115);
-        add(116);add(117);add(118);add(119);
-        add(120);add(121);add(122);add(123);
 
-    add(200);add(201);add(202);add(203);
-    add(204);add(205);add(206);add(207);
-    add(208);add(209);add(210);add(211);
-    add(212);add(213);add(214);add(215);
-    add(216);add(217);add(218);add(219);
-    add(220);add(221);add(222);add(223);
+    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
+        add(1001);
+        add(1002);
+        add(1003);
+        add(1004);
+        add(1005);
+        add(1006);
+        add(1007);
+
+        add(101);
+        add(102);
+        add(103);
+        add(104);
+        add(105);
+        add(106);
+        add(107);
+        add(108);
     }};
 
     public static final ArrayList<Integer> BarcodeList = new ArrayList<Integer>() {{
-        add(1); add(2);
-    }};
-    public static final ArrayList<Integer> staNosErrList = new ArrayList<Integer>() {{
-        add(101); add(201);
+        add(1);
     }};
 
-    private Integer count=0;
 
     /**
      * 鏉$爜鏁伴噺
@@ -89,7 +81,7 @@
      * 4.鍑哄簱妯″紡
      */
     public IoModeType ioModeOf2F = IoModeType.NONE;
-//    public IoModeType ioMode = IoModeType.NONE;
+    //    public IoModeType ioMode = IoModeType.NONE;
     public IoModeType ioModeOf4F = IoModeType.NONE;
 //    public IoModeType ioMode = IoModeType.NONE;
 
@@ -124,8 +116,8 @@
                         break;
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
-                        write((StaProtocol)task.getData());
-                        log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�"+((StaProtocol) task.getData()).getWorkNo()+","+((StaProtocol) task.getData()).getStaNo());
+                        write((StaProtocol) task.getData());
+                        log.error("杈撻�佺嚎涓嬪彂鍛戒护锛�" + ((StaProtocol) task.getData()).getWorkNo() + "," + ((StaProtocol) task.getData()).getStaNo());
                         break;
                     default:
                         break;
@@ -139,34 +131,31 @@
 
         }
     }
+
     /**
      * 鍒濆鍖栫珯鐐圭姸鎬�
      */
     private void initSite() {
-        count ++;
         ArrayList<Integer> staNos = getStaNo();
-        if(count > 48) {
-            // 绔欑偣缂栧彿
-            for (Integer siteId : staNos) {
-                StaProtocol staProtocol = station.get(siteId);
-                if (null == staProtocol) {
-                    staProtocol = new StaProtocol();
-                    staProtocol.setSiteId(siteId);
-                    station.put(siteId, staProtocol);
-                }
-                staProtocol.setWorkNo(0);    // ID
-                staProtocol.setAutoing(false);      // 鑷姩
-                staProtocol.setLoading(false);      // 鏈夌墿
-                staProtocol.setInEnable(false);     // 鍙叆
-                staProtocol.setOutEnable(false);    // 鍙嚭
-                staProtocol.setEmptyMk(false);      // 绌烘澘淇″彿
-                staProtocol.setStaNo((short) 0);     // 鐩爣绔�
-
-                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
-                    staProtocol.setPakMk(true);
-                }
+        // 绔欑偣缂栧彿
+        for (Integer siteId : staNos) {
+            StaProtocol staProtocol = station.get(siteId);
+            if (null == staProtocol) {
+                staProtocol = new StaProtocol();
+                staProtocol.setSiteId(siteId);
+                station.put(siteId, staProtocol);
             }
-            count = 0;
+            staProtocol.setWorkNo(0);    // ID
+            staProtocol.setAutoing(false);      // 鑷姩
+            staProtocol.setLoading(false);      // 鏈夌墿
+            staProtocol.setInEnable(false);     // 鍙叆
+            staProtocol.setOutEnable(false);    // 鍙嚭
+            staProtocol.setEmptyMk(false);      // 绌烘澘淇″彿
+            staProtocol.setStaNo((short) 0);     // 鐩爣绔�
+
+            if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+                staProtocol.setPakMk(true);
+            }
         }
     }
 
@@ -177,13 +166,13 @@
         siemensS7Net.setRack(slave.getRack().byteValue());
         siemensS7Net.setSlot(slave.getSlot().byteValue());
         OperateResult connect = siemensS7Net.ConnectServer();
-        if(connect.IsSuccess){
+        if (connect.IsSuccess) {
             result = true;
-            OutputQueue.DEVP.offer(MessageFormat.format( "銆恵0}銆戣緭閫佺嚎plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-            News.info("SiemensDevp"+" - 1"+" - 杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣緭閫佺嚎plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+            News.info("SiemensDevp" + " - 1" + " - 杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
         } else {
-            OutputQueue.DEVP.offer(MessageFormat.format( "銆恵0}銆戣緭閫佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]  [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-            News.error("SiemensDevp"+" - 2"+" - 杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣緭閫佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]  [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+            News.error("SiemensDevp" + " - 2" + " - 杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
         }
         siemensS7Net.ConnectClose();
         initSite();
@@ -198,8 +187,8 @@
 //        updateIoMode();
         ArrayList<Integer> staNos = getStaNo();
         int staNoSize = staNos.size();
-        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
-        OperateResultExOne<byte[]> result200 = siemensS7Net.Read("DB101.800", (short) (staNoSize*8));
+        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize * 2));
+        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.0", (short) (staNoSize * 4));
         if (result.IsSuccess) {
             for (int i = 0; i < staNoSize; i++) {
                 Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
@@ -210,20 +199,11 @@
                     station.put(siteId, staProtocol);
                 }
                 boolean[] status = null;
-                if(i < 24){
-                    staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8));     // 宸ヤ綔鍙�
-
-                    staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4));   // 鐩爣绔�
-
-                    status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
-                }else {
-                    staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result200.Content, (i-24)*8));     // 宸ヤ綔鍙�
-
-                    staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result200.Content, (i-24)*8 + 4));   // 鐩爣绔�
-
-                    status = siemensS7Net.getByteTransform().TransBool(result200.Content, (i-24)*8 + 6, 2);
+                if (i < 7) {
+                    staProtocol.setWorkNo((int) siemensS7Net.getByteTransform().TransInt16(result2.Content, i * 4));
+                    staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, i * 4 + 2));
                 }
-
+                status = siemensS7Net.getByteTransform().TransBool(result.Content, i * 2, 2);
                 staProtocol.setAutoing(status[0]);  // 鑷姩
                 staProtocol.setLoading(status[1]);  // 鏈夌墿
                 staProtocol.setInEnable(status[2]); // 鍙叆
@@ -240,87 +220,87 @@
         }
 
         //鏉$爜鎵弿鍣�
-        ArrayList<Integer> barcodeList = BarcodeList;
-        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1648", (short) (barcodeList.size() * 8));
-        if (result2.IsSuccess) {
-            for (int i = 0; i < barcodeList.size(); i++) {
-                Integer barcodeId = barcodeList.get(i);
-                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
-                if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
-                    barcodeThread.setBarcode(barcode);
-                }
-            }
-        }
+//        ArrayList<Integer> barcodeList = BarcodeList;
+//        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.1648", (short) (barcodeList.size() * 8));
+//        if (result2.IsSuccess) {
+//            for (int i = 0; i < barcodeList.size(); i++) {
+//                Integer barcodeId = barcodeList.get(i);
+//                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+//                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
+//                if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+//                    barcodeThread.setBarcode(barcode);
+//                }
+//            }
+//        }
         //澶栧舰妫�娴�
-        ArrayList<Integer> staNoErrs = staNosErrList;
-        int staNoErrsSize = staNoErrs.size();
-        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.1608", (short) (staNoErrsSize*8));
-        if (resultErr.IsSuccess){
-            for (int i = 0;i<2;i++){
-                Integer siteId = staNoErrs.get(i); // 绔欑偣缂栧彿
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4+2, 1);
-                StaProtocol staProtocol = station.get(siteId);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
-            }
-        }
+//        ArrayList<Integer> staNoErrs = staNosErrList;
+//        int staNoErrsSize = staNoErrs.size();
+//        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.1608", (short) (staNoErrsSize * 8));
+//        if (resultErr.IsSuccess) {
+//            for (int i = 0; i < 2; i++) {
+//                Integer siteId = staNoErrs.get(i); // 绔欑偣缂栧彿
+//                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4 + 2, 1);
+//                StaProtocol staProtocol = station.get(siteId);
+//                staProtocol.setFrontErr(status[0]);
+//                staProtocol.setBackErr(status[1]);
+//                staProtocol.setHighErr(status[2]);
+//                staProtocol.setLeftErr(status[3]);
+//                staProtocol.setRightErr(status[4]);
+//                staProtocol.setWeightErr(status[5]);
+//                staProtocol.setBarcodeErr(status[6]);
+//            }
+//        }
 
         //plc鏁呴殰
-        OperateResultExOne<byte[]> resultErr2 = siemensS7Net.Read("DB101.1728", (short) (staNoSize*4));
-        if (resultErr2.IsSuccess) {
-            for (int i = 0; i < staNoSize; i++) {
-                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr2.Content, i*4, 1);
-                StaProtocol staProtocol = station.get(siteId);
-                staProtocol.setBreakerErr(status[0]);
-                staProtocol.setInfraredErr(status[1]);
-                staProtocol.setOutTimeErr(status[2]);
-                staProtocol.setSeizeSeatErr(status[3]);
-                staProtocol.setWrkYgoodsN(status[4]);
-                staProtocol.setInverterErr(status[5]);
-                staProtocol.setContactErr(status[6]);
-                staProtocol.setUpcontactErr(status[7]);
-
-            }
-        }
-        OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB13.400", (short) 3);
-        if (resultErr3.IsSuccess) {
-            if (staError1 == null){
-                staError1 = new StaError1();
-            }
-            boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr3.Content, 0, 3);
-            staError1.setEMERGENCY_Stop_Core(status[0]);
-            staError1.setEMERGENCY_STOP1(status[1]);
-            staError1.setEMERGENCY_STOP2(status[2]);
-            staError1.setEMERGENCY_STOP3(status[3]);
-            staError1.setEMERGENCY_STOP4(status[4]);
-
-            staError1.setDoor_EMERGENCY_STOP1(status[5]);
-            staError1.setDoor_EMERGENCY_STOP2(status[6]);
-            staError1.setDoor_EMERGENCY_STOP3(status[7]);
-            staError1.setDoor_EMERGENCY_STOP4(status[8]);
-            staError1.setDoor_EMERGENCY_STOP5(status[9]);
-            staError1.setDoor_EMERGENCY_STOP6(status[10]);
-
-            staError1.setDoor_Open_Err1(status[11]);
-            staError1.setDoor_Open_Err1(status[12]);
-            staError1.setDoor_Open_Err1(status[13]);
-            staError1.setDoor_Open_Err1(status[14]);
-            staError1.setDoor_Open_Err1(status[15]);
-            staError1.setDoor_Open_Err1(status[16]);
-
-        }
+//        OperateResultExOne<byte[]> resultErr2 = siemensS7Net.Read("DB101.1728", (short) (staNoSize * 4));
+//        if (resultErr2.IsSuccess) {
+//            for (int i = 0; i < staNoSize; i++) {
+//                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+//                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr2.Content, i * 4, 1);
+//                StaProtocol staProtocol = station.get(siteId);
+//                staProtocol.setBreakerErr(status[0]);
+//                staProtocol.setInfraredErr(status[1]);
+//                staProtocol.setOutTimeErr(status[2]);
+//                staProtocol.setSeizeSeatErr(status[3]);
+//                staProtocol.setWrkYgoodsN(status[4]);
+//                staProtocol.setInverterErr(status[5]);
+//                staProtocol.setContactErr(status[6]);
+//                staProtocol.setUpcontactErr(status[7]);
+//
+//            }
+//        }
+//        OperateResultExOne<byte[]> resultErr3 = siemensS7Net.Read("DB13.400", (short) 3);
+//        if (resultErr3.IsSuccess) {
+//            if (staError1 == null) {
+//                staError1 = new StaError1();
+//            }
+//            boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr3.Content, 0, 3);
+//            staError1.setEMERGENCY_Stop_Core(status[0]);
+//            staError1.setEMERGENCY_STOP1(status[1]);
+//            staError1.setEMERGENCY_STOP2(status[2]);
+//            staError1.setEMERGENCY_STOP3(status[3]);
+//            staError1.setEMERGENCY_STOP4(status[4]);
+//
+//            staError1.setDoor_EMERGENCY_STOP1(status[5]);
+//            staError1.setDoor_EMERGENCY_STOP2(status[6]);
+//            staError1.setDoor_EMERGENCY_STOP3(status[7]);
+//            staError1.setDoor_EMERGENCY_STOP4(status[8]);
+//            staError1.setDoor_EMERGENCY_STOP5(status[9]);
+//            staError1.setDoor_EMERGENCY_STOP6(status[10]);
+//
+//            staError1.setDoor_Open_Err1(status[11]);
+//            staError1.setDoor_Open_Err1(status[12]);
+//            staError1.setDoor_Open_Err1(status[13]);
+//            staError1.setDoor_Open_Err1(status[14]);
+//            staError1.setDoor_Open_Err1(status[15]);
+//            staError1.setDoor_Open_Err1(status[16]);
+//
+//        }
 
 
         if (result.IsSuccess) {
 
-            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), slave.getId()));
 
             // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
             try {
@@ -338,7 +318,7 @@
                 initSite();
                 e.printStackTrace();
                 OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
-                News.error("SiemensDevp"+" - 3"+" - 鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+                News.error("SiemensDevp" + " - 3" + " - 鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
             }
 
         } else {
@@ -357,49 +337,30 @@
         ArrayList<Integer> staNos = getStaNo();
         int index = staNos.indexOf(staProtocol.getSiteId());
 
-        if(index >= 24){
-            index = 76 + index;
-        }
-
         OperateResult write = null;
         OperateResult write1 = null;
         //浠诲姟涓嬪彂娆℃暟
         int writeCount = 0;
         do {
-            write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+            write = siemensS7Net.Write("DB100." + index * 4, staProtocol.getWorkNo().shortValue());    // 宸ヤ綔鍙�
             Thread.sleep(200);
-            write1 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo().shortValue());    // 鐩爣绔�
-            if(write.IsSuccess && write1.IsSuccess){
+            write1 = siemensS7Net.Write("DB100." + (index * 4 + 2), staProtocol.getStaNo().shortValue());    // 鐩爣绔�
+            if (write.IsSuccess && write1.IsSuccess) {
                 log.error("鍐欏叆杈撻�佺嚎鍛戒护鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                 break;
-            }
-            else {
+            } else {
                 writeCount++;
                 log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
             }
-        }while (writeCount<5);
+        } while (writeCount < 5);
 
         if (!write.IsSuccess) {
             staProtocol = station.get(staProtocol.getSiteId());
-            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
+            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() == 0) {
                 staProtocol.setPakMk(true);
             }
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
-            News.error("SiemensDevp"+" - 4"+" - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
-        } else {
-            //dang 101,201zhan xaifazhiling qingchu tiaoxingsaomaolide shuju shanchu
-            if (staProtocol.getSiteId()==101){
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 1);
-                log.info("qingchutiaoma,{}",barcodeThread.getBarcode());
-                barcodeThread.clearBarcode();
-            }
-            if (staProtocol.getSiteId()==201){
-                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 2);
-                log.info("qingchutiaoma,{}",barcodeThread.getBarcode());
-                barcodeThread.clearBarcode();
-            }
-            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
-            News.info("SiemensDevp"+" - 5"+" - 杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+            News.error("SiemensDevp" + " - 4" + " - 鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
         }
     }
 
@@ -408,7 +369,7 @@
         if (this.ioModeOf2F != IoModeType.NONE) {
             if (!siemensS7Net.Write("DB100.180", this.ioModeOf2F.id).IsSuccess) {
                 OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
-                News.error("SiemensDevp"+" - 6"+" - 鍐欏叆杈撻�佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+                News.error("SiemensDevp" + " - 6" + " - 鍐欏叆杈撻�佺嚎2F鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
             }
         }
     }
@@ -416,7 +377,7 @@
     /**
      * 蹇冭烦
      */
-    private void heartbeat(){
+    private void heartbeat() {
         if (heartBeatVal == 1) {
             heartBeatVal = 2;
         } else {
@@ -424,7 +385,7 @@
         }
         OperateResult write = siemensS7Net.Write("DB100.50", heartBeatVal);
         if (!write.IsSuccess) {
-            News.error("SiemensDevp"+" - 7"+" - 杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
+            News.error("SiemensDevp" + " - 7" + " - 杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId());
         }
     }
 
@@ -447,14 +408,14 @@
     public static void main(String[] args) {
         System.out.println(staNos1.indexOf(129));
         System.out.println(staNos1.size());
-        for (int i = 0; i<staNos1.size(); i++) {
+        for (int i = 0; i < staNos1.size(); i++) {
 //            System.out.println(i*2);
 //            System.out.println(i*2 + 200);
 //            System.out.println(i);
         }
         int index = staNos1.indexOf(128);
-        System.out.println(index*2);
-        System.out.println(index*2 + 200);
+        System.out.println(index * 2);
+        System.out.println(index * 2 + 200);
     }
 
 //    public static void main(String[] args) throws Exception {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 4bc3220..7266381 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -161,15 +161,15 @@
   # 杈撻�佺嚎1
   devp[0]:
     id: 1
-    ip: 10.10.10.140
+    ip: 10.10.10.191
     port: 102
     rack: 0
     slot: 0
     # 鍏ュ簱鍙�1
     inSta[0]:
-      staNo: 1004
+      staNo: 1007
       barcode: ${wcs-slave.barcode[0].id}
-      backSta: 1004
+      backSta: 1007
       led: ${wcs-slave.led[0].id}
 #    # 鍏ュ簱鍙�1
 #    inSta[1]:
@@ -209,7 +209,7 @@
   # 鏉$爜鎵弿浠�1
   barcode[0]:
     id: 1
-    ip: 10.10.10.143
+    ip: 10.10.10.194
     port: 51236
   # 鏉$爜鎵弿浠�2
   barcode[1]:
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 7921056..2e00bbc 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -5,6 +5,7 @@
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkMast">
         <id column="wrk_no" property="wrkNo" />
+        <id column="plc_wrk_no" property="plcWrkNo" />
         <result column="inv_wh" property="invWh" />
         <result column="ymd" property="ymd" />
         <result column="mk" property="mk" />
@@ -190,6 +191,6 @@
     </select>
     <select id="selectByWrkNo" resultMap="BaseResultMap">
         select * from asr_wrk_mast
-        where wrk_no = #{wrkNo}
+        where plc_wrk_no = #{wrkNo} and wrk_sts = 108
     </select>
 </mapper>

--
Gitblit v1.9.1