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

---
 src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java |  150 +++++++++++++++++++++++++++----------------------
 1 files changed, 82 insertions(+), 68 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 2cb7158..c3c0439 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -1,6 +1,7 @@
 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;
@@ -11,6 +12,7 @@
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
+import com.zy.core.model.Task;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.thread.SiemensDevpThread;
 import lombok.extern.slf4j.Slf4j;
@@ -68,7 +70,12 @@
         String slotCategory = values.getString("slotCategory");
         String slotCode = values.getString("slotCode");
         EntityWrapper<AgvTask> wrapper = new EntityWrapper<>();
-        wrapper.eq("task_no", rcsReporterTask.getRobotTaskCode().substring(0, rcsReporterTask.getRobotTaskCode().length() - 2));
+        // 淇敼鍚庣殑閫昏緫锛氭湁"-"鍒欏幓鎺夋渶鍚庝竴涓�"-"鍙婂悗闈㈠唴瀹癸紝娌℃湁鍒欎繚鎸佸師鏍�
+        String taskNo = rcsReporterTask.getRobotTaskCode();
+        if (taskNo.contains("-")) {
+            taskNo = taskNo.substring(0, taskNo.lastIndexOf("-"));
+        }
+        wrapper.eq("task_no", taskNo);
         AgvTask task = agvTaskService.selectOne(wrapper);
         if (!Cools.isEmpty(task)) {
             try {
@@ -100,7 +107,7 @@
                                     rcsReturn.setData(data);
                                 } else {
                                     //鍑哄彂PLC绔欑偣鐨勬壂鐮佸櫒鎵爜
-                                    boolean result = MessageQueue.offer(SlaveType.Devp, 1, new com.zy.core.model.Task(3, staProtocol));
+                                    boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol));
                                     if (result) {
                                         log.info("鍏ュ簱绔欑偣={}瑙﹀彂鎵爜鎴愬姛", staProtocol.getSiteId());
                                         // 杩斿洖RCS
@@ -134,7 +141,6 @@
                             transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                             transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                             transParent.setStationId(task.getStaNo());
-                            transParent.setStartStation(task.getSourceStaNo());
                             transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
                             //08-1鏄┖鎵樼洏杞簭浠诲姟
                             //08-2鏄墿鏂欒浆搴忎换鍔�
@@ -169,7 +175,26 @@
 
                     //鏀捐揣瀹屾垚 --銆媋gv宸茬粡绂诲紑
                     case TASK_END: {
-                        if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) {
+                        try {
+                            Thread.sleep(5000);
+                        } catch (InterruptedException e) {
+                            throw new RuntimeException(e);
+                        }
+                        if (task.getStaNo().equals("Q-E1")){
+                            // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+                            task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                            task.setModiTime(new Date());
+                            agvTaskService.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();
@@ -190,8 +215,8 @@
                             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());
+                                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                                log.info("AGV鏀捐揣瀹屾垚锛岀粰绔欑偣鍐�9997宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}", result, task.getStaNo(), task.getTaskNo());
                                 if (result) {
                                     // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
                                     task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
@@ -200,6 +225,7 @@
                                     // 杩斿洖RCS
                                     rcsReturn.setCode("SUCCESS");
                                     rcsReturn.setMessage("");
+
                                     JSONObject data = new JSONObject();
                                     data.put("robotTaskCode", robotTaskCode);
                                     rcsReturn.setData(data);
@@ -224,7 +250,6 @@
                             transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                             transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                             transParent.setStationId(task.getStaNo());
-                            transParent.setStartStation(task.getSourceStaNo());
                             transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
                             //08-1鏄┖鎵樼洏杞簭浠诲姟
                             //08-2鏄墿鏂欒浆搴忎换鍔�
@@ -299,8 +324,7 @@
                             TransParent transParent = new TransParent();
                             transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                             transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
-                            transParent.setStationId(task.getStaNo());
-                            transParent.setStartStation(task.getSourceStaNo());
+                            transParent.setStationId(task.getSourceStaNo());
                             transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
                             //08-1鏄┖鎵樼洏杞簭浠诲姟
                             //08-2鏄墿鏂欒浆搴忎换鍔�
@@ -341,9 +365,11 @@
                             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));
+                                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                                 log.info("AGV鍙栬揣瀹屾垚锛岀粰绔欑偣鍐�0宸ヤ綔鍙�,涓嬪彂浠诲姟:{},绔欑偣:{},agv浠诲姟鍙�:{}", result, task.getStaNo(), task.getTaskNo());
                                 if (result) {
+                                    task.setWrkSts(303L);
+                                    agvTaskService.updateById(task);
                                     // 杩斿洖RCS
                                     rcsReturn.setCode("SUCCESS");
                                     rcsReturn.setMessage("");
@@ -358,15 +384,12 @@
                                     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.setStartStation(task.getSourceStaNo());
+                            transParent.setStationId(task.getSourceStaNo());
                             transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
                             //08-1鏄┖鎵樼洏杞簭浠诲姟
                             //08-2鏄墿鏂欒浆搴忎换鍔�
@@ -400,6 +423,7 @@
                     break;
                     //AGV鍙栬揣绂荤珯璇锋眰
                     case APPLY_IN_OFF_STATION: {
+
                         //濡傛灉鏄珛搴撶珯鐐圭洿鎺ュ厑璁哥绔�
                         if (task.getSourceStaNo().equals("401") || task.getSourceStaNo().equals("402") || task.getSourceStaNo().equals("307")) {
                             RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
@@ -428,12 +452,20 @@
                                 }
                             }
                         } 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(task.getStaNo());
-                            transParent.setStartStation(task.getSourceStaNo());
+                            transParent.setStationId(values.getString("slotName"));
                             transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
                             //08-1鏄┖鎵樼洏杞簭浠诲姟
                             //08-2鏄墿鏂欒浆搴忎换鍔�
@@ -467,7 +499,7 @@
                     //AGV鏀捐揣绂荤珯璇锋眰
                     case APPLY_OFF_STATION: {
                         //濡傛灉鏄珛搴撶珯鐐圭洿鎺ュ厑璁哥绔�
-                        if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) {
+                        if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307") || task.getTaskType().equals("AGV琛ョ┖鏂欐灦")) {
                             RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
                             rcsTaskContinue.setRobotTaskCode(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                             rcsTaskContinue.setTriggerType("TASK");
@@ -478,7 +510,7 @@
                             if (!StringUtils.isEmpty(response) && response.contains("code")) {
                                 RcsReturn rcsReturn1 = JSONObject.parseObject(response, RcsReturn.class);
                                 if ("SUCCESS".equals(rcsReturn1.getCode())) {
-                                    // 杩斿洖RCS
+//                                     杩斿洖RCS
                                     rcsReturn.setCode("SUCCESS");
                                     rcsReturn.setMessage("");
                                     JSONObject data = new JSONObject();
@@ -494,12 +526,19 @@
                                 }
                             }
                         } 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(task.getStaNo());
-                            transParent.setStartStation(task.getSourceStaNo());
+                            transParent.setStationId(values.getString("slotName"));
                             transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
                             //08-1鏄┖鎵樼洏杞簭浠诲姟
                             //08-2鏄墿鏂欒浆搴忎换鍔�
@@ -533,7 +572,7 @@
                     }
                     //鍒扮珯瀹屾垚
                     case ARRIVE_ON_STATION: {
-                        if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) {
+                        if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || values.getString("slotName").equals("307")) {
                             // 杩斿洖RCS
                             rcsReturn.setCode("SUCCESS");
                             rcsReturn.setMessage("");
@@ -544,53 +583,7 @@
                             TransParent transParent = new TransParent();
                             transParent.setTaskno(task.getTaskNo() + "-" + (task.getCtnType() - 1));
                             transParent.setTaskname(task.getTaskNo() + "-" + (task.getCtnType() - 1));
-                            transParent.setStationId(task.getStaNo());
-                            transParent.setStartStation(task.getSourceStaNo());
-                            transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
-                            //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;
-                    }
-                    //鍒扮珯瀹屾垚
-                    case ARRIVE_PUT_STATION: {
-                        if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().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(task.getStaNo());
-                            transParent.setStartStation(task.getSourceStaNo());
+                            transParent.setStationId(values.getString("slotName"));
                             transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
                             //08-1鏄┖鎵樼洏杞簭浠诲姟
                             //08-2鏄墿鏂欒浆搴忎换鍔�
@@ -781,4 +774,25 @@
 
         return 0;
     }
+
+    public void agvPause(StaProtocol staProtocol){
+        if (staProtocol.isHighError()) {
+            String url = HIK_URL + "/api/robot/controller/zone/pause";
+            try {
+
+                System.out.println("瓒呴珮鎶ヨ");
+                JSONObject params = null;
+                params.put("zoneCode", "GK307");
+                params.put("mapCode", "BB");
+                params.put("invoke", "FREEZE");
+                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);
+            }
+        }
+    }
 }

--
Gitblit v1.9.1