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/service/impl/RcsServiceImpl.java |  711 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 636 insertions(+), 75 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 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);
+            }
+        }
+    }
 }

--
Gitblit v1.9.1