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