From c13654e17f10efee79980afd471d1e4966c53bf5 Mon Sep 17 00:00:00 2001 From: luoyifan Date: Fri, 27 Jun 2025 18:22:47 +0800 Subject: [PATCH] agvCarry --- .../galaxis/rcs/common/entity/StoreLocation.java | 23 ++++++++++++++++++++++ .../yvan/workbench/controller/RcsController.java | 16 +++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/servo/src/main/java/com/galaxis/rcs/common/entity/StoreLocation.java b/servo/src/main/java/com/galaxis/rcs/common/entity/StoreLocation.java index a301f1f..3df6545 100644 --- a/servo/src/main/java/com/galaxis/rcs/common/entity/StoreLocation.java +++ b/servo/src/main/java/com/galaxis/rcs/common/entity/StoreLocation.java @@ -1,5 +1,7 @@ package com.galaxis.rcs.common.entity; +import org.clever.core.Conv; + /** * 存储存储位信息 *
@@ -21,4 +23,25 @@ public record StoreLocation(
     public String toString() {
         return rackId + "_" + bay + "_" + level + "_" + cell;
     }
+
+    public static StoreLocation of(String rackPosition, String separator) {
+        // 从 'rack1/0/0/0' 解析为 'rack1_0_0_0'
+        if (rackPosition == null || rackPosition.isEmpty()) {
+            throw new RuntimeException("rackPosition cannot be null or empty");
+        }
+
+        String[] parts = rackPosition.split(separator);
+        if (parts.length == 1) {
+            return new StoreLocation(parts[0], 0, 0, 0);
+        }
+        if (parts.length != 4) {
+            throw new RuntimeException("Invalid rack position format: " + rackPosition);
+        }
+
+        String rackId = parts[0];
+        int bay = Conv.asInteger(parts[1]);
+        int level = Conv.asInteger(parts[2]);
+        int cell = Conv.asInteger(parts[3]);
+        return new StoreLocation(rackId, bay, level, cell);
+    }
 }
diff --git a/servo/src/main/java/com/yvan/workbench/controller/RcsController.java b/servo/src/main/java/com/yvan/workbench/controller/RcsController.java
index 48b51fd..4816106 100644
--- a/servo/src/main/java/com/yvan/workbench/controller/RcsController.java
+++ b/servo/src/main/java/com/yvan/workbench/controller/RcsController.java
@@ -172,11 +172,15 @@ public class RcsController {
         }
 
         LogisticsRuntime runtime = LogisticsRuntimeService.INSTANCE.getByProjectEnv(projectUUID, envId);
-        StaticItem sourceItem = runtime.getStaticItemById(fromStoreLoc);
+
+        StoreLocation sourceLocation = StoreLocation.of(fromStoreLoc, "/");
+        StoreLocation targetLocation = StoreLocation.of(targetStoreLoc, "/");
+
+        StaticItem sourceItem = runtime.getStaticItemById(sourceLocation.rackId());
         if (sourceItem == null) {
             return Model.newFail("fromStoreLoc storePoint not found!");
         }
-        StaticItem targetItem = runtime.getStaticItemById(targetStoreLoc);
+        StaticItem targetItem = runtime.getStaticItemById(targetLocation.rackId());
         if (targetItem == null) {
             return Model.newFail("targetStoreLoc storePoint not found!");
         }
@@ -217,8 +221,8 @@ public class RcsController {
         bizTask.setBizType(BizTaskType.MOVE.toString());
         bizTask.setLpn("N/A");
         bizTask.setPriority(Conv.asInteger(option.get("priority"), 1));
-        bizTask.setTaskFrom(sourceItem.getId());
-        bizTask.setTaskTo(targetItem.getId());
+        bizTask.setTaskFrom(fromStoreLoc);
+        bizTask.setTaskTo(targetStoreLoc);
         bizTask.setAllocatedExecutorId(agvId);
         bizTask.setBizTaskPayload("N/A");
         bizTask.setBizTaskErrorInfo("N/A");
@@ -229,8 +233,8 @@ public class RcsController {
 
         CarryTask carryTask = new CarryTask(
             agvId, "dummy", 1,
-            new StoreLocation("rack1", 0, 1, 0),
-            new StoreLocation("54", 0, 0, 0)
+            sourceLocation,
+            targetLocation
         );
 
         runtime.pathPlannerMap.get(executorItem.getT())