From 15161de49e7f35e2fc926a20577905621f30554c Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 28 十二月 2025 14:57:24 +0800
Subject: [PATCH] 输送线和CTU安全交互

---
 src/main/java/com/zy/service/impl/RcsServiceImpl.java  |  232 ++++++++++++++++++++++++++++++--
 src/main/java/com/zy/service/RcsService.java           |    5 
 src/main/java/com/zy/entity/EqptNotify.java            |   49 +++++++
 src/main/java/com/zy/entity/ReporterEqpt.java          |   29 ++++
 src/main/java/com/zy/entity/RcsTaskContinue.java       |   20 ++
 src/main/java/com/zy/service/impl/MainServiceImpl.java |   23 +-
 src/main/java/com/zy/enums/RcsRetMethodEnum.java       |    3 
 src/main/java/com/zy/controller/RcsController.java     |    8 +
 src/main/resources/application.yml                     |   10 +
 9 files changed, 347 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/zy/controller/RcsController.java b/src/main/java/com/zy/controller/RcsController.java
index a533daa..5b275e3 100644
--- a/src/main/java/com/zy/controller/RcsController.java
+++ b/src/main/java/com/zy/controller/RcsController.java
@@ -4,6 +4,7 @@
 import com.zy.common.web.BaseController;
 import com.zy.entity.RcsReporterTask;
 import com.zy.entity.RcsReturn;
+import com.zy.entity.ReporterEqpt;
 import com.zy.service.RcsService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -27,4 +28,11 @@
         return rcsService.reporterTask(param);
     }
 
+    // 璇锋眰澶栬鎺ュ彛-WCS 鏀捐揣璇锋眰
+    @PostMapping("/api/robot/reporter/eqpt")
+    public RcsReturn reporterEqpt(@RequestBody ReporterEqpt param){
+        log.info("agv鏀捐揣璇锋眰锛歿}",JSONObject.toJSONString(param));
+        return rcsService.reporterEqpt(param);
+    }
+
 }
