From b6681bc12173c1179d0185805ba461211472ac18 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期日, 04 一月 2026 09:31:16 +0800
Subject: [PATCH] 1.完善出库任务呼叫agv 2.完善agv任务下发 3.等等

---
 src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java |  482 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 326 insertions(+), 156 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..e3fa69b 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -3,6 +3,7 @@
 import com.alibaba.excel.util.StringUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.mes.TransArrivalStation;
 import com.zy.asrs.entity.mes.TransParent;
@@ -16,7 +17,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;
@@ -39,6 +43,12 @@
     // 鍗庢檽RCS鍦板潃
     @Value("${hx.url}")
     private String HX_URL;
+    // 鍗庢檽RCS鍦板潃
+    @Value("${hx.taskNo}")
+    private String taskNo;
+    // 鍗庢檽RCS鍦板潃
+    @Value("${hx.inOk}")
+    private String inOk;
     @Value("${mes.defaultUserId}")
     public long defaultUserId;
 
@@ -55,6 +65,9 @@
     private TaskDetlServiceImpl taskDetlService;
     @Resource
     private WrkMastService wrkMastService;
+
+    @Resource
+    private ApiLogService apiLogService;
 
 
     // region 灏侀攣鍖洪�昏緫锛岀洰鍓嶅彧鏈変竴涓ぇ灏侀攣鍖猴紝浠诲姟鍏ㄩ儴杞埌婊戝潡搴撳鐞嗭紝鎴栫洿鎺ュ啓鍒版粦鍧楀簱
