From ccebcba935e9879256215ce36896991b8b18eb6e Mon Sep 17 00:00:00 2001 From: yuliang <398780299@qq.com> Date: Sat, 26 Jul 2025 12:08:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=98=89=E5=85=B4=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/galaxis/rcs/amr/AmrAgvItem.java | 18 +++++++++++++++--- .../java/com/galaxis/rcs/amr/AmrConnectorThread.java | 2 ++ .../com/galaxis/rcs/connector/amr/fm600/Fm600Item.java | 2 ++ .../java/com/yvan/logisticsModel/LogisticsRuntime.java | 6 +++--- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/servo/src/main/java/com/galaxis/rcs/amr/AmrAgvItem.java b/servo/src/main/java/com/galaxis/rcs/amr/AmrAgvItem.java index aa5c8c9..1277282 100644 --- a/servo/src/main/java/com/galaxis/rcs/amr/AmrAgvItem.java +++ b/servo/src/main/java/com/galaxis/rcs/amr/AmrAgvItem.java @@ -748,8 +748,10 @@ public abstract class AmrAgvItem extends ExecutorItem { deviceTask.isGroupEnd = true; // 最后一个规划任务为旋转时需要添加一个endDirection if (rotationPlanTaskIdSet.size() > 0) { - deviceTask.operationType = AmrAgvItem.COperationType.move; - deviceTask.pickMode = AmrAgvItem.CPickMode.normal; + if (deviceTask.operationType <= AmrAgvItem.COperationType.move) { + deviceTask.operationType = AmrAgvItem.COperationType.move; + deviceTask.pickMode = AmrAgvItem.CPickMode.normal; + } deviceTask.endDirection = direction; deviceTask.planTaskIdSet.addAll(rotationPlanTaskIdSet); if (deviceTask.movePlanTaskId == null) { @@ -760,9 +762,19 @@ public abstract class AmrAgvItem extends ExecutorItem { // 反向标记任务组 int lastIndex = deviceTaskList.size() - 1; + + for (int i = deviceTaskList.size() - 1; i >= 0; i--) { + AmrDeviceTask d = deviceTaskList.get(i); + if (d.operationType > 0) { + lastIndex = i; + break; + } + } + + for (int i = deviceTaskList.size() - 1; i >= 0; i--) { AmrDeviceTask d = deviceTaskList.get(i); - if (d.isGroupEnd) { + if (d.isGroupEnd && d.operationType > AmrAgvItem.COperationType.move) { lastIndex = i; } else { d.operationType = deviceTaskList.get(lastIndex).operationType; diff --git a/servo/src/main/java/com/galaxis/rcs/amr/AmrConnectorThread.java b/servo/src/main/java/com/galaxis/rcs/amr/AmrConnectorThread.java index 66bde03..72cc7b8 100644 --- a/servo/src/main/java/com/galaxis/rcs/amr/AmrConnectorThread.java +++ b/servo/src/main/java/com/galaxis/rcs/amr/AmrConnectorThread.java @@ -3,6 +3,7 @@ package com.galaxis.rcs.amr; import com.fasterxml.jackson.core.JsonProcessingException; import com.galaxis.rcs.amr.sendEntity.RcsTaskMessage; import com.galaxis.rcs.connector.amr.AmrDeviceConnector; +import com.querydsl.core.util.StringUtils; import com.yvan.logisticsModel.LogisticsRuntime; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.mqttv5.common.MqttException; @@ -88,6 +89,7 @@ public class AmrConnectorThread extends Thread { taskMessage.ChargeDirection = currentTask.chargeDirection; taskMessage.ChargeLocation = currentTask.chargeLocation; taskMessage.EndDirection = currentTask.endDirection; + taskMessage.StorageRacksNo = currentTask.storageRacksNo; try { // 发送任务 this.__currentTaskSeqNo = taskMessage.SeqNo; diff --git a/servo/src/main/java/com/galaxis/rcs/connector/amr/fm600/Fm600Item.java b/servo/src/main/java/com/galaxis/rcs/connector/amr/fm600/Fm600Item.java index b708468..78be607 100644 --- a/servo/src/main/java/com/galaxis/rcs/connector/amr/fm600/Fm600Item.java +++ b/servo/src/main/java/com/galaxis/rcs/connector/amr/fm600/Fm600Item.java @@ -43,6 +43,8 @@ public class Fm600Item extends AmrAgvItem { d.operationType = COperationType.unload; } d.pickMode = CPickMode.normal; + // 临时处理方案 + d.storageRacksNo = "any"; } } diff --git a/servo/src/main/java/com/yvan/logisticsModel/LogisticsRuntime.java b/servo/src/main/java/com/yvan/logisticsModel/LogisticsRuntime.java index 371175c..a63d173 100644 --- a/servo/src/main/java/com/yvan/logisticsModel/LogisticsRuntime.java +++ b/servo/src/main/java/com/yvan/logisticsModel/LogisticsRuntime.java @@ -202,12 +202,12 @@ public class LogisticsRuntime { FrontendMessagePushService.INSTANCE.pushDeviceAlive(this, sender.id, sender.getT(), true); } // 设备状态变化 - if (sender instanceof PtrAgvItem) { - var ptr = (PtrAgvItem) sender; + if (sender instanceof AmrAgvItem) { + var ptr = (AmrAgvItem) sender; FrontendMessagePushService.INSTANCE.pushDeviceStatus(this, sender.id, ptr.getState()); } else { - log.error("AGV事件类型 {} 仅支持 PtrAgvItem 类型的执行器", type); + log.error("AGV事件类型 {} 仅支持 AmrAgvItem 类型的执行器", type); } break; }