diff --git a/src/main/java/com/zy/entity/EqptNotify.java b/src/main/java/com/zy/entity/EqptNotify.java
new file mode 100644
index 0000000..9d3de03
--- /dev/null
+++ b/src/main/java/com/zy/entity/EqptNotify.java
@@ -0,0 +1,49 @@
+package com.zy.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author pang.jiabao
+ * @description 2.1.15 澶栬鎵ц閫氱煡鎺ュ彛WCS
+ * @createDate 2025/12/28 10:32
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class EqptNotify {
+
+    /**
+     * 璁惧缂栧彿/璁惧鍚嶇О
+     */
+    private String eqptCode;
+
+    /**
+     * 浠诲姟鍙蜂负鍞竴缂栧彿锛屽彲浣跨敤UUID
+     */
+    private String taskCode;
+
+    /**
+     * 浠诲姟鎵ц鐘舵�侊細鍙墿灞曟灇涓惧�笺��
+     * 棰勫埗鏋氫妇鍊硷細
+     * 1. 鑷姩闂紝椋庢穻闂�
+     * "1"-寮�闂ㄥ埌浣�
+     * "2"-鍏抽棬鍒颁綅
+     * 2. 鐢垫
+     * "3"-寮�闂ㄥ埌浣�
+     * "4"-鐗╂枡鍒拌揪鐩爣妤煎眰
+     * 3. 瑁呭嵏鏈恒�佽緭閫佺嚎
+     * "5"-鍙栬揣
+     * "6"-鏀捐揣
+     * "7"-鍒拌揪
+     */
+    private String actionStatus;
+
+    /**
+     * 鍒嗛厤鐨勭珯鐐圭紪鍙凤紝鐢垫澶氭嫋鍦烘櫙浣跨敤銆�
+     */
+    private String siteCode;
+
+
+}
diff --git a/src/main/java/com/zy/entity/RcsTaskContinue.java b/src/main/java/com/zy/entity/RcsTaskContinue.java
new file mode 100644
index 0000000..6c36e22
--- /dev/null
+++ b/src/main/java/com/zy/entity/RcsTaskContinue.java
@@ -0,0 +1,20 @@
+package com.zy.entity;
+
+import lombok.Data;
+
+// 缁х画鎵ц浠诲姟
+@Data
+public class RcsTaskContinue {
+
+    // 浠诲姟閾剧紪鍙�
+    private String robotTaskCode;
+    // 瑙﹀彂绫诲瀷锛�
+    //SITE 绔欑偣缂栧彿瑙﹀彂
+    //CARRIER 杞藉叿缂栧彿瑙﹀彂
+    //ROBOT 杞﹀彿瑙﹀彂
+    //TASK 浠诲姟閾剧紪鍙疯Е鍙�
+    private String triggerType;
+    // 涓� triggerType 瀵瑰簲鐨勮Е鍙戠紪鍙�
+    private String triggerCode;
+
+}
diff --git a/src/main/java/com/zy/entity/ReporterEqpt.java b/src/main/java/com/zy/entity/ReporterEqpt.java
new file mode 100644
index 0000000..274121d
--- /dev/null
+++ b/src/main/java/com/zy/entity/ReporterEqpt.java
@@ -0,0 +1,29 @@
+package com.zy.entity;
+
+import lombok.Data;
+
+/**
+ * @author pang.jiabao
+ * @description 璇锋眰澶栬鎺ュ彛-WCS
+ * @createDate 2025/12/26 10:42
+ */
+@Data
+public class ReporterEqpt {
+
+    /**
+     * 璁惧缂栧彿
+     */
+    private String eqptCode;
+
+    /**
+     * 浠诲姟鍙蜂负鍞竴缂栧彿
+     */
+    private String taskCode;
+
+    /**
+     * 浠诲姟鎵ц鏂规硶
+     * APPLY_FROM_AGV AGV鐢宠閫佹枡
+     */
+    private String method;
+
+}
diff --git a/src/main/java/com/zy/enums/RcsRetMethodEnum.java b/src/main/java/com/zy/enums/RcsRetMethodEnum.java
index 07f8409..356d0a2 100644
--- a/src/main/java/com/zy/enums/RcsRetMethodEnum.java
+++ b/src/main/java/com/zy/enums/RcsRetMethodEnum.java
@@ -5,7 +5,8 @@
     TASK_START("start", "浠诲姟寮�濮�"),
     TASK_END("end", "浠诲姟瀹屾垚"),
     TASK_OUT_BIN("outbin", "璧板嚭鍌ㄤ綅"),
-
+    APPLY_FROM_AGV("APPLY_FROM_AGV", "鏀捐揣鐢宠"),
+    PICK_COMPLETE("pickComplete", "鍙栬揣瀹屾垚"),
     APPLY_IN_STATION("applyInStation", "鍏ョ珯璇锋眰"),
     APPLY_OFF_STATION("applyOutStation", "绂荤珯璇锋眰"),
     ARRIVE_ON_STATION("arriveOnStation", "鍒扮珯瀹屾垚"),
diff --git a/src/main/java/com/zy/service/RcsService.java b/src/main/java/com/zy/service/RcsService.java
index 8860e0e..ebbbc89 100644
--- a/src/main/java/com/zy/service/RcsService.java
+++ b/src/main/java/com/zy/service/RcsService.java
@@ -2,6 +2,7 @@
 
 import com.zy.entity.RcsReporterTask;
 import com.zy.entity.RcsReturn;
+import com.zy.entity.ReporterEqpt;
 
 public interface RcsService {
 
@@ -13,4 +14,8 @@
      */
     RcsReturn reporterTask(RcsReporterTask rcsReporterTask);
 
+    /**
+     * 璇锋眰澶栬鎺ュ彛-WCS 鏀捐揣璇锋眰
+     */
+    RcsReturn reporterEqpt(ReporterEqpt param);
 }
diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index 5c9ed8b..a2b3ef7 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -130,7 +130,7 @@
         } else {
             staProtocol = staProtocol.clone();
         }
-        if(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0) {
+        if(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() != 0 && staProtocol.isInEnable()) {
             WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getWorkNo()));
             if(wrkMast != null && Cools.isEmpty(wrkMast.getMk())) {
 //              log.info("璐х墿娴佸姩鍒颁綅106锛�"+wrkMast.getWrkNo());
@@ -329,7 +329,7 @@
                     // 鑾峰彇鐩爣绔�
                     Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                             .eq("type_no", wrkMast.getIoType() - 50)
-                            .eq("stn_no", pickSta.getStaNo() + 1) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+                            .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
                             .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
                     StaDesc staDesc = staDescService.selectOne(wrapper);
                     if (Cools.isEmpty(staDesc)) {
@@ -391,7 +391,7 @@
 
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                     staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(staProtocol.getSiteId().shortValue());
+                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                     devpThread.setPakMk(staProtocol.getSiteId(), false);
                     boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     log.error("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
@@ -1083,13 +1083,6 @@
                     continue;
                 }
                 String barcode = barcodeThread.getBarcode();
-                if(!Cools.isEmpty(barcode)) {
-                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                        continue;
-                    }
-                } else {
-                    continue;
-                }
 
                 LedThread ledThread = null;
                 if (!Cools.isEmpty(emptyInSta.getLed()))  {
@@ -1108,6 +1101,14 @@
                         && staProtocol.isPakMk()
                         && staProtocol.getWorkNo() == 9997
                         ) {
+                    if (staProtocol.isBarcodeErr() || Cools.isEmpty(barcode) || barcode.startsWith("ERROR") || "NG".endsWith(barcode) || "00000000".equals(barcode)) {
+                        staProtocol.setWorkNo(wrkNo);
+                        staProtocol.setStaNo(emptyInSta.getBackSta().shortValue());
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, "鏉$爜鎵弿閿欒锛�" + barcode));
+                        continue;
+                    }
                     News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛岋細绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�");
 
                     try {
@@ -1407,7 +1408,7 @@
                         ledCommand.setEmptyMk(true);
                         break;
                     default:
-                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
+//                        News.error("浠诲姟鍏ュ嚭搴撶被鍨嬮敊璇紒锛侊紒[宸ヤ綔鍙凤細{}] [鍏ュ嚭搴撶被鍨嬶細{}]", wrkMast.getWrkNo(), wrkMast.getIoType());
                         break;
                 }
                 ledCommand.setLocNo(wrkMast.getLocNo());
diff --git a/src/main/java/com/zy/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/service/impl/RcsServiceImpl.java
index 0b67aef..c6a3c36 100644
--- a/src/main/java/com/zy/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/RcsServiceImpl.java
@@ -1,5 +1,6 @@
 package com.zy.service.impl;
 
+import com.alibaba.excel.util.StringUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -13,10 +14,8 @@
 import com.zy.core.model.Task;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
-import com.zy.entity.RcsReporterTask;
-import com.zy.entity.RcsReturn;
-import com.zy.entity.WrkDetl;
-import com.zy.entity.WrkMast;
+import com.zy.core.thread.SiemensDevpThread;
+import com.zy.entity.*;
 import com.zy.enums.RcsRetMethodEnum;
 import com.zy.service.ApiLogService;
 import com.zy.service.RcsService;
@@ -29,11 +28,21 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.ConnectException;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
+
+import static com.zy.enums.RcsRetMethodEnum.APPLY_FROM_AGV;
 
 @Slf4j
 @Service
@@ -41,6 +50,9 @@
 
     @Value("${dj.url}")
     public String DJ_URL;
+
+    @Value("${hik.url}")
+    private String HIK_URL;
 
     @Resource
     private WrkMastService wrkMastService;
