From e98d4b1133ed058bfe1e6af75be9975aebfc32d8 Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期六, 28 三月 2026 16:00:35 +0800
Subject: [PATCH] 最后可运行版本

---
 src/main/java/com/zy/asrs/entity/MesReturn.java             |   20 +
 src/main/java/com/zy/asrs/controller/SiteController.java    |    4 
 src/main/java/com/zy/asrs/entity/TransParent.java           |    3 
 src/main/java/com/zy/asrs/controller/OpenController.java    |   11 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  154 +++++--
 src/main/resources/logback-spring.xml                       |    3 
 src/main/java/com/zy/asrs/entity/RcsTaskContinue.java       |    2 
 src/main/java/com/zy/asrs/entity/AgvTask.java               |    7 
 src/main/java/com/zy/common/model/MatDto.java               |   11 
 src/main/java/com/zy/core/model/protocol/StaProtocol.java   |    2 
 src/main/java/com/zy/asrs/entity/WaitPakin.java             |   34 -
 src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java       |    1 
 src/main/java/com/zy/common/utils/HikUtils.java             |   30 +
 src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java  |  711 +++++++++++++++++++++++++++++++++---
 src/main/java/com/zy/asrs/service/RcsService.java           |    3 
 src/main/java/com/zy/core/MainProcess.java                  |    2 
 src/main/java/com/zy/asrs/entity/BindOrUnbindParam.java     |    9 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   28 +
 src/main/resources/application.yml                          |   92 ++--
 19 files changed, 913 insertions(+), 214 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index c720da5..1bc0192 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -2,6 +2,7 @@
 
 import com.core.common.R;
 import com.zy.asrs.domain.param.ToOutStaParam;
+import com.zy.asrs.entity.BindOrUnbindParam;
 import com.zy.asrs.entity.RcsReporterTask;
 import com.zy.asrs.entity.RcsReturn;
 import com.zy.asrs.service.RcsService;
@@ -68,6 +69,14 @@
 //        log.info("AGV鏀捐揣瀹屾垚锛岀粰绔欑偣鍐�9991宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}", result, task.getStaNo(), task.getTaskNo());
     }
 
-
+    /**
+     * 婊戝潡妫�娴嬪尯鍩熺珯鐐规槸鍚﹁繕鏈夌┖绔欑偣
+     * @param param 闇�瑕佺珯鐐瑰彿鍜岀粦瀹�
+     * @return
+     */
+    @PostMapping("/api/robot/reporter/carrier/BindOrUnbind")
+    public R BindOrUnbind(@RequestBody BindOrUnbindParam param){
+        return rcsService.bindOrUnbind(param);
+    }
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
index 8726646..9c1bdee 100644
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ b/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -80,8 +80,8 @@
             vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 鍏ュ簱鏍囪
             vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 绌烘澘淇″彿
             vo.setStaNo(staProtocol.getStaNo());                // 鐩爣绔�
-//            vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "浣�" : "楂�");     //楂樹綆搴撲綅
-            vo.setLocType1(staProtocol.isHigh() ? "楂�" : "浣�");
+            vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "浣�" : "楂�");     //楂樹綆搴撲綅
+//            vo.setLocType1(staProtocol.isHigh() ? "楂�" : "浣�");
             vo.setEmptyOutType(staProtocol.isEmptyOutType() ? "Y" : "N");
         }
         return R.ok().add(list);
diff --git a/src/main/java/com/zy/asrs/entity/AgvTask.java b/src/main/java/com/zy/asrs/entity/AgvTask.java
index 7c769d9..77b147d 100644
--- a/src/main/java/com/zy/asrs/entity/AgvTask.java
+++ b/src/main/java/com/zy/asrs/entity/AgvTask.java
@@ -343,7 +343,12 @@
     @ApiModelProperty(value= "澶栭儴浠诲姟缂栧彿")
     @TableField("task_no")
     private String taskNo;
-
+    /**
+     * 鏄惁鏄痯da鍙戠殑
+     */
+    @ApiModelProperty(value= "鏄惁鏄疨DA鍙戠殑浠诲姟")
+    @TableField("is_PDA")
+    private String isPda;
     public AgvTask() {}
 
     public String getYmd$(){
diff --git a/src/main/java/com/zy/asrs/entity/BindOrUnbindParam.java b/src/main/java/com/zy/asrs/entity/BindOrUnbindParam.java
new file mode 100644
index 0000000..aaf717d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BindOrUnbindParam.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.entity;
+
+import lombok.Data;
+
+@Data
+public class BindOrUnbindParam {
+    private String carrierCode="666666";
+    private String siteCode;
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/entity/MesReturn.java b/src/main/java/com/zy/asrs/entity/MesReturn.java
new file mode 100644
index 0000000..cb7611d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/MesReturn.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.entity;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+// MES鎺ュ彛杩斿洖缁撴灉
+@Data
+public class MesReturn {
+
+    // 1锛氭垚鍔燂紱2锛氬け璐�
+    @JsonProperty("Success")
+    @JSONField(name = "Success")
+    private String Success;
+    // 澶辫触娑堟伅
+    @JsonProperty("Message")
+    @JSONField(name = "Message")
+    private String Message;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/zy/asrs/entity/RcsTaskContinue.java b/src/main/java/com/zy/asrs/entity/RcsTaskContinue.java
index 77ce0c3..eb14f53 100644
--- a/src/main/java/com/zy/asrs/entity/RcsTaskContinue.java
+++ b/src/main/java/com/zy/asrs/entity/RcsTaskContinue.java
@@ -17,4 +17,6 @@
     // 涓� triggerType 瀵瑰簲鐨勮Е鍙戠紪鍙�
     private String triggerCode;
 
+    //agv鍘傚
+    private String agvFactory;
 }
diff --git a/src/main/java/com/zy/asrs/entity/TransParent.java b/src/main/java/com/zy/asrs/entity/TransParent.java
index 58d5ca8..013667b 100644
--- a/src/main/java/com/zy/asrs/entity/TransParent.java
+++ b/src/main/java/com/zy/asrs/entity/TransParent.java
@@ -33,6 +33,9 @@
     @JSONField(name = "TaskType")
     private String TaskType;
 
+    @JsonProperty("AgvFactory")
+    @JSONField(name = "AgvFactory")
+    private Integer AgvFactory;
     //璇锋眰绫诲瀷
     private String method;
 
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java
index a18b5bf..701cf6b 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -32,32 +32,9 @@
     /**
      * 浠撳簱鍙�
      */
-    @ApiModelProperty(value= "瑙勬牸")
-    private String lgnum;
-
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "鍨嬪彿")
-    private String type;
-
-    /**
-     * 浠撳簱鍙�
-     */
     @ApiModelProperty(value= "鏉$爜")
     private String color;
 
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "鎵瑰彿")
-    private String supplier;
-
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
-    private String warehouse;
 
     /**
      * 浠撳簱鍙�
@@ -72,22 +49,11 @@
     private Double anfme;
 
     /**
-     * 鍗曚綅
-     */
-    @ApiModelProperty(value= "鍗曚綅")
-    private String altme;
-
-    /**
      * 鎵樼洏鏉$爜
      */
     @ApiModelProperty(value= "鎵樼洏鏉$爜")
     private String zpallet;
 
-    /**
-     * 鐢ㄦ埛ID
-     */
-    @ApiModelProperty(value= "瀹㈡埛鍚嶇О")
-    private String bname;
 
     @ApiModelProperty(value= "搴撲綅鍙�")
     @TableField("loc_no")
diff --git a/src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java b/src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java
index 6a0784a..c6394c9 100644
--- a/src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java
+++ b/src/main/java/com/zy/asrs/enums/RcsRetMethodEnum.java
@@ -13,6 +13,7 @@
 
     APPLY_PUT("applyPut", "鏀捐揣鐢宠"),
     TASK_END("end", "浠诲姟瀹屾垚"),
+    APPLY_IN_OFF_STATION("applyInOffStation", "鍙栬揣绂荤珯璇锋眰"),
     APPLY_PICK("applyPick", "鍙栬揣鐢宠"),
     PICK_COMPLETE("pickComplete", "rcs鍙栬揣瀹屾垚锛屽凡閫�鍑鸿緭閫佺嚎");
 
