From f2d4fd6447ceb34b0c02c749f4f9b762a2fed10b Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 08 十二月 2025 09:41:25 +0800
Subject: [PATCH] Rcs接口对接

---
 src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java |  179 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 119 insertions(+), 60 deletions(-)

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 b7d7be5..4ffaa27 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -16,7 +16,10 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.io.*;
+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;
@@ -55,6 +58,9 @@
     private TaskDetlServiceImpl taskDetlService;
     @Resource
     private WrkMastService wrkMastService;
+
+    @Resource
+    private ApiLogService apiLogService;
 
 
     // region 灏侀攣鍖洪�昏緫锛岀洰鍓嶅彧鏈変竴涓ぇ灏侀攣鍖猴紝浠诲姟鍏ㄩ儴杞埌婊戝潡搴撳鐞嗭紝鎴栫洿鎺ュ啓鍒版粦鍧楀簱
@@ -168,8 +174,54 @@
      */
     public int submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
 
-        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/submit";
-        String response = sendPost(url, rcsTaskSubmit.toString());
+//        String response = "";
+//        boolean success = false;
+//        Map<String,Object> headers = new HashMap<>();
+//        headers.put("Content-Type","application/json");
+//        headers.put("Content-Length","<calculated when request is sent>");
+//        headers.put("Host","<calculated when request is sent>");
+////        headers.put("Connection","keep-alive");
+////        headers.put("Accept","*/*");
+////        headers.put("Accept-Encoding","gzip, deflate, br");
+//        headers.put("X-lr-request-id","123");
+//        headers.put("X-lr-version","4.3");
+//        try {
+//            response = new HttpHandler.Builder()
+//                    .setUri(HIK_URL)
+//                    .setPath("api/robot/controller/task/submit")
+//                    .setHeaders(headers)
+//                    .setJson(JSON.toJSONString(rcsTaskSubmit))
+//                    .build()
+//                    .doPost();
+//            JSONObject jsonObject = JSON.parseObject(response);
+//            if (jsonObject.getBoolean("success")) {
+//                success = true;
+//            } else {
+//                log.error("涓嬪彂agv浠诲姟澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", HIK_URL + "api/robot/controller/task/submit", JSON.toJSONString(rcsTaskSubmit), response);
+//            }
+//        } catch (Exception e) {
+//            log.error("涓嬪彂agv浠诲姟寮傚父", e);
+//        } finally {
+//            try {
+//                // 淇濆瓨鎺ュ彛鏃ュ織
+//                apiLogService.save(
+//                        "涓嬪彂agv浠诲姟",
+//                        HIK_URL + "api/robot/controller/task/submit",
+//                        null,
+//                        "127.0.0.1",
+//                        JSON.toJSONString(rcsTaskSubmit),
+//                        response,
+//                        success
+//                );
+//            } catch (Exception e) {
+//                log.error("涓嬪彂agv浠诲姟淇濆瓨鎺ュ彛鏃ュ織寮傚父", e);
+//            }
+//        }
+//        return success ? 1 : 0;
+
+        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/submit";
+        String response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
+
         if (!StringUtils.isEmpty(response) && response.contains("code")){
             RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
             if("SUCCESS".equals(rcsReturn.getCode())) {
@@ -193,8 +245,8 @@
      */
     public int continueTask(RcsTaskContinue rcsTaskContinue, int rcsFactory){
 
-        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/extend/continue";
-        String response = sendPost(url, rcsTaskContinue.toString());
+        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/extend/continue";
+        String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
         if (!StringUtils.isEmpty(response) && response.contains("code")){
             RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
             if("SUCCESS".equals(rcsReturn.getCode())) {
@@ -218,7 +270,7 @@
      */
     public int cancelTask(RcsTaskCancel rcsTaskCancel, int rcsFactory){
 
-        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/cancel";
+        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/cancel";
         String response = sendPost(url, rcsTaskCancel.toString());
         if (!StringUtils.isEmpty(response) && response.contains("code")){
             RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
@@ -243,7 +295,7 @@
      */
     private int notifyEqpt(RcsEqptNotify rcsEqptNotify, int rcsFactory){
 
-        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/wcs/robot/eqpt/notify";
+        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/wcs/robot/eqpt/notify";
         String response = sendPost(url, rcsEqptNotify.toString());
         if (!StringUtils.isEmpty(response) && response.contains("code")){
             RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
@@ -280,7 +332,8 @@
         String slotCode = values.getString("slotCode");
 
         try {
-            if ("Q3".equals(carrierType) || "Q8".equals(carrierType)) {    //AGV
+            // q3,q8=1
+            if ("1".equals(carrierType)) {    //AGV
                 EntityWrapper<Task> wrapper = new EntityWrapper<>();
                 wrapper.eq("task_no", robotTaskCode);
                 Task task = taskService.selectOne(wrapper);
@@ -303,8 +356,8 @@
                     } break;
                     case TASK_OUT_BIN: {
                         // TODO锛氱珛搴撳嚭搴撲竴鎵橈紝AGV寮�濮嬭繍杈撳悗锛岀粰MES鍙戦�佸嚭搴撳畬鎴愶紙涓�鎵樺彂涓�娆★級
-                        JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
-                        mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
+//                        JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
+//                        mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
                     } break;
                     case TASK_END: {
                         // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
@@ -389,53 +442,54 @@
                     } break;
                     default: {} break;
                 }
-            } else if ("CTU".equals(carrierType)) { //CTU
-                EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
-                wrapper.eq("task_no", robotTaskCode);
-                WrkMast task = wrkMastService.selectOne(wrapper);
-                if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
-                    rcsReturn.setCode("Err_RobotCodeNotMatch");
-                    rcsReturn.setMessage("");
-                    JSONObject data = new JSONObject();
-                    data.put("robotTaskCode", robotTaskCode);
-                    rcsReturn.setData(data);
-                    return rcsReturn;
-                }
-//                JSONObject memo = JSONObject.parseObject(task.getMemo());
-
-                switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
-                    case TASK_START: {
-//                        task.setWrkSts(302L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+            }
+//            else if ("CTU".equals(carrierType)) { //CTU
+//                EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
+//                wrapper.eq("task_no", robotTaskCode);
+//                WrkMast task = wrkMastService.selectOne(wrapper);
+//                if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
+//                    rcsReturn.setCode("Err_RobotCodeNotMatch");
+//                    rcsReturn.setMessage("");
+//                    JSONObject data = new JSONObject();
+//                    data.put("robotTaskCode", robotTaskCode);
+//                    rcsReturn.setData(data);
+//                    return rcsReturn;
+//                }
+////                JSONObject memo = JSONObject.parseObject(task.getMemo());
+//
+//                switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
+//                    case TASK_START: {
+////                        task.setWrkSts(302L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+////                        task.setModiTime(new Date());
+////                        task.setModiUser(defaultUserId);
+////                        taskService.updateById(task);
+//                    } break;
+////                    case TASK_OUT_BIN: {} break;
+//                    case TASK_END: {
+//                        // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+//                        long wrkSts = task.getWrkSts(); // 1.鍏ュ簱锛�101.鍑哄簱锛�
+//                        if (task.getIoType() == 1) {
+//                            wrkSts = 4L;
+//                        } else if (task.getIoType() == 101) {
+//                            wrkSts = 14L;
+//                        }
+//
+//                        task.setWrkSts(wrkSts); // 4.鍏ュ簱瀹屾垚锛�14.宸插嚭搴撴湭纭锛�
 //                        task.setModiTime(new Date());
 //                        task.setModiUser(defaultUserId);
-//                        taskService.updateById(task);
-                    } break;
-//                    case TASK_OUT_BIN: {} break;
-                    case TASK_END: {
-                        // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
-                        long wrkSts = task.getWrkSts(); // 1.鍏ュ簱锛�101.鍑哄簱锛�
-                        if (task.getIoType() == 1) {
-                            wrkSts = 4L;
-                        } else if (task.getIoType() == 101) {
-                            wrkSts = 14L;
-                        }
-
-                        task.setWrkSts(wrkSts); // 4.鍏ュ簱瀹屾垚锛�14.宸插嚭搴撴湭纭锛�
-                        task.setModiTime(new Date());
-                        task.setModiUser(defaultUserId);
-                        wrkMastService.updateById(task);
-
-                        // TODO锛氫换鍔″畬鎴愯Е鍙戝嚭鍏ュ簱鍙樻洿鎿嶄綔
-
-
-//                        // 鍏ュ簱瀹屾垚
-//                        mesService.inFeedback(memo.getString("OrderNo"));
-//                        // 鍑哄簱瀹屾垚
-//                        mesService.outFeedback(memo.getString("OrderNo"));
-                    } break;
-                    default: {} break;
-                }
-            }
+//                        wrkMastService.updateById(task);
+//
+//                        // TODO锛氫换鍔″畬鎴愯Е鍙戝嚭鍏ュ簱鍙樻洿鎿嶄綔
+//
+//
+////                        // 鍏ュ簱瀹屾垚
+////                        mesService.inFeedback(memo.getString("OrderNo"));
+////                        // 鍑哄簱瀹屾垚
+////                        mesService.outFeedback(memo.getString("OrderNo"));
+//                    } break;
+//                    default: {} break;
+//                }
+//            }
 
             // 杩斿洖RCS
             rcsReturn.setCode("SUCCESS");
@@ -563,11 +617,16 @@
             log.info("sendPost - {} - {}", url, param);
             URL realUrl = new URL(url);
             URLConnection conn = realUrl.openConnection();
-            conn.setRequestProperty("accept", "*/*");
-            conn.setRequestProperty("connection", "Keep-Alive");
-            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-            conn.setRequestProperty("Accept-Charset", "utf-8");
-            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
+            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);

--
Gitblit v1.9.1