@@ -85,40 +98,40 @@
      */
     public void managerBlock() {
 
-       try {
-           BlockTask firstTask = blockTaskMapper.findTop();
-           if (firstTask == null) {
-               return;
-           }
-           EntityWrapper<BlockStation> wrapper = new EntityWrapper<>();
-           wrapper.eq("block_no", firstTask.getBlockNo());
-           List<BlockStation> stations = blockStationMapper.selectList(wrapper);
-           if (!stations.isEmpty()) {
-               boolean locked = false;
-               for (BlockStation station : stations) {
-                   // 鍙厑璁�1涓巶瀹惰澶囪繘鍏ュ皝閿佸尯锛宻tatus鐘舵�侊細0 绌洪棽锛�1 娴峰悍灏侀攣涓紱2 鍗庢檽灏侀攣涓紱-1 寮傚父锛�
-                   if (station.getStatus() > 0 && !station.getStatus().equals(firstTask.getAgvFactory())) {
-                       locked = true;
-                       break;
-                   }
-               }
+        try {
+            BlockTask firstTask = blockTaskMapper.findTop();
+            if (firstTask == null) {
+                return;
+            }
+            EntityWrapper<BlockStation> wrapper = new EntityWrapper<>();
+            wrapper.eq("block_no", firstTask.getBlockNo());
+            List<BlockStation> stations = blockStationMapper.selectList(wrapper);
+            if (!stations.isEmpty()) {
+                boolean locked = false;
+                for (BlockStation station : stations) {
+                    // 鍙厑璁�1涓巶瀹惰澶囪繘鍏ュ皝閿佸尯锛宻tatus鐘舵�侊細0 绌洪棽锛�1 娴峰悍灏侀攣涓紱2 鍗庢檽灏侀攣涓紱-1 寮傚父锛�
+                    if (station.getStatus() > 0 && !station.getStatus().equals(firstTask.getAgvFactory())) {
+                        locked = true;
+                        break;
+                    }
+                }
 
-               if (!locked) {
-                   // 灏侀攣鐘舵��
-                   int success = blockStationMapper.addByBlockNo(firstTask.getBlockNo(), firstTask.getAgvFactory());
-                   if (success > 0) {
-                       // 閫氱煡RCS
-                       RcsEqptNotify notify = new RcsEqptNotify();
-                       notify.setEqptCode(firstTask.getBlockNo());
-                       notify.setTaskCode(firstTask.getTaskCode());
-                       notify.setActionStatus("1");
-                       notifyEqpt(notify, firstTask.getAgvFactory());
-                   }
-               }
-           }
-       } catch (Exception e) {
-           log.error("绠$悊灏侀攣鍖哄紓甯�", e);
-       }
+                if (!locked) {
+                    // 灏侀攣鐘舵��
+                    int success = blockStationMapper.addByBlockNo(firstTask.getBlockNo(), firstTask.getAgvFactory());
+                    if (success > 0) {
+                        // 閫氱煡RCS
+                        RcsEqptNotify notify = new RcsEqptNotify();
+                        notify.setEqptCode(firstTask.getBlockNo());
+                        notify.setTaskCode(firstTask.getTaskCode());
+                        notify.setActionStatus("1");
+                        notifyEqpt(notify, firstTask.getAgvFactory());
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("绠$悊灏侀攣鍖哄紓甯�", e);
+        }
     }
 
     /**
@@ -168,11 +181,57 @@
      */
     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+taskNo :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())) {
+            if("SUCCESS".equals(rcsReturn.getCode())||"200".equals(rcsReturn.getCode())) {
                 JSONObject data = rcsReturn.getData();
                 String robotTaskCode = data.getString("robotTaskCode");
                 if (robotTaskCode.equals(rcsTaskSubmit.getRobotTaskCode())){
@@ -191,18 +250,14 @@
      * @param rcsFactory
      * @return
      */
-    public int continueTask(RcsTaskContinue rcsTaskContinue, int rcsFactory){
+    public int continueTask(Object 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+inOk :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())) {
-                JSONObject data = rcsReturn.getData();
-                String robotTaskCode = data.getString("robotTaskCode");
-                if (robotTaskCode.equals(rcsTaskContinue.getRobotTaskCode())) {
-                    return 1;
-                }
+            if("SUCCESS".equals(rcsReturn.getCode())||"200".equals(rcsReturn.getCode())) {
+                return 1;
             }
         }
 
@@ -218,7 +273,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 +298,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);
@@ -272,65 +327,53 @@
 
         String robotTaskCode = rcsReporterTask.getRobotTaskCode();
         String singleRobotCode = rcsReporterTask.getSingleRobotCode();
-        JSONObject values = rcsReporterTask.getExtra().getJSONObject("values");
-        // start : 浠诲姟寮�濮嬶紱outbin : 璧板嚭鍌ㄤ綅锛沞nd : 浠诲姟瀹屾垚
-        String method = values.getString("method");
-        String carrierType = values.getString("carrierType");
-        String slotCategory = values.getString("slotCategory");
-        String slotCode = values.getString("slotCode");
-
-        try {
-            if ("Q3".equals(carrierType) || "Q8".equals(carrierType)) {    //AGV
+        String[] split = robotTaskCode.split("-");
+        robotTaskCode = split[0];
+        //鍗庢檽AGV鐘舵�佸弽棣堬紝鍙婄敵璇�
+        if(Cools.isEmpty(rcsReporterTask.getExtra())){
+            if(Cools.isEmpty(rcsReporterTask.getMethod())){
+                log.error("鍗庢檽AGV涓婃姤鐘舵�丮ethod涓虹┖锛�");
+                rcsReturn.setCode("Err_Internal");
+                rcsReturn.setMessage("鍗庢檽AGV涓婃姤鐘舵�丮ethod涓虹┖");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+            }else {
                 EntityWrapper<Task> wrapper = new EntityWrapper<>();
                 wrapper.eq("task_no", robotTaskCode);
                 Task task = taskService.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: {
+                String method = rcsReporterTask.getMethod();
+                JSONObject memo = Cools.isEmpty(task) ? null : JSONObject.parseObject(task.getMemo());
+                switch (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: {
+                    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: {
+                    case "TASK_END": {
+                        if(Cools.isEmpty(task)){
+                            rcsReturn.setCode("Err_RobotCodeNotMatch");
+                            rcsReturn.setMessage("");
+                            JSONObject data = new JSONObject();
+                            data.put("robotTaskCode", robotTaskCode);
+                            rcsReturn.setData(data);
+                            return rcsReturn;
+                        }
                         // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
                         task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
                         task.setModiTime(new Date());
                         task.setModiUser(defaultUserId);
                         taskService.updateById(task);
-                        // 浠诲姟瀹屾垚
-//                        mesService.reporterTask(rcsReporterTask);
-
-//                    EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
-//                    wapper2.eq("wrk_no", task.getWrkNo())
-//                            .eq("matnr", memo.getString("ItemNo"))
-//                            .eq("order_no", memo.getString("OrderNo"));
-//                    TaskDetl taskDetl = taskDetlService.selectOne(wapper2);
-//                    taskDetl.setAnfme()
-//                    taskDetlService.updateById();
-
-//                    // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
-//                    taskService.completeWrkMast();
-//                    taskDetlService.
-
                     } break;
-                    case APPLY_IN_STATION:
-                    case APPLY_OFF_STATION:
-                    case ARRIVE_OFF_STATION: {
+                    case "APPLY_IN_STATION":
+                    case "APPLY_OFF_STATION":
+                    case "ARRIVE_OFF_STATION": {
                         TransParent apply = new TransParent();
                         apply.setTaskno(robotTaskCode);
                         apply.setTaskname(memo.getString("taskName"));
@@ -338,21 +381,19 @@
                         String transType = memo.getString("TransType");
                         apply.setTransType(transType);
                         apply.setProductLineId(memo.getString("ProductLineId"));
-                        if(transType.equals("02") || transType.equals("04") || transType.equals("06")) {
-                            apply.setStationId(task.getSourceStaNo());
-                        } else {
-                            apply.setStationId(task.getStaNo());
-                        }
-
-                        if (RcsRetMethodEnum.APPLY_IN_STATION.getCode().equals(method)) {
+                        apply.setStationId(task.getSourceStaNo());
+                        //agv鍏ョ珯鐢宠
+                        if ("APPLY_IN_STATION".equals(method)) {
                             mesService.applyInStation(apply);
-                        } else if (RcsRetMethodEnum.APPLY_OFF_STATION.getCode().equals(method)) {
+                            //agv绂荤珯璇锋眰
+                        } else if ("APPLY_OFF_STATION".equals(method)) {
                             mesService.applyOutStation(apply);
-                        } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
+                            //agv绂荤珯瀹屾垚
+                        } else {
                             mesService.outStation(apply);
                         }
                     } break;
-                    case ARRIVE_ON_STATION: {
+                    case "ARRIVE_ON_STATION": {
                         // TODO: 濡傛灉浜х嚎鏄繍杈撹捣鐐癸紝鍒欎笉鍙戦�佸埌绔欏畬鎴愶紝鏆傛椂璋冭瘯浣跨敤lG锛屾湭瀹炵幇鍒ゆ柇
                         if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG")) {
                             break;
@@ -389,10 +430,27 @@
                     } break;
                     default: {} break;
                 }
-            } else if ("CTU".equals(carrierType)) { //CTU
-                EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
+            }
+            // 杩斿洖RCS
+            rcsReturn.setCode("SUCCESS");
+            rcsReturn.setMessage("");
+            JSONObject data = new JSONObject();
+            data.put("robotTaskCode", robotTaskCode);
+            rcsReturn.setData(data);
+            //娴峰悍AGV鐘舵�佸弽棣堬紝鍙婄敵璇�
+        }else {
+            JSONObject values = rcsReporterTask.getExtra().getJSONObject("values");
+            // start : 浠诲姟寮�濮嬶紱outbin : 璧板嚭鍌ㄤ綅锛沞nd : 浠诲姟瀹屾垚
+            String method = values.getString("method");
+            String carrierType = values.getString("carrierType");
+            String slotCategory = values.getString("slotCategory");
+            String slotCode = values.getString("slotCode");
+            try {
+                // q3,q8=1
+
+                EntityWrapper<Task> wrapper = new EntityWrapper<>();
                 wrapper.eq("task_no", robotTaskCode);
-                WrkMast task = wrkMastService.selectOne(wrapper);
+                Task task = taskService.selectOne(wrapper);
                 if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
                     rcsReturn.setCode("Err_RobotCodeNotMatch");
                     rcsReturn.setMessage("");
@@ -401,55 +459,126 @@
                     rcsReturn.setData(data);
                     return rcsReturn;
                 }
-//                JSONObject memo = JSONObject.parseObject(task.getMemo());
+                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.setWrkSts(302L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
                         task.setModiTime(new Date());
                         task.setModiUser(defaultUserId);
-                        wrkMastService.updateById(task);
+                        taskService.updateById(task);
+                    }
+                    break;
+                    case TASK_OUT_BIN: {
+                        // TODO锛氱珛搴撳嚭搴撲竴鎵橈紝AGV寮�濮嬭繍杈撳悗锛岀粰MES鍙戦�佸嚭搴撳畬鎴愶紙涓�鎵樺彂涓�娆★級
+//                        JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
+//                        mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
+                    }
+                    break;
+                    case TASK_END: {
+                        // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+                        task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                        task.setModiTime(new Date());
+                        task.setModiUser(defaultUserId);
+                        taskService.updateById(task);
+                        // 浠诲姟瀹屾垚
+//                        mesService.reporterTask(rcsReporterTask);
 
-                        // TODO锛氫换鍔″畬鎴愯Е鍙戝嚭鍏ュ簱鍙樻洿鎿嶄綔
+//                    EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
+//                    wapper2.eq("wrk_no", task.getWrkNo())
+//                            .eq("matnr", memo.getString("ItemNo"))
+//                            .eq("order_no", memo.getString("OrderNo"));
+//                    TaskDetl taskDetl = taskDetlService.selectOne(wapper2);
+//                    taskDetl.setAnfme()
+//                    taskDetlService.updateById();
 
+//                    // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+//                    taskService.completeWrkMast();
+//                    taskDetlService.
 
-//                        // 鍏ュ簱瀹屾垚
-//                        mesService.inFeedback(memo.getString("OrderNo"));
-//                        // 鍑哄簱瀹屾垚
-//                        mesService.outFeedback(memo.getString("OrderNo"));
-                    } break;
-                    default: {} break;
+                    }
+                    break;
+                    case APPLY_IN_STATION:
+                    case APPLY_OFF_STATION:
+                    case ARRIVE_OFF_STATION: {
+                        TransParent apply = new TransParent();
+                        apply.setTaskno(robotTaskCode);
+                        apply.setTaskname(memo.getString("taskName"));
+                        apply.setAgvCode(singleRobotCode);
+                        String transType = memo.getString("TransType");
+                        apply.setTransType(transType);
+                        apply.setProductLineId(memo.getString("ProductLineId"));
+                        if (transType.equals("02") || transType.equals("04") || transType.equals("06")) {
+                            apply.setStationId(task.getSourceStaNo());
+                        } else {
+                            apply.setStationId(task.getStaNo());
+                        }
+
+                        if (RcsRetMethodEnum.APPLY_IN_STATION.getCode().equals(method)) {
+                            mesService.applyInStation(apply);
+                        } else if (RcsRetMethodEnum.APPLY_OFF_STATION.getCode().equals(method)) {
+                            mesService.applyOutStation(apply);
+                        } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
+                            mesService.outStation(apply);
+                        }
+                    }
+                    break;
+                    case ARRIVE_ON_STATION: {
+                        // TODO: 濡傛灉浜х嚎鏄繍杈撹捣鐐癸紝鍒欎笉鍙戦�佸埌绔欏畬鎴愶紝鏆傛椂璋冭瘯浣跨敤lG锛屾湭瀹炵幇鍒ゆ柇
+                        if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG")) {
+                            break;
+                        }
+
+                        EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
+                        wapper2.eq("wrk_no", task.getWrkNo())
+                                .eq("matnr", memo.getString("Itemno"))
+                                .eq("order_no", memo.getString("OrderNo"));
+                        TaskDetl taskDetl = taskDetlService.selectOne(wapper2);
+                        TransArrivalStation arrivalStation = new TransArrivalStation();
+                        arrivalStation.setTaskno(robotTaskCode);
+                        arrivalStation.setTaskname(memo.getString("taskName"));
+                        arrivalStation.setTuoPanId(taskDetl.getZpallet());  // memo.getString("TuoPanId")
+                        arrivalStation.setProductLineId(memo.getString("ProductLineId"));
+                        String transType = memo.getString("TransType");
+                        arrivalStation.setDaotype(transType);
+                        if (transType.equals("02") || transType.equals("04") || transType.equals("06")) {
+                            arrivalStation.setStationID(task.getSourceStaNo());
+                        } else {
+                            arrivalStation.setStationID(task.getStaNo());
+                        }
+                        arrivalStation.setOrderNo(memo.getString("OrderNo"));
+                        arrivalStation.setAgvCode(singleRobotCode);
+                        arrivalStation.setItemno(memo.getString("Itemno"));
+                        String memo2 = taskDetl.getMemo();
+                        List<String> itemBarCode = new ArrayList<>();
+                        Matcher matcher = Pattern.compile("\"([^\"]*)\"").matcher(memo2);
+                        while (matcher.find()) {
+                            itemBarCode.add(matcher.group(1));
+                        }
+                        arrivalStation.setItemBarcode(itemBarCode);
+                        mesService.arriveOnStation(arrivalStation);
+                    }
+                    break;
+                    default: {
+                    }
+                    break;
                 }
+
+                // 杩斿洖RCS
+                rcsReturn.setCode("SUCCESS");
+                rcsReturn.setMessage("");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+            } catch (Exception e) {
+                log.error("RCS鍙嶉浠诲姟杩涘害澶勭悊寮傚父 - {}", rcsReporterTask, e);
+                rcsReturn.setCode("Err_Internal");
+                rcsReturn.setMessage("鍐呴儴澶勭悊寮傚父");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
             }
 
-            // 杩斿洖RCS
-            rcsReturn.setCode("SUCCESS");
-            rcsReturn.setMessage("");
-            JSONObject data = new JSONObject();
-            data.put("robotTaskCode", robotTaskCode);
-            rcsReturn.setData(data);
-        } catch (Exception e) {
-            log.error("RCS鍙嶉浠诲姟杩涘害澶勭悊寮傚父 - {}", rcsReporterTask, e);
-            rcsReturn.setCode("Err_Internal");
-            rcsReturn.setMessage("鍐呴儴澶勭悊寮傚父");
-            JSONObject data = new JSONObject();
-            data.put("robotTaskCode", robotTaskCode);
-            rcsReturn.setData(data);
         }
 
         return rcsReturn;
@@ -530,17 +659,53 @@
      * @param apply
      * @return
      */
-    public JSONObject hxApplyInLine(TransParent apply) {
+    public RcsReturn hxApplyInLine(TransParent apply) {
 
-        String status = mesService.applyInLine(apply);
-        JSONObject result = new JSONObject();
-        result.put("Success", 1);
-        result.put("Message", status);
+        RcsReturn rcsReturn = new RcsReturn();
+
+        String robotTaskCode = apply.getTaskno();
+        String singleRobotCode = apply.getAgvCode();
+        //鍗庢檽AGV鐢宠
+        if(Cools.isEmpty(apply.getMethod())){
+            log.error("鍗庢檽AGV涓婃姤鐘舵�丮ethod涓虹┖锛�");
+            rcsReturn.setCode("Err_Internal");
+            rcsReturn.setMessage("鍗庢檽AGV涓婃姤鐘舵�丮ethod涓虹┖");
+            JSONObject data = new JSONObject();
+            data.put("robotTaskCode", robotTaskCode);
+            rcsReturn.setData(data);
+        }else {
+            EntityWrapper<Task> wrapper = new EntityWrapper<>();
+            wrapper.eq("task_no", robotTaskCode);
+            Task task = taskService.selectOne(wrapper);
+            String method = apply.getMethod();
+            JSONObject memo = Cools.isEmpty(task) ? null : JSONObject.parseObject(task.getMemo());
+            switch (method) {
+                case "APPLY_IN_STATION":
+                case "APPLY_OFF_STATION":
+                case "ARRIVE_OFF_STATION": {
+                    //agv鍏ョ珯鐢宠
+                    if ("APPLY_IN_STATION".equals(method)) {
+                        mesService.applyInStation(apply);
+                        //agv绂荤珯璇锋眰
+                    } else if ("APPLY_OFF_STATION".equals(method)) {
+                        mesService.applyOutStation(apply);
+                        //agv绂荤珯瀹屾垚
+                    } else {
+                        mesService.outStation(apply);
+                    }
+                } break;
+                default: {} break;
+            }
+        }
+        // 杩斿洖RCS
+        rcsReturn.setCode("SUCCESS");
+        rcsReturn.setMessage("");
         JSONObject data = new JSONObject();
-        data.put("status", status);
-        result.put("Data", data);
+        data.put("robotTaskCode", robotTaskCode);
+        rcsReturn.setData(data);
+        //娴峰悍AGV鐘舵�佸弽棣堬紝鍙婄敵璇�
 
-        return result;
+        return rcsReturn;
     }
 
     // endregion
@@ -563,11 +728,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);
@@ -581,7 +751,7 @@
             {
                 result.append(line);
             }
-            log.info("recv - {}", result);
+            log.info("rec - {}", result);
         }
         catch (ConnectException e)
         {

--
Gitblit v1.9.1