diff --git a/src/main/java/com/zy/asrs/service/RcsService.java b/src/main/java/com/zy/asrs/service/RcsService.java
index 0866675..e0c1877 100644
--- a/src/main/java/com/zy/asrs/service/RcsService.java
+++ b/src/main/java/com/zy/asrs/service/RcsService.java
@@ -1,10 +1,13 @@
 package com.zy.asrs.service;
 
+import com.core.common.R;
+import com.zy.asrs.entity.BindOrUnbindParam;
 import com.zy.asrs.entity.RcsReporterTask;
 import com.zy.asrs.entity.RcsReturn;
 
 public interface RcsService {
 
+    R bindOrUnbind (BindOrUnbindParam param);
     /**
      * 2.2.1浠诲姟鎵ц鍥為
      *
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 d4d3e98..2617ed5 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.BasCrnErrorMapper;
@@ -95,6 +96,8 @@
     private ConfigService configService;
     @Autowired
     private RedisUtil redisUtil;
+    @Autowired
+    private RcsService rcsService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -120,7 +123,7 @@
                 }
 
                 // 鑾峰彇鍏ュ簱绔欎俊鎭�
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                  SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                 if (staProtocol == null) {
                     continue;
@@ -264,9 +267,23 @@
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
 
+                        // 杈撳嚭搴撲綅绫诲瀷淇℃伅
+                        String locTypeStr = locTypeDto.getLocType1() == 1 ? "浣庡簱浣�" : "楂樺簱浣�";
+                        log.info("[鍏ュ簱搴撲綅鍒嗛厤] 妫�娴嬪埌" + locTypeStr + "锛屽紑濮嬪垎閰嶅搴斿簱浣�");
+
                         SearchLocParam param = new SearchLocParam();
                         param.setBarcode(barcode);
-                        param.setIoType(1);
+
+                        WaitPakin waitPakin = new WaitPakin();
+                        List<WaitPakin> waitPakinList = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>()
+                                .eq("zpallet", param.getBarcode())
+                        );
+                        if (waitPakinList.isEmpty()) {
+                            param.setIoType(10);
+                        } else {
+                            param.setIoType(1);
+                        }
+
                         param.setSourceStaNo(inSta.getStaNo());
                         param.setLocType1(locTypeDto.getLocType1());
                         String response = new HttpHandler.Builder()
@@ -510,6 +527,10 @@
 
                         try {
                             LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+                            // 杈撳嚭搴撲綅绫诲瀷淇℃伅
+                            String locTypeStr = locTypeDto.getLocType1() == 1 ? "浣庡簱浣�" : "楂樺簱浣�";
+                            log.info("[鍏ュ簱搴撲綅鍒嗛厤] 妫�娴嬪埌" + locTypeStr + "锛屽紑濮嬪垎閰嶅搴斿簱浣�");
 
                             SearchLocParam param = new SearchLocParam();
                             param.setBarcode(wrkMast.getBarcode());
@@ -1109,9 +1130,9 @@
                 }
             }
             String ip = "";
-            if (wrkMast.getStaNo()==401){
+            if (wrkMast.getStaNo() == 401) {
                 ip = "172.26.4.231";
-            }else if (wrkMast.getStaNo()==402){
+            } else if (wrkMast.getStaNo() == 402) {
                 ip = "172.26.4.232";
             }else if (wrkMast.getStaNo()==307){
                 ip = "172.26.1.231";
@@ -1267,9 +1288,44 @@
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     //鍒ゆ柇鏄惁鏈夋鍦ㄦ墽琛屼腑鐨凙GV浠诲姟
-                    List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("source_sta_no", staProtocol.getSiteId()));
+                    List<AgvTask> agvTasks = agvTaskService.selectList(new EntityWrapper<AgvTask>().eq("wrk_sts", 302).eq("sta_no", String.valueOf(staProtocol.getSiteId())));
                     if (agvTasks != null && agvTasks.size() > 0) {
                         continue;
+                    }
+
+                    //绔欑偣涓�401鎴栬��402鏃讹紝浠诲姟澶囨敞涓篞鏃跺垽鏂鍖哄煙涓渶澶栦晶绔欑偣鏄惁鑳界粦瀹�
+                    //鑳界粦瀹氳鏄庣珯鐐逛负绌猴紝鍙互缁х画鍑哄簱
+                    //绔欑偣缁戝畾澶辫触鍒欒鏄庡尯鍩熸弧浜�
+                    if (staProtocol.getSiteId()==401||staProtocol.getSiteId()==402) {
+                        BindOrUnbindParam bindOrUnbindParam = new BindOrUnbindParam();
+                        String staNo1="LZP10";
+                        String staNo2="LZP11";
+                        if (wrkMast.getMemo().equals("Q-L2")){
+                            staNo1="LZP15";
+                            staNo2="LZP16";
+                        }else if (wrkMast.getMemo().equals("Q-L3")){
+                            staNo1="LZP20";
+                            staNo2="LZP21";
+                        }else if (wrkMast.getMemo().equals("Q-L4")){
+                            staNo1="LZP26";
+                            staNo2="LZP26";
+                        }else if (wrkMast.getMemo().equals("Q-L5")){
+                            staNo1="LZP30";
+                            staNo2="LZP31";
+                        }
+                        bindOrUnbindParam.setSiteCode(staNo1);
+                        R r = rcsService.bindOrUnbind(bindOrUnbindParam);
+                        if (r != null && r.get("code").equals(200)) {
+
+                        }else {
+                            bindOrUnbindParam.setSiteCode(staNo2);
+                            r = rcsService.bindOrUnbind(bindOrUnbindParam);
+                            if (r != null && r.get("code").equals(200)) {
+
+                            }else{
+                                continue;
+                            }
+                        }
                     }
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
                     if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
@@ -1894,6 +1950,10 @@
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
 
+                        // 杈撳嚭搴撲綅绫诲瀷淇℃伅
+                        String locTypeStr = locTypeDto.getLocType1() == 1 ? "浣庡簱浣�" : "楂樺簱浣�";
+                        log.info("[鍏ュ簱搴撲綅鍒嗛厤] 妫�娴嬪埌" + locTypeStr + "锛屽紑濮嬪垎閰嶅搴斿簱浣�");
+
                         SearchLocParam param = new SearchLocParam();
                         param.setIoType(10);
                         param.setSourceStaNo(emptyInSta.getStaNo());
@@ -2084,12 +2144,12 @@
                     staProtocol = staProtocol.clone();
                 }
                 // 鑾峰彇宸ヤ綔妗f暟鎹�
-                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",staProtocol.getWorkNo()));
 //                if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
                 if (null == wrkMast) {
                     continue;
                 }
-                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
+                News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�:鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�");
                 wrkMasts.add(wrkMast);
                 // 缁勮鍛戒护
                 LedCommand ledCommand = new LedCommand();
@@ -2097,12 +2157,12 @@
                 ledCommand.setIoType(wrkMast.getIoType());
                 // 鍑哄簱妯″紡
                 switch (wrkMast.getIoType()) {
-                    case 1:
-                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
-                        break;
-                    case 10:
-                        ledCommand.setTitle("绌烘澘鍏ュ簱");
-                        break;
+//                    case 1:
+//                        ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+//                        break;
+//                    case 10:
+//                        ledCommand.setTitle("绌烘澘鍏ュ簱");
+//                        break;
                     case 101:
                         ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
                         break;
@@ -2119,40 +2179,45 @@
                         ledCommand.setTitle("绌烘澘鍑哄簱");
                         ledCommand.setEmptyMk(true);
                         break;
-                    case 53:
-                        ledCommand.setTitle("鎷f枡鍏ュ簱");
-                        break;
-                    case 57:
-                        ledCommand.setTitle("鐩樼偣鍏ュ簱");
-                        break;
-                    case 54:
-                        ledCommand.setTitle("骞舵澘鍏ュ簱");
-                        break;
+//                    case 53:
+//                        ledCommand.setTitle("鎷f枡鍏ュ簱");
+//                        break;
+//                    case 57:
+//                        ledCommand.setTitle("鐩樼偣鍏ュ簱");
+//                        break;
+//                    case 54:
+//                        ledCommand.setTitle("骞舵澘鍏ュ簱");
+//                        break;
                     default:
-                        News.error(""+mark+" - 1"+" - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+                        //News.error("" + mark + " - 1" + " - 浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                 ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
+                ledCommand.setBarcode(wrkMast.getBarcode());
 //                ledCommand.setSourceStaNo(wrkMast.getSourceStaNo());
                 if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
-                    try{
-                        if (wrkMast.getIoType()>100){
-                            for (WrkDetl wrkDetl : wrkDetls){
+                    try {
+                        if (wrkMast.getIoType() > 100) {
+                            for (WrkDetl wrkDetl : wrkDetls) {
                                 LocDetl locDetl = locDetlService.selectMatnrSpecs(wrkDetl.getMatnr(), wrkDetl.getSpecs(), wrkMast.getSourceLocNo());
-                                wrkDetl.setWeight(locDetl.getAnfme());
+                                if (Cools.isEmpty(locDetl)) {
+                                    wrkDetl.setWeight(0.0);
+                                }else {
+                                    wrkDetl.setWeight(locDetl.getAnfme());
+                                }
                             }
-                        }else {
-                            for (WrkDetl wrkDetl : wrkDetls){
+                        } else {
+                            for (WrkDetl wrkDetl : wrkDetls) {
                                 wrkDetl.setWeight(wrkDetl.getAnfme());
                             }
                         }
-                    }catch (Exception e){
-                        log.error("宸ヤ綔妗f鏄庣粏杈撳叆鐢佃鏈哄け璐�1锛氬紓甯镐俊鎭�==銆�"+e);
+                    } catch (Exception e) {
+                        log.error("宸ヤ綔妗f鏄庣粏杈撳叆鐢佃鏈哄け璐�1锛氬紓甯镐俊鎭�==銆�" + e);
                     }
-                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(),wrkDetl.getWeight(),wrkDetl.getSpecs(),wrkDetl.getSku())));
+                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getWeight(), wrkDetl.getSpecs(), wrkDetl.getSku(),wrkDetl.getZpallet())));
                 }
                 commands.add(ledCommand);
             }
@@ -2163,31 +2228,12 @@
             if (CollectionUtils.equals(ledThread.getWorkNos(), workNos)) {
                 continue;
             }
-//             鍛戒护涓嬪彂 -------------------------------------------------------------------------------
-//            if (!commands.isEmpty()) {
-//                if (led.getId() < 7) {
-//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
-//                        News.error(""+mark+" - 2"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                        continue;
-//                    } else {
-//                        ledThread.setLedMk(false);
-//                    }
-//                } else {
-//                    if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) {
-//                        News.error(""+mark+" - 3"+" - {}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
-//                        continue;
-//                    } else {
-//                        ledThread.setLedMk(false);
-//                    }
-//                }
-//
-//            }
             // 鍛戒护涓嬪彂 -------------------------------------------------------------------------------
             if (!commands.isEmpty()) {
                 if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, commands))) {
                     News.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
                     continue;
-                }else {
+                } else {
                     ledThread.setLedMk(false);
                 }
             }
@@ -2198,7 +2244,7 @@
                     wrkMast.setOveMk("Y");
                     wrkMast.setModiTime(new Date());
                     if (wrkMastMapper.updateById(wrkMast) == 0) {
-                        News.errorNoLog(""+mark+" - 4"+" - 鏇存柊宸ヤ綔妗eけ璐�");
+                        News.errorNoLog("" + mark + " - 4" + " - 鏇存柊宸ヤ綔妗eけ璐�");
                         throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
                     }
                 }
@@ -2212,7 +2258,7 @@
             }
 
         }
-        News.infoNoLog(""+mark+" - 0"+" - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
+        News.infoNoLog("" + mark + " - 0" + " - 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣ㄦ墽琛屽畬鎴�");
     }
 
     /**
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
index 2ef3390..ae6c3c0 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -1,9 +1,11 @@
 package com.zy.asrs.service.impl;
 
 import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.R;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.enums.RcsRetMethodEnum;
 import com.zy.asrs.service.AgvTaskService;
@@ -33,9 +35,19 @@
 @Slf4j
 @Service
 public class RcsServiceImpl implements RcsService {
+
+    @Value("${mes.url}")
+    public String MES_URL;
+
     // 娴峰悍RCS鍦板潃
     @Value("${hik.url}")
     private String HIK_URL;
+    // 浜哄憳鍏ヤ镜绯荤粺妫�鏌�
+    @Value("${hik.renyuan}")
+    private String HIK_RENYUAN;
+    // 涓嶉渶瑕佸彂閫乪nd鐨勭珯鐐�
+    @Value("${hik.station}")
+    private String HIK_STATION;
 
     @Autowired
     private AgvTaskService taskService;
@@ -65,23 +77,29 @@
         String slotCategory = values.getString("slotCategory");
         String slotCode = values.getString("slotCode");
         EntityWrapper<AgvTask> wrapper = new EntityWrapper<>();
-        wrapper.eq("task_no", robotTaskCode);
+        // 淇敼鍚庣殑閫昏緫锛氭湁"-"鍒欏幓鎺夋渶鍚庝竴涓�"-"鍙婂悗闈㈠唴瀹癸紝娌℃湁鍒欎繚鎸佸師鏍�
+        String taskNo = rcsReporterTask.getRobotTaskCode();
+        if (taskNo.contains("-")) {
+            taskNo = taskNo.substring(0, taskNo.lastIndexOf("-"));
+        }
+        wrapper.eq("task_no", taskNo);
         AgvTask task = taskService.selectOne(wrapper);
         if (!Cools.isEmpty(task)) {
             try {
                 switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
                     //鏀捐揣鐢宠
                     case APPLY_PUT: {
-                        Integer sourceStaNo = Integer.valueOf(task.getStaNo());
-                        SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                        StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
-                        //wcs鍙嶉rcs缁х画鎵ц
-                        if (staProtocol != null && !staProtocol.isLoading() && !staProtocol.isEmptyOutType()) {
-                                if(task.getTaskType().equals("AGV琛ョ┖鏂欐灦")){
+                        if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) {
+                            Integer sourceStaNo = Integer.valueOf(task.getStaNo());
+                            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
+                            //wcs鍙嶉rcs缁х画鎵ц
+                            if (staProtocol != null && !staProtocol.isLoading() && !staProtocol.isEmptyOutType()) {
+                                if (task.getTaskType().equals("AGV琛ョ┖鏂欐灦")) {
                                     RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
-                                    rcsTaskContinue.setRobotTaskCode(task.getTaskNo()+"-"+(task.getCtnType()-1));
+                                    rcsTaskContinue.setRobotTaskCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                                     rcsTaskContinue.setTriggerType("TASK");
-                                    rcsTaskContinue.setTriggerCode(task.getTaskNo()+"-"+(task.getCtnType()-1));
+                                    rcsTaskContinue.setTriggerCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
 
                                     String url = HIK_URL + "api/robot/controller/task/extend/continue";
                                     String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
@@ -94,7 +112,7 @@
                                     JSONObject data = new JSONObject();
                                     data.put("robotTaskCode", robotTaskCode);
                                     rcsReturn.setData(data);
-                                }else {
+                                } else {
                                     //鍑哄彂PLC绔欑偣鐨勬壂鐮佸櫒鎵爜
                                     boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(3, staProtocol));
                                     if (result) {
@@ -106,9 +124,10 @@
                                         data.put("robotTaskCode", robotTaskCode);
                                         rcsReturn.setData(data);
                                         RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
-                                        rcsTaskContinue.setRobotTaskCode(task.getTaskNo()+"-"+(task.getCtnType()-1));
+                                        rcsTaskContinue.setAgvFactory("1");
+                                        rcsTaskContinue.setRobotTaskCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                                         rcsTaskContinue.setTriggerType("TASK");
-                                        rcsTaskContinue.setTriggerCode(task.getTaskNo()+"-"+(task.getCtnType()-1));
+                                        rcsTaskContinue.setTriggerCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
 
                                         String url = HIK_URL + "api/robot/controller/task/extend/continue";
                                         String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
@@ -124,36 +143,38 @@
                                         rcsReturn.setData(data);
                                     }
                                 }
-                        }
-                    }
-                    break;
+                            }
+                        } else {
+                            TransParent transParent = new TransParent();
+                            transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setStationId(task.getStaNo());
+                            transParent.setAgvFactory(1);
+                            transParent.setAgvCode("1");//杩炴帴鍣ㄥ簱
+                            //08-1鏄┖鎵樼洏杞簭浠诲姟
+                            //08-2鏄墿鏂欒浆搴忎换鍔�
+                            if (task.getTaskType().equals("ZX-AGV-08-1")) {
+                                transParent.setTransType("08-1");
+                            } else if (task.getTaskType().equals("ZX-AGV-08-2")) {
+                                transParent.setTransType("08-2");
+                            } else if (task.getTaskType().equals("PP-AGV")) {
+                                transParent.setTransType("10");
+                            } else if (task.getTaskType().equals("ZP-AGV")) {
+                                transParent.setTransType("11");
+                            }
+                            int i = applyInStation(transParent);
 
-                    //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑
-                    case TASK_END: {
-                        Integer sourceStaNo = Integer.valueOf(task.getStaNo());
-                        SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                        StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
-                        Boolean boo=false;
-                        Short wrkNo = 9991;
-                        //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑 --銆嬬粰PLC绔欑偣鍐�9991宸ヤ綔鍙�
-                        //琛ョ┖鏂欐灦 --銆媋gv宸茬粡绔嬪簱 --銆嬬粰PLC绔欑偣鍐�9995宸ヤ綔鍙�
-                        if(task.getTaskType().equals("AGV琛ョ┖鏂欐灦") && staProtocol != null && !staProtocol.isLoading() && staProtocol.isEmptyOutType() && staProtocol.getWorkNo() == 0){
-                            boo=true;
-                            wrkNo = 9995;
-                        }else if(!task.getTaskType().equals("AGV琛ョ┖鏂欐灦") && staProtocol != null && staProtocol.isLoading() && staProtocol.isEmptyOutType() && staProtocol.getWorkNo() == 0){
-                            boo=true;
-                        }
-                        if (boo) {
-                            staProtocol.setWorkNo(wrkNo);//绌烘枡鏋跺埌浣嶄俊鍙风偣
-                            staProtocol.setStaNo(Short.valueOf("0"));
-                            boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(2, staProtocol));
-                            log.info("AGV鏀捐揣瀹屾垚锛岀粰绔欑偣鍐�9991宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}", result, task.getStaNo(), task.getTaskNo());
-                            if (result) {
-                                // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
-                                task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
-                                task.setModiTime(new Date());
-                                taskService.updateById(task);
-                                // 杩斿洖RCS
+                            if (HIK_RENYUAN.contains(task.getStaNo())){
+                                // 寤惰繜澶勭悊锛岀‘淇濆埌绔欏畬鎴愪俊鍙蜂紭鍏堝鐞�
+                                try {
+                                    Thread.sleep(20000); // 鐫$湢20绉�
+                                } catch (InterruptedException e)
+                                {
+                                    Thread.currentThread().interrupt();
+                                }
+                            }
+
+                            if (i == 1) {
                                 rcsReturn.setCode("SUCCESS");
                                 rcsReturn.setMessage("");
                                 JSONObject data = new JSONObject();
@@ -167,34 +188,224 @@
                                 data.put("robotTaskCode", robotTaskCode);
                                 rcsReturn.setData(data);
                             }
-                        }else {
+                        }
+
+                    }
+                    break;
+
+                    //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑
+                    case TASK_END: {
+                        if (task.getIsPda()!=null && task.getIsPda().equals("Y")){
+                            // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+                            task.setWrkSts(305L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                            task.setModiTime(new Date());
+                            taskService.updateById(task);
                             // 杩斿洖RCS
-                            rcsReturn.setCode("Err_Internal");
+                            rcsReturn.setCode("SUCCESS");
                             rcsReturn.setMessage("");
                             JSONObject data = new JSONObject();
                             data.put("robotTaskCode", robotTaskCode);
                             rcsReturn.setData(data);
                         }
+                        if (task.getStaNo().equals("Q-E2") || task.getStaNo().equals("Q-E3") || HIK_STATION.contains(task.getStaNo())){
+                            // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+                            task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                            task.setModiTime(new Date());
+                            taskService.updateById(task);
+                            // 杩斿洖RCS
+                            rcsReturn.setCode("SUCCESS");
+                            rcsReturn.setMessage("");
+                            JSONObject data = new JSONObject();
+                            data.put("robotTaskCode", robotTaskCode);
+                            rcsReturn.setData(data);
+                        }
+                         else if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) {
+                            Integer sourceStaNo = Integer.valueOf(task.getStaNo());
+                            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
+                            Boolean boo = false;
+                            Short wrkNo = 9991;
+                            if (task.getStaNo().equals("307")) {
+                                wrkNo = 9997;
+                            }
+
+                            //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑 --銆嬬粰PLC绔欑偣鍐�9991宸ヤ綔鍙�
+                            //琛ョ┖鏂欐灦 --銆媋gv宸茬粡绔嬪簱 --銆嬬粰PLC绔欑偣鍐�9995宸ヤ綔鍙�
+                            if (task.getTaskType().equals("AGV琛ョ┖鏂欐灦") && staProtocol != null && !staProtocol.isLoading() && staProtocol.isEmptyOutType() && staProtocol.getWorkNo() == 0) {
+                                boo = true;
+                                wrkNo = 9998;
+                            } else if (!task.getTaskType().equals("AGV琛ョ┖鏂欐灦") && staProtocol != null && staProtocol.isLoading() && staProtocol.isEmptyOutType()) {
+                                boo = true;
+                            }
+                            if (boo) {
+                                staProtocol.setWorkNo(wrkNo);//绌烘枡鏋跺埌浣嶄俊鍙风偣
+                                staProtocol.setStaNo(Short.valueOf("0"));
+                                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(2, staProtocol));
+                                log.info("AGV鏀捐揣瀹屾垚锛岀粰绔欑偣鍐�9991宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}", result, task.getStaNo(), task.getTaskNo());
+                                if (result) {
+                                    // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+                                    task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                                    task.setModiTime(new Date());
+                                    taskService.updateById(task);
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("SUCCESS");
+                                    rcsReturn.setMessage("");
+
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                } else {
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("Err_Internal");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                }
+                            } else {
+                                // 杩斿洖RCS
+                                rcsReturn.setCode("Err_Internal");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            }
+                        } else {
+                            TransParent transParent = new TransParent();
+                            transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setStationId(task.getStaNo());
+                            transParent.setAgvFactory(1);
+                            transParent.setAgvCode("1");//杩炴帴鍣ㄥ簱
+                            //08-1鏄┖鎵樼洏杞簭浠诲姟
+                            //08-2鏄墿鏂欒浆搴忎换鍔�
+                            if (task.getTaskType().equals("ZX-AGV-08-1")) {
+                                transParent.setTransType("08-1");
+                            } else if (task.getTaskType().equals("ZX-AGV-08-2")) {
+                                transParent.setTransType("08-2");
+                            } else if (task.getTaskType().equals("PP-AGV")) {
+                                transParent.setTransType("10");
+                            } else if (task.getTaskType().equals("ZP-AGV")) {
+                                transParent.setTransType("11");
+                            }
+                            //鏀捐揣绂诲紑绔欑偣
+                            int i = AGVDepartureCompleted(transParent);
+                            if (i == 1) {
+                                // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+                                task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                                task.setModiTime(new Date());
+                                taskService.updateById(task);
+                                rcsReturn.setCode("SUCCESS");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            } else {
+                                // 杩斿洖RCS
+                                rcsReturn.setCode("Err_Internal");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            }
+                        }
                     }
                     break;
                     //rcs璇锋眰wms鍙栬揣鐢宠
                     case APPLY_PICK: {
-                        Integer sourceStaNo = Integer.valueOf(task.getSourceStaNo());
-                        SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                        StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
-                        //鍒ゆ柇绔欑偣鏄惁鏈夋枡鏋跺拰鎵樼洏
-                        if (staProtocol != null && (staProtocol.isLoading()||task.getTaskType().equals("AGV绌烘枡鏋跺洖缂撳瓨鍖�"))
-                                && staProtocol.isEmptyOutType()) {
-                            RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
-                            rcsTaskContinue.setRobotTaskCode(task.getTaskNo()+"-"+(task.getCtnType()-1));
-                            rcsTaskContinue.setTriggerType("TASK");
-                            rcsTaskContinue.setTriggerCode(task.getTaskNo()+"-"+(task.getCtnType()-1));
+                        if (task.getSourceStaNo().equals("401") || task.getSourceStaNo().equals("402") || task.getSourceStaNo().equals("307")) {
+                            Integer sourceStaNo = Integer.valueOf(task.getSourceStaNo());
+                            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
+                            //鍒ゆ柇绔欑偣鏄惁鏈夋枡鏋跺拰鎵樼洏
+                            if (staProtocol != null && (staProtocol.isLoading() || task.getTaskType().equals("AGV绌烘枡鏋跺洖缂撳瓨鍖�"))
+                                    && staProtocol.isEmptyOutType()) {
+                                RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+                                rcsTaskContinue.setRobotTaskCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                                rcsTaskContinue.setTriggerType("TASK");
+                                rcsTaskContinue.setTriggerCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
 
-                            String url = HIK_URL + "api/robot/controller/task/extend/continue";
-                            String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
-                            if (!StringUtils.isEmpty(response) && response.contains("code")) {
-                                RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
-                                if ("200".equals(rcsReturn1.getCode())) {
+                                String url = HIK_URL + "api/robot/controller/task/extend/continue";
+                                String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
+                                if (!StringUtils.isEmpty(response) && response.contains("code")) {
+                                    RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
+                                    if ("SUCCESS".equals(rcsReturn1.getCode())) {
+                                        // 杩斿洖RCS
+                                        rcsReturn.setCode("SUCCESS");
+                                        rcsReturn.setMessage("");
+                                        JSONObject data = new JSONObject();
+                                        data.put("robotTaskCode", robotTaskCode);
+                                        rcsReturn.setData(data);
+                                    } else {
+                                        // 杩斿洖RCS
+                                        rcsReturn.setCode("Err_Internal");
+                                        rcsReturn.setMessage("");
+                                        JSONObject data = new JSONObject();
+                                        data.put("robotTaskCode", robotTaskCode);
+                                        rcsReturn.setData(data);
+                                    }
+                                }
+                            }
+                        } else {
+                            TransParent transParent = new TransParent();
+                            transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setStationId(task.getSourceStaNo());
+                            transParent.setAgvFactory(1);
+                            transParent.setAgvCode("1");//杩炴帴鍣ㄥ簱
+                            //08-1鏄┖鎵樼洏杞簭浠诲姟
+                            //08-2鏄墿鏂欒浆搴忎换鍔�
+                            if (task.getTaskType().equals("ZX-AGV-08-1")) {
+                                transParent.setTransType("08-1");
+                            } else if (task.getTaskType().equals("ZX-AGV-08-2")) {
+                                transParent.setTransType("08-2");
+                            } else if (task.getTaskType().equals("PP-AGV")) {
+                                transParent.setTransType("10");
+                            } else if (task.getTaskType().equals("ZP-AGV")) {
+                                transParent.setTransType("11");
+                            }
+                            int i = applyInStation(transParent);
+
+                            if (HIK_RENYUAN.contains(task.getStaNo())){
+                                // 寤惰繜澶勭悊锛岀‘淇濆埌绔欏畬鎴愪俊鍙蜂紭鍏堝鐞�
+                                try {
+                                    Thread.sleep(20000); // 鐫$湢20绉�
+                                } catch (InterruptedException e)
+                                {
+                                    Thread.currentThread().interrupt();
+                                }
+                            }
+
+                            if (i == 1) {
+                                rcsReturn.setCode("SUCCESS");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            } else {
+                                // 杩斿洖RCS
+                                rcsReturn.setCode("Err_Internal");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            }
+                        }
+                    }
+                    break;
+                    //rcs鍙栬揣瀹屾垚锛屽凡閫�鍑鸿緭閫佺嚎
+                    case PICK_COMPLETE: {
+                        if (task.getSourceStaNo().equals("401") || task.getSourceStaNo().equals("402") || task.getSourceStaNo().equals("307")) {
+                            Integer sourceStaNo = Integer.valueOf(task.getSourceStaNo());
+                            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                            StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
+                            //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑 --銆嬬粰PLC绔欑偣鍐�9991宸ヤ綔鍙�
+                            if (staProtocol != null && !staProtocol.isLoading() && !staProtocol.isEmptyOutType()) {
+                                staProtocol.setWorkNo((short) 0);
+                                staProtocol.setStaNo((short) 0);
+                                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(2, staProtocol));
+                                log.info("AGV鍙栬揣瀹屾垚锛岀粰绔欑偣鍐�0宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}", result, task.getStaNo(), task.getTaskNo());
+                                if (result) {
                                     // 杩斿洖RCS
                                     rcsReturn.setCode("SUCCESS");
                                     rcsReturn.setMessage("");
@@ -210,22 +421,27 @@
                                     rcsReturn.setData(data);
                                 }
                             }
-                        }
-                    }
-                    break;
-                    //rcs鍙栬揣瀹屾垚锛屽凡閫�鍑鸿緭閫佺嚎
-                    case PICK_COMPLETE: {
-                        Integer sourceStaNo = Integer.valueOf(task.getSourceStaNo());
-                        SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-                        StaProtocol staProtocol = siemensDevpThread.getStation().get(sourceStaNo).clone();
-                        //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑 --銆嬬粰PLC绔欑偣鍐�9991宸ヤ綔鍙�
-                        if (staProtocol != null && !staProtocol.isLoading() && !staProtocol.isEmptyOutType()) {
-                            staProtocol.setWorkNo((short) 0);
-                            staProtocol.setStaNo((short) 0);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(2, staProtocol));
-                            log.info("AGV鍙栬揣瀹屾垚锛岀粰绔欑偣鍐�0宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}", result, task.getStaNo(), task.getTaskNo());
-                            if (result) {
-                                // 杩斿洖RCS
+                        } else {
+                            TransParent transParent = new TransParent();
+                            transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setStationId(task.getSourceStaNo());
+                            transParent.setAgvFactory(1);
+                            transParent.setAgvCode("1");//杩炴帴鍣ㄥ簱
+                            //08-1鏄┖鎵樼洏杞簭浠诲姟
+                            //08-2鏄墿鏂欒浆搴忎换鍔�
+                            if (task.getTaskType().equals("ZX-AGV-08-1")) {
+                                transParent.setTransType("08-1");
+                            } else if (task.getTaskType().equals("ZX-AGV-08-2")) {
+                                transParent.setTransType("08-2");
+                            } else if (task.getTaskType().equals("PP-AGV")) {
+                                transParent.setTransType("10");
+                            } else if (task.getTaskType().equals("ZP-AGV")) {
+                                transParent.setTransType("11");
+                            }
+                            //鍙栬揣绂诲紑绔欑偣
+                            int i = AGVDepartureCompleted(transParent);
+                            if (i == 1) {
                                 rcsReturn.setCode("SUCCESS");
                                 rcsReturn.setMessage("");
                                 JSONObject data = new JSONObject();
@@ -239,10 +455,205 @@
                                 data.put("robotTaskCode", robotTaskCode);
                                 rcsReturn.setData(data);
                             }
-
                         }
                     }
                     break;
+                    //AGV鍙栬揣绂荤珯璇锋眰
+                    case APPLY_IN_OFF_STATION: {
+                        //濡傛灉鏄珛搴撶珯鐐圭洿鎺ュ厑璁哥绔�
+                        if (task.getSourceStaNo().equals("401") || task.getSourceStaNo().equals("402") || task.getSourceStaNo().equals("307")) {
+                            RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+                            rcsTaskContinue.setRobotTaskCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            rcsTaskContinue.setTriggerType("TASK");
+                            rcsTaskContinue.setTriggerCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+
+                            String url = HIK_URL + "api/robot/controller/task/extend/continue";
+                            String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
+                            if (!StringUtils.isEmpty(response) && response.contains("code")) {
+                                RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
+                                if ("SUCCESS".equals(rcsReturn1.getCode())) {
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("SUCCESS");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                } else {
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("Err_Internal");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                }
+                            }
+                        } else {
+
+                            // 寤惰繜澶勭悊锛岀‘淇濆埌绔欏畬鎴愪俊鍙蜂紭鍏堝鐞�
+                            try {
+                                Thread.sleep(5000); // 鐫$湢5绉�
+                            } catch (InterruptedException e)
+                            {
+                                Thread.currentThread().interrupt();
+                            }
+
+                            //濡傛灉鏄伐浣嶉渶瑕佸儚mes璇锋眰绂荤珯
+                            TransParent transParent = new TransParent();
+                            transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setStationId(values.getString("slotName"));
+                            transParent.setAgvFactory(1);
+                            transParent.setAgvCode("1");//杩炴帴鍣ㄥ簱
+                            //08-1鏄┖鎵樼洏杞簭浠诲姟
+                            //08-2鏄墿鏂欒浆搴忎换鍔�
+                            if (task.getTaskType().equals("ZX-AGV-08-1")) {
+                                transParent.setTransType("08-1");
+                            } else if (task.getTaskType().equals("ZX-AGV-08-2")) {
+                                transParent.setTransType("08-2");
+                            } else if (task.getTaskType().equals("PP-AGV")) {
+                                transParent.setTransType("10");
+                            } else if (task.getTaskType().equals("ZP-AGV")) {
+                                transParent.setTransType("11");
+                            }
+                            int i = applyOutStation(transParent);
+                            if (i == 1) {
+                                rcsReturn.setCode("SUCCESS");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            } else {
+                                // 杩斿洖RCS
+                                rcsReturn.setCode("Err_Internal");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            }
+                        }
+                        break;
+                    }
+                    //AGV鏀捐揣绂荤珯璇锋眰
+                    case APPLY_OFF_STATION: {
+                        //濡傛灉鏄珛搴撶珯鐐圭洿鎺ュ厑璁哥绔�
+                        if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) {
+                            RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+                            rcsTaskContinue.setRobotTaskCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            rcsTaskContinue.setTriggerType("TASK");
+                            rcsTaskContinue.setTriggerCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+
+                            String url = HIK_URL + "api/robot/controller/task/extend/continue";
+                            String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
+                            if (!StringUtils.isEmpty(response) && response.contains("code")) {
+                                RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
+                                if ("SUCCESS".equals(rcsReturn1.getCode())) {
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("SUCCESS");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                } else {
+                                    // 杩斿洖RCS
+                                    rcsReturn.setCode("Err_Internal");
+                                    rcsReturn.setMessage("");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                }
+                            }
+                        } else {
+
+                            // 寤惰繜澶勭悊锛岀‘淇濆埌绔欏畬鎴愪俊鍙蜂紭鍏堝鐞�
+                            try {
+                                Thread.sleep(5000); // 鐫$湢5绉�
+                            } catch (InterruptedException e)
+                            {
+                                Thread.currentThread().interrupt();
+                            }
+
+                            //濡傛灉鏄伐浣嶉渶瑕佸儚mes璇锋眰绂荤珯
+                            TransParent transParent = new TransParent();
+                            transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setStationId(values.getString("slotName"));
+                            transParent.setAgvFactory(1);
+                            transParent.setAgvCode("1");//杩炴帴鍣ㄥ簱
+                            //08-1鏄┖鎵樼洏杞簭浠诲姟
+                            //08-2鏄墿鏂欒浆搴忎换鍔�
+                            if (task.getTaskType().equals("ZX-AGV-08-1")) {
+                                transParent.setTransType("08-1");
+                            } else if (task.getTaskType().equals("ZX-AGV-08-2")) {
+                                transParent.setTransType("08-2");
+                            } else if (task.getTaskType().equals("PP-AGV")) {
+                                transParent.setTransType("10");
+                            } else if (task.getTaskType().equals("ZP-AGV")) {
+                                transParent.setTransType("11");
+                            }
+                            int i = applyOutStation(transParent);
+                            if (i == 1) {
+                                rcsReturn.setCode("SUCCESS");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            } else {
+                                // 杩斿洖RCS
+                                rcsReturn.setCode("Err_Internal");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            }
+                        }
+
+                        break;
+                    }
+                    //鍒扮珯瀹屾垚
+                    case ARRIVE_ON_STATION: {
+                        if ( values.getString("slotName").equals("401") || values.getString("slotName").equals("402") || values.getString("slotName").equals("307")) {
+                            // 杩斿洖RCS
+                            rcsReturn.setCode("SUCCESS");
+                            rcsReturn.setMessage("");
+                            JSONObject data = new JSONObject();
+                            data.put("robotTaskCode", robotTaskCode);
+                            rcsReturn.setData(data);
+                        } else {
+                            TransParent transParent = new TransParent();
+                            transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
+                            transParent.setStationId(values.getString("slotName"));
+                            transParent.setAgvFactory(1);
+                            transParent.setAgvCode("1");//杩炴帴鍣ㄥ簱
+                            //08-1鏄┖鎵樼洏杞簭浠诲姟
+                            //08-2鏄墿鏂欒浆搴忎换鍔�
+                            if (task.getTaskType().equals("ZX-AGV-08-1")) {
+                                transParent.setTransType("08-1");
+                            } else if (task.getTaskType().equals("ZX-AGV-08-2")) {
+                                transParent.setTransType("08-2");
+                            } else if (task.getTaskType().equals("PP-AGV")) {
+                                transParent.setTransType("10");
+                            } else if (task.getTaskType().equals("ZP-AGV")) {
+                                transParent.setTransType("11");
+                            }
+                            int i = AGVArrivalCompletedFit(transParent);
+                            if (i == 1) {
+                                rcsReturn.setCode("SUCCESS");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            } else {
+                                // 杩斿洖RCS
+                                rcsReturn.setCode("Err_Internal");
+                                rcsReturn.setMessage("");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                            }
+                        }
+                        break;
+                    }
 
                     default: {
                     }
@@ -262,6 +673,105 @@
         return rcsReturn;
     }
 
+    /**
+     * 鍒扮珯瀹屾垚锛欰GV鍒拌揪宸ヤ綅閲岄潰--銆媘es鍒颁綅瀹屾垚
+     *
+     * @param apply
+     * @return
+     */
+    public int AGVArrivalCompletedFit(TransParent apply) {
+
+        String url = MES_URL + "AGVArrivalCompletedFit";
+        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
+            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+            if ("1".equals(mesReturn.getSuccess())) {
+                return 1;
+            }
+        }
+
+        return 0;
+    }
+    /**
+     * 绂荤珯瀹屾垚锛歸ms->mes
+     * AGV绂诲紑鎺ラ┏浣嶅悗鍙戦�佺寮�鐘舵�佺粰MES
+     *
+     * @param apply
+     * @return
+     */
+    public int AGVDepartureCompleted(TransParent apply) {
+
+        String url = MES_URL + "AGVDepartureCompleted";
+        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
+            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+            if ("1".equals(mesReturn.getSuccess())) {
+                return 1;
+            }
+        }
+
+        return 0;
+    }
+    /**
+     * 鍏ョ珯璇锋眰锛氳浆鍙慉GV->鍏ョ珯璇锋眰->缁橫ES
+     *
+     * @param apply
+     * @return
+     */
+    public int applyInStation(TransParent apply) {
+        String path = "AGVTransportPalletNotice";
+        String url = MES_URL + path;
+        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
+            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+            if ("1".equals(mesReturn.getSuccess())) {
+                return 1;
+            }
+        }
+
+        return 0;
+    }
+
+    /**
+     * 绂荤珯璇锋眰锛氳浆鍙慉GV->绂荤珯璇锋眰->缁橫ES
+     *
+     * @param apply
+     * @return
+     */
+
+    public int applyOutStation(TransParent apply) {
+
+        String url = MES_URL + "AGVDepartureRequest";
+        String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
+            MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+            if ("1".equals(mesReturn.getSuccess())) {
+                return 1;
+            }
+        }
+
+        return 0;
+    }
+    @Override
+    public R bindOrUnbind (BindOrUnbindParam param) {
+        //1.鍏堣繘琛岀粦瀹�
+        String url = HIK_URL + "api/robot/controller/carrier/bind";
+        String response = sendPost(url, JSONObject.toJSONString(param));
+        if (!StringUtils.isEmpty(response) && response.contains("code")) {
+            RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
+            if ("SUCCESS".equals(rcsReturn1.getCode())) {
+                //2.缁戝畾鎴愬姛锛屽绔欏畾杩涜瑙g粦
+                String url1 = HIK_URL + "api/robot/controller/carrier/unbind";
+                String response1 = sendPost(url, JSONObject.toJSONString(param));
+                return R.ok();
+            } else {
+                R.error("缁戝畾澶辫触锛岃鍖哄煙婊′簡");
+            }
+        }else {
+            return R.error();
+        }
+        return R.ok();
+    }
     /**
      * 鍚戞寚瀹� URL 鍙戦�丳OST鏂规硶鐨勮姹�
      *
@@ -322,4 +832,55 @@
         }
         return result.toString();
     }
+
+
+    public void agvPause(StaProtocol staProtocol){
+        if (staProtocol.isHighError()) {
+            JSONObject params = new JSONObject();
+            if (staProtocol.getSiteId()==402) {
+                params.put("zoneCode", "GK402");
+                params.put("mapCode", "BB");
+                params.put("invoke", "FREEZE");
+                System.out.println("402瓒呴珮鎶ヨ");
+            }else if (staProtocol.getSiteId() == 401){
+                params.put("zoneCode", "GK401");
+                params.put("mapCode", "BB");
+                params.put("invoke", "FREEZE");
+                System.out.println("401瓒呴珮鎶ヨ");
+            }
+            String url = HIK_URL + "api/robot/controller/zone/pause";
+            try {
+                String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(params));
+                JSONObject jsonObject = JSON.parseObject(response);
+                if (!StringUtils.isEmpty(response) && (jsonObject.getString("code").equals("SUCCESS") || jsonObject.getInteger("code") == 200)) {
+                    System.out.println("鏆傚仠鎴愬姛");
+                }
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+        if (!staProtocol.isHighError()) {
+            JSONObject params = new JSONObject();
+            if (staProtocol.getSiteId()==402) {
+                params.put("zoneCode", "GK402");
+                params.put("mapCode", "BB");
+                params.put("invoke", "RUN");
+            }else if (staProtocol.getSiteId() == 401){
+                params.put("zoneCode", "GK401");
+                params.put("mapCode", "BB");
+                params.put("invoke", "RUN");
+                System.out.println("灏濊瘯鍚姩401鍙GV");
+            }
+            String url = HIK_URL + "api/robot/controller/zone/pause";
+            try {
+                String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(params));
+                JSONObject jsonObject = JSON.parseObject(response);
+                if (!StringUtils.isEmpty(response) && (jsonObject.getString("code").equals("SUCCESS") || jsonObject.getInteger("code") == 200)) {
+                    System.out.println("AGV鍚姩鎴愬姛");
+                }
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
 }
diff --git a/src/main/java/com/zy/common/model/MatDto.java b/src/main/java/com/zy/common/model/MatDto.java
index b35f62a..c7a823f 100644
--- a/src/main/java/com/zy/common/model/MatDto.java
+++ b/src/main/java/com/zy/common/model/MatDto.java
@@ -81,4 +81,15 @@
         this.total = total;
         this.sku = sku;
     }
+
+    public MatDto(String matNo, String maktx, Double count,Double total,String specs,String sku,String barcode) {
+        this.specs = specs;
+        this.matnr = matNo;
+        this.maktx = maktx;
+        this.maknx = maktx;
+        this.count = count;
+        this.total = total;
+        this.sku = sku;
+        this.barcode = barcode;
+    }
 }
diff --git a/src/main/java/com/zy/common/utils/HikUtils.java b/src/main/java/com/zy/common/utils/HikUtils.java
index b8f5e4d..9ffd902 100644
--- a/src/main/java/com/zy/common/utils/HikUtils.java
+++ b/src/main/java/com/zy/common/utils/HikUtils.java
@@ -15,23 +15,45 @@
 
     public void startPic(String ip, String filename) {
         try {
+            if (hikUrl == null || "".equals(hikUrl)) {
+                News.error("hikUrl閰嶇疆涓虹┖锛屾棤娉曡繘琛屾媿鎽�");
+                return;
+            }
+            if (ip == null || "".equals(ip)) {
+                News.error("IP鍦板潃涓虹┖锛屾棤娉曡繘琛屾媿鎽�");
+                return;
+            }
+            if (filename == null || "".equals(filename)) {
+                News.error("鏂囦欢鍚嶄负绌猴紝鏃犳硶杩涜鎷嶆憚");
+                return;
+            }
             HashMap<String, Object> data = new HashMap<>();
             data.put("ip", ip);
             data.put("filename", filename);
 
             String response = new HttpHandler.Builder()
                     .setUri(hikUrl)
-                    .setPath("/startPic")
+                    .setPath("/capture")
                     .setJson(JSON.toJSONString(data))
                     .build()
                     .doPost();
+            if (response == null || "".equals(response)) {
+                News.error("璇锋眰鎺ュ彛澶辫触锛岃繑鍥炲�间负绌�");
+                return;
+            }
             JSONObject jsonObject = JSON.parseObject(response);
-            if (jsonObject.getInteger("code").equals(200)) {
-                News.error("璇锋眰鎺ュ彛鎴愬姛锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", hikUrl + "/startPic", JSON.toJSONString(data), response);
+            if (jsonObject == null) {
+                News.error("瑙f瀽鍝嶅簲澶辫触锛岃繑鍥炲�间笉鏄湁鏁堢殑JSON");
+                return;
+            }
+            Boolean success = jsonObject.getBoolean("success");
+            if (success != null && success) {
+                News.error("璇锋眰鎺ュ彛鎴愬姛锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", hikUrl + "/capture", JSON.toJSONString(data), response);
             } else {
-                News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", hikUrl + "/startPic", JSON.toJSONString(data), response);
+                News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", hikUrl + "/capture", JSON.toJSONString(data), response);
             }
         } catch (Exception e) {
+            News.error("鎷嶆憚澶辫触锛歿}", e.getMessage());
             e.printStackTrace();
         }
     }
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 1546d1f..70002c7 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -59,7 +59,7 @@
                     mainService.crnIoExecute(5);
                     // 鍏ュ嚭搴撳寮� ===>> 鍫嗗灈鏈哄懡浠や笅鍙戝悗锛屽紓姝ヤ慨鏀瑰伐浣滄。鐘舵��
 //                    mainService.crnIoWrkMast();
-                    // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
+                    // 鍏ュ嚭搴�  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
                     mainService.storeFinished(6);
                     // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
                     mainService.recCrnErr(7);
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index d2dc0d0..e3c001f 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -93,7 +93,7 @@
         basDevp.setLocType1((short) 0);  // 楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿
         basDevp.setLocType2((short) 0);  // 瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿
         basDevp.setLocType3((short) 0);  // 杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿
-        basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2);
+        basDevp.setLocType1(high != low ? (low ? (short) 1 : (short) 2) : (short) 0);
         basDevp.setInreq1(emptyOutType?"Y":"N");
         return basDevp;
     }
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 3c25a97..602624a 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -13,6 +13,7 @@
 import com.zy.asrs.entity.DeviceDataLog;
 import com.zy.asrs.service.BasDevpService;
 import com.zy.asrs.service.DeviceDataLogService;
+import com.zy.asrs.service.impl.RcsServiceImpl;
 import com.zy.common.utils.News;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -25,6 +26,7 @@
 import com.zy.core.model.protocol.StaProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.text.MessageFormat;
 import java.util.*;
@@ -236,20 +238,40 @@
             }
         }
 
-        //澶栧舰妫�娴�
+        //澶栧舰妫�娴� - 甯﹂槻鎶栧鐞�
         Integer[] arr={401,402};
         OperateResultExOne<byte[]> resultErr1 = siemensS7Net.Read("DB101.702.0", (short) (arr.length*6));
+
         for (int i = 0; i < arr.length; i++) {
             StaProtocol staProtocol1 = station.get(arr[i]);
-            if(resultErr1.IsSuccess){
+            if(resultErr1.IsSuccess && staProtocol1 != null){
                 boolean[] status1 = siemensS7Net.getByteTransform().TransBool(resultErr1.Content, i*6, 1);
+
+                // 銆愭柊澧炪�戜繚瀛樻棫鐨勮秴楂樼姸鎬�
+                boolean oldHighError = staProtocol1.isHighError();
+
+                // 鏇存柊鎵�鏈夌姸鎬�
                 staProtocol1.setFrontError(status1[0]);
                 staProtocol1.setBackError(status1[1]);
-                staProtocol1.setHighError(status1[2]);
+                staProtocol1.setHighError(status1[2]);  // 瓒呴珮鐘舵��
                 staProtocol1.setLeftError(status1[3]);
                 staProtocol1.setRightError(status1[4]);
                 staProtocol1.setWeightError(status1[5]);
                 staProtocol1.setBarcodeError(status1[6]);
+
+                // 銆愭柊澧炪�戣秴楂樼姸鎬佸彉鍖栧鐞� - 鍙湁鍙樺寲鏃舵墠璋冪敤
+                if (oldHighError != status1[2]) {
+                    try {
+                        RcsServiceImpl rcsService = SpringUtils.getBean(RcsServiceImpl.class);
+                        if (rcsService != null) {
+                            rcsService.agvPause(staProtocol1);
+                            log.info("瓒呴珮鐘舵�佸彉鍖� - 绔欑偣: {}, 鐘舵��: {} -> {}, 宸茶皟鐢ˋGV鎺у埗",
+                                    arr[i], oldHighError, status1[2]);
+                        }
+                    } catch (Exception e) {
+                        log.error("璋冪敤agvPause澶辫触 - 绔欑偣: {}, 閿欒: {}", arr[i], e.getMessage());
+                    }
+                }
             }
         }
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 0ed5b9f..a57ce72 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -8,13 +8,13 @@
     name: @pom.build.finalName@
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jnejc-hkwms
+    url: jdbc:sqlserver://172.26.11.80:1433;databasename=jnejc-hkwms
     username: sa
     password: sa@123
   mvc:
     static-path-pattern: /**
 
-zyHikUrl: 10.10.10.200:9091/hik
+zyHikUrl: 172.26.4.184:8000
 #  redis:
 #    host: localhost
 #    port: 6379
@@ -38,10 +38,26 @@
 wms:
   url: 127.0.0.1:8084/hkwms
 
+#mes瀵规帴
+mes:
+  url: http://192.9.100.173:8088/prod-api/basicmodel/WmsFit/Api/
+#  url: http://172.26.160.73:8080/basicmodel/WmsFit/Api/
+#  url: http://172.26.160.5:8080/basicmodel/WmsFit/Api/
+  #榛樿鎺ュ彛鎿嶄綔浜哄憳id
+  defaultUserId: 30
 #娴峰悍瀵规帴
 hik:
   switch: false
   url: http://172.26.11.98:80/rcs/rtas/
+  station: Z-LVL20,Z-LVL21,Z-LVL22,Z-LVL23,Z-LVL24,Z-LVL25,Z-LVL26,Z-LVL27,Z-LVL28,Z-LVL29,Z-LVL30,Z-LVL31
+            Z-LZP1,Z-LZP2,Z-LZP3,Z-LZP4,Z-LZP5,Z-LZP6,Z-LZP7,Z-LZP8,Z-LZP9,Z-LZP10,Z-LZP11,Z-LZP12,Z-LZP13,Z-LZP14,
+            Z-LZP15,Z-LZP16,Z-LZP17,Z-LZP18,Z-LZP19,Z-LZP20,Z-LZP21,Z-LZP22,Z-LZP23,Z-LZP24,Z-LZP25,Z-LZP26,Z-LZP27
+            Z-LZP28,Z-LZP29,Z-LZP30,Z-LZP31,Z-LZP32,Z-LZP33
+  renyuan: Z-LZH25,Z-LZH26,Z-LZH27,Z-LZH28,Z-LZH29,Z-LZH30,Z-LZH31,Z-LZH32,Z-LZH33,Z-LZH34,Z-LZH35,Z-LZH36,Z-LZH37,
+            Z-LZH38,Z-LZH39,L-LZH40,L-LZH41,L-LZH42,Z-LZP7,Z-LZP8,Z-LZP9,Z-LZP10,Z-LZP11,Z-LZP12,Z-LZP13,Z-LZP14,
+            Z-LZP15,Z-LZP16,Z-LZP17,Z-LZP18,Z-LZP19,Z-LZP20,Z-LZP21,Z-LZP22,Z-LZP23,Z-LZP24,Z-LZP25,Z-LZP26,Z-LZP27
+            Z-LZP28,Z-LZP29,Z-LZP30,Z-LZP31
+
 
 # 涓嬩綅鏈洪厤缃�
 wcs-slave:
@@ -50,7 +66,7 @@
   # 鍙屾繁搴撲綅鎺掑彿
   doubleLocs: 3
   # 宸︽繁搴撲綅鎺掑彿
-#  doubleLocsLeft: 4,7,11,15,19,23
+  #  doubleLocsLeft: 4,7,11,15,19,23
   # 鍙虫繁搴撲綅鎺掑彿
   doubleLocsRight: 3
   # 宸︽祬搴撲綅鎺掑彿
@@ -73,28 +89,28 @@
     crnInStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
       staNo: 401
-      row: 1
+      row: 6
       bay: 1
       lev: 1
     # 鍫嗗灈鏈哄叆搴撶珯鐐�
     crnInStn[1]:
       devpPlcId: ${wcs-slave.devp[0].id}
       staNo: 402
-      row: 1
+      row: 6
       bay: 15
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[0]:
       devpPlcId: ${wcs-slave.devp[0].id}
       staNo: 401
-      row: 1
+      row: 6
       bay: 1
       lev: 1
     # 鍫嗗灈鏈哄嚭搴撶珯鐐�
     crnOutStn[1]:
       devpPlcId: ${wcs-slave.devp[0].id}
       staNo: 402
-      row: 1
+      row: 6
       bay: 15
       lev: 1
   # 杈撻�佺嚎1
@@ -149,24 +165,24 @@
       staNo: 402
       led: ${wcs-slave.led[1].id}
   # 杈撻�佺嚎2
-#  devp[1]:
-#    id: 2
-#    ip: 172.17.60.118
-#    port: 102
-#    rack: 0
-#    slot: 0
-#    # 鍏ュ簱鍙�1
-#    inSta[0]:
-#      staNo: 1002
-#      barcode: ${wcs-slave.barcode[2].id}
-#      backSta: 1001
-#      led: ${wcs-slave.led[7].id}
-#    # 鍏ュ簱鍙�2
-#    inSta[1]:
-#      staNo: 1007
-#      barcode: ${wcs-slave.barcode[3].id}
-#      backSta: 1003
-#      led: ${wcs-slave.led[8].id}
+  #  devp[1]:
+  #    id: 2
+  #    ip: 172.17.60.118
+  #    port: 102
+  #    rack: 0
+  #    slot: 0
+  #    # 鍏ュ簱鍙�1
+  #    inSta[0]:
+  #      staNo: 1002
+  #      barcode: ${wcs-slave.barcode[2].id}
+  #      backSta: 1001
+  #      led: ${wcs-slave.led[7].id}
+  #    # 鍏ュ簱鍙�2
+  #    inSta[1]:
+  #      staNo: 1007
+  #      barcode: ${wcs-slave.barcode[3].id}
+  #      backSta: 1003
+  #      led: ${wcs-slave.led[8].id}
   # 鏉$爜鎵弿浠�1
   barcode[0]:
     id: 1
@@ -177,27 +193,27 @@
     id: 2
     ip: 10.10.10.121
     port: 51236
-#  # 鏉$爜鎵弿浠�3
-#  barcode[2]:
-#    id: 3
-#    ip: 10.10.10.121
-#    port: 51236
-#  # 鏉$爜鎵弿浠�4
-#  barcode[3]:
-#    id: 4
-#    ip: 10.10.10.121
-#    port: 51236
-   # LED1
+    #  # 鏉$爜鎵弿浠�3
+    #  barcode[2]:
+    #    id: 3
+    #    ip: 10.10.10.121
+    #    port: 51236
+    #  # 鏉$爜鎵弿浠�4
+    #  barcode[3]:
+    #    id: 4
+    #    ip: 10.10.10.121
+    #    port: 51236
+    # LED1
   led[0]:
     id: 1
-    ip: 172.26.4.211
+    ip: 172.26.4.163
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 401
   # LED2
   led[1]:
     id: 2
-    ip: 172.26.4.212
+    ip: 172.26.4.161
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 402
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
index f72c762..0138091 100644
--- a/src/main/resources/logback-spring.xml
+++ b/src/main/resources/logback-spring.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
 
+    <!-- 鏃ュ織淇濆瓨璺緞 -->
+    <property name="LOG_PATH" value="D:/hkwcslogs/hk" />
+
     <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
 
     <property name="CONSOLE_LOG_PATTERN"

--
Gitblit v1.9.1