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 | 102 +++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 82 insertions(+), 20 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 8d9f914..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
@@ -168,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();
@@ -189,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 浠诲姟缁撴潫
@@ -199,6 +225,7 @@
// 杩斿洖RCS
rcsReturn.setCode("SUCCESS");
rcsReturn.setMessage("");
+
JSONObject data = new JSONObject();
data.put("robotTaskCode", robotTaskCode);
rcsReturn.setData(data);
@@ -297,7 +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.setStationId(task.getSourceStaNo());
transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
//08-1鏄┖鎵樼洏杞簭浠诲姟
//08-2鏄墿鏂欒浆搴忎换鍔�
@@ -338,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("");
@@ -355,14 +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.setStationId(task.getSourceStaNo());
transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
//08-1鏄┖鎵樼洏杞簭浠诲姟
//08-2鏄墿鏂欒浆搴忎换鍔�
@@ -378,10 +405,6 @@
//鍙栬揣绂诲紑绔欑偣
int i = AGVDepartureCompleted(transParent);
if (i == 1) {
- // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
- task.setWrkSts(304L); // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
- task.setModiTime(new Date());
- agvTaskService.updateById(task);
rcsReturn.setCode("SUCCESS");
rcsReturn.setMessage("");
JSONObject data = new JSONObject();
@@ -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,11 +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.setStationId(values.getString("slotName"));
transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
//08-1鏄┖鎵樼洏杞簭浠诲姟
//08-2鏄墿鏂欒浆搴忎换鍔�
@@ -466,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");
@@ -477,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();
@@ -493,11 +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.setStationId(values.getString("slotName"));
transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
//08-1鏄┖鎵樼洏杞簭浠诲姟
//08-2鏄墿鏂欒浆搴忎换鍔�
@@ -531,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("");
@@ -542,7 +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.setStationId(values.getString("slotName"));
transParent.setAgvCode("2");//杩炴帴鍣ㄥ簱
//08-1鏄┖鎵樼洏杞簭浠诲姟
//08-2鏄墿鏂欒浆搴忎换鍔�
@@ -733,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