@@ -74,19 +86,86 @@
             if (singleRobotCode.equals("14") || singleRobotCode.equals("15")) { // 涓ゅ彴CTU搴撴満鍣ㄤ汉缂栧彿
                 WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("task_no", robotTaskCode));
                 if (wrkMast != null) {
-                    Integer ioType = wrkMast.getIoType();
-                    if (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method)) == RcsRetMethodEnum.TASK_END) {
-                        if ((ioType == 101 || ioType == 110 || ioType == 103) && wrkMast.getWrkSts() == 12) {
+                    if (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method)) == RcsRetMethodEnum.TASK_START) {
+                        // 寮�濮�
+                        wrkMast.setModiTime(now);
+                        wrkMastService.updateById(wrkMast);
+                    } else if (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method)) == RcsRetMethodEnum.PICK_COMPLETE) {
+                        // 鍙栬揣瀹屾垚锛屾竻闄よ緭閫佺嚎浠诲姟鍙�
+                        SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                        StaProtocol staProtocol = siemensDevpThread.getStation().get(106).clone();
+                        // 鍙栬揣瀹屾垚娓呴櫎杈撻�佺嚎浠诲姟鍙�
+                        if (Objects.equals(staProtocol.getWorkNo(), wrkMast.getWrkNo())) {
+                            staProtocol.setWorkNo(0);
+                            staProtocol.setStaNo((short) 0);
+                            boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                            News.info("CTU鍙栬揣瀹屾垚锛岀粰绔欑偣鍐�0宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}", result, 106, robotTaskCode);
+                            if (!result) {
+                                rcsReturn.setCode("Err_Internal");
+                                rcsReturn.setMessage("娓呴櫎杈撻�佺嚎浠诲姟鍙峰懡浠や笅鍙戝け璐�");
+                                JSONObject data = new JSONObject();
+                                data.put("robotTaskCode", robotTaskCode);
+                                rcsReturn.setData(data);
+                                return rcsReturn;
+                            }
+                        } else {
+                            News.warn("CTU鍙栬揣瀹屾垚浠诲姟鍙穥},娓呴櫎杈撻�佺嚎浠诲姟鍙凤細{}锛屼换鍔″彿涓嶅悓", wrkMast.getWrkNo(), staProtocol.getWorkNo());
+                        }
+                    } else if (method.equals(APPLY_FROM_AGV.getCode())) {
+                        // 鏀捐揣鐢宠
+                        SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                        StaProtocol staProtocol = siemensDevpThread.getStation().get(101).clone();
+                        if (staProtocol == null) {
+                            rcsReturn.setCode("Err_Internal");
+                            rcsReturn.setMessage("101绔欑偣绾跨▼涓虹┖");
+                            JSONObject data = new JSONObject();
+                            data.put("robotTaskCode", robotTaskCode);
+                            rcsReturn.setData(data);
+                            return rcsReturn;
+                        }
+                        if (staProtocol.isOutEnable() && staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0) { // 鍙嚭
+                            RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+                            rcsTaskContinue.setRobotTaskCode(robotTaskCode);
+                            rcsTaskContinue.setTriggerType("TASK");
+                            rcsTaskContinue.setTriggerCode(robotTaskCode);
+
+                            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("Err_Internal");
+                                    rcsReturn.setMessage("杩斿洖缁х画鎵ц澶辫触");
+                                    JSONObject data = new JSONObject();
+                                    data.put("robotTaskCode", robotTaskCode);
+                                    rcsReturn.setData(data);
+                                    return rcsReturn;
+                                }
+                            }
+                        } else {
+                            News.warn("绔欑偣{}涓嶆弧瓒虫斁璐ф潯浠讹紝鑷姩锛歿}锛屾棤鐗╋細{}锛屽彲鍑猴細{}锛屼换鍔″彿锛歿}",
+                                    101, staProtocol.isAutoing(), staProtocol.isLoading(), staProtocol.isOutEnable(), staProtocol.getWorkNo());
+                            rcsReturn.setCode("Err_Internal");
+                            rcsReturn.setMessage("绔欑偣涓嶆弧瓒虫斁璐ф潯浠�");
+                            JSONObject data = new JSONObject();
+                            data.put("robotTaskCode", robotTaskCode);
+                            rcsReturn.setData(data);
+                            return rcsReturn;
+                        }
+                    } else if (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method)) == RcsRetMethodEnum.TASK_END) {
+                        // 浠诲姟瀹屾垚
+                        Integer ioType = wrkMast.getIoType();
+                        if (ioType == 1 || ioType == 10 || ioType == 53 || ioType == 57) {
+                            wrkMast.setWrkSts(4L);
+                            wrkMast.setCrnEndTime(now);
+                            wrkMast.setModiTime(now);
+                            wrkMastService.updateById(wrkMast);
+                        } else if ((ioType == 101 || ioType == 110 || ioType == 103 || ioType == 107) && wrkMast.getWrkSts() == 12) {
                             // 缁欒緭閫佺嚎涓嬪彂鍛戒护
                             for (DevpSlave devp : slaveProperties.getDevp()) {
                                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                                Map<Integer, StaProtocol> station = devpThread.getStation();
-                                StaProtocol staProtocol = station.get(wrkMast.getSourceStaNo());
-                                if (staProtocol == null) {
-                                    continue;
-                                } else {
-                                    staProtocol = staProtocol.clone();
-                                }
+                                StaProtocol staProtocol = devpThread.getStation().get(wrkMast.getSourceStaNo()).clone();
                                 staProtocol.setWorkNo(wrkMast.getWrkNo());
                                 staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                                 boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -113,7 +192,7 @@
                                 if (!Cools.isEmpty(orderNo)) {
                                     // 鏋勯�犺姹傚弬鏁�
                                     JSONObject jsonObject = new JSONObject();
-                                    jsonObject.put("billType",wrkDetl.getThreeCode());
+                                    jsonObject.put("billType", wrkDetl.getThreeCode());
                                     jsonObject.put("orderNo", wrkDetl.getOrderNo());
                                     jsonObject.put("createTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
                                     JSONArray jsonArray = new JSONArray();
@@ -144,7 +223,7 @@
                                             log.error("鍑哄簱瀹屾垚涓婃姤TMS澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, request, response);
                                         }
                                     } catch (Exception e) {
-                                        log.error("鍑哄簱瀹屾垚涓婃姤TMS寮傚父,request:{}",request);
+                                        log.error("鍑哄簱瀹屾垚涓婃姤TMS寮傚父,request:{}", request);
                                         e.printStackTrace();
                                     } finally {
                                         try {
@@ -188,4 +267,123 @@
         return rcsReturn;
     }
 
+    @Override
+    public RcsReturn reporterEqpt(ReporterEqpt param) {
+        String robotTaskCode = param.getTaskCode();
+        String method = param.getMethod();
+        RcsReturn rcsReturn = new RcsReturn();
+        if (method.equals(APPLY_FROM_AGV.getCode())) {
+            SiemensDevpThread siemensDevpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            StaProtocol staProtocol = siemensDevpThread.getStation().get(101).clone();
+            if (staProtocol == null) {
+                rcsReturn.setCode("Err_Internal");
+                rcsReturn.setMessage("101绔欑偣绾跨▼涓虹┖");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+                return rcsReturn;
+            }
+            if (staProtocol.isOutEnable() && staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.getWorkNo() == 0) { // 鍙嚭
+                EqptNotify eqptNotify = new EqptNotify(param.getEqptCode(), robotTaskCode, "6", "101");
+                String url = HIK_URL + "spi/wcs/robot/eqpt/notify";
+                String response = sendPost(url, JSONObject.toJSONString(eqptNotify));
+                if (!StringUtils.isEmpty(response) && response.contains("code")) {
+                    RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
+                    if (!"0".equals(rcsReturn1.getCode())) {
+                        // 杩斿洖RCS
+                        rcsReturn.setCode("Err_Internal");
+                        rcsReturn.setMessage("閫氱煡RCS缁х画鏀捐揣澶辫触");
+                        JSONObject data = new JSONObject();
+                        data.put("robotTaskCode", robotTaskCode);
+                        rcsReturn.setData(data);
+                        return rcsReturn;
+                    }
+                } else {
+                    rcsReturn.setCode("Err_Internal");
+                    rcsReturn.setMessage("璇锋眰url" + url + "澶辫触");
+                    JSONObject data = new JSONObject();
+                    data.put("robotTaskCode", robotTaskCode);
+                    rcsReturn.setData(data);
+                    return rcsReturn;
+                }
+            } else {
+                News.warn("绔欑偣{}涓嶆弧瓒虫斁璐ф潯浠讹紝鑷姩锛歿}锛屾棤鐗╋細{}锛屽彲鍑猴細{}锛屼换鍔″彿锛歿}",
+                        101, staProtocol.isAutoing(), staProtocol.isLoading(), staProtocol.isOutEnable(), staProtocol.getWorkNo());
+                rcsReturn.setCode("Err_Internal");
+                rcsReturn.setMessage("绔欑偣涓嶆弧瓒虫斁璐ф潯浠�");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+                return rcsReturn;
+            }
+        }
+        rcsReturn.setCode("SUCCESS");
+        rcsReturn.setMessage("鎴愬姛!");
+        JSONObject data = new JSONObject();
+        data.put("extra", "null");
+        rcsReturn.setData(data);
+        log.info("agv鏀捐揣璇锋眰杩斿洖锛歿}", JSONObject.toJSONString(rcsReturn));
+        return rcsReturn;
+    }
+
+    /**
+     * 鍚戞寚瀹� URL 鍙戦�丳OST鏂规硶鐨勮姹�
+     *
+     * @param url   鍙戦�佽姹傜殑 URL
+     * @param param 璇锋眰鍙傛暟锛岃姹傚弬鏁板簲璇ユ槸 name1=value1&name2=value2 鐨勫舰寮忋��
+     * @return 鎵�浠h〃杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
+     */
+    public static String sendPost(String url, String param) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try {
+            log.info("sendPost - {} - {}", url, param);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+            conn.setRequestProperty("Content-Type", "application/json");
+            conn.setRequestProperty("Content-Length", "<calculated when request is sent>");
+            conn.setRequestProperty("Host", "<calculated when request is sent>");
+            conn.setRequestProperty("Accept", "*/*");
+            conn.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
+            conn.setRequestProperty("Connection", "keep-alive");
+
+            conn.setRequestProperty("X-lr-request-id", String.valueOf(new Date().getTime()));
+            conn.setRequestProperty("X-lr-version", "4.3");
+            conn.setConnectTimeout(5000);
+            conn.setReadTimeout(5000);
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            out = new PrintWriter(conn.getOutputStream());
+            out.print(param);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        } catch (ConnectException e) {
+            log.error("璋冪敤HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
+        } catch (SocketTimeoutException e) {
+            log.error("璋冪敤HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        } catch (IOException e) {
+            log.error("璋冪敤HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
+        } catch (Exception e) {
+            log.error("璋冪敤HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
+        } finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                log.error("璋冪敤in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 8402316..6fb60bd 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 9090
+  port: 9091
   servlet:
     context-path: /@pom.build.finalName@
 
@@ -130,10 +130,14 @@
   # LED1
   led[0]:
     id: 1
-    ip: 127.0.0.1
+    ip: 172.26.11.82
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 103,104
     crnId: 1
+# TMS
 dj:
-  url: http://172.26.11.2/
\ No newline at end of file
+  url: http://172.26.11.2/
+#娴峰悍瀵规帴
+hik:
+  url: http://172.26.11.98:80/rcs/rtas/
\ No newline at end of file

--
Gitblit v1.9.1