From 520d4be5c6b8136f61811c9227515fec8937c709 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期四, 07 五月 2026 10:22:56 +0800
Subject: [PATCH] #latent_code

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
index 2613bdb..c9d0c2c 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
@@ -192,6 +192,11 @@
 
     @Override
     public LaneDto checkoutOriginLane(Task task) {
+        return checkoutOriginLane(task, null);
+    }
+
+    @Override
+    public LaneDto checkoutOriginLane(Task task, Long agvId) {
         Long codeId = null;
         TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl());
         switch (Objects.requireNonNull(typeType)) {
@@ -201,7 +206,7 @@
                 break;
             case STA_TO_LOC:
             case STA_TO_STA:
-                codeId = staService.getById(task.getOriSta()).getCode();
+                codeId = staService.resolveWorkCodeId(staService.getById(task.getOriSta()), agvId);
                 break;
             default:
                 break;
@@ -215,6 +220,11 @@
 
     @Override
     public LaneDto checkoutDestinationLane(Task task) {
+        return checkoutDestinationLane(task, null);
+    }
+
+    @Override
+    public LaneDto checkoutDestinationLane(Task task, Long agvId) {
         Long codeId = null;
         TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl());
         switch (Objects.requireNonNull(typeType)) {
@@ -224,7 +234,7 @@
                 break;
             case LOC_TO_STA:
             case STA_TO_STA:
-                codeId = staService.getById(task.getDestSta()).getCode();
+                codeId = staService.resolveWorkCodeId(staService.getById(task.getDestSta()), agvId);
                 break;
             default:
                 break;
@@ -281,6 +291,15 @@
             wrapper.eq(Task::getTaskSts, taskSts.val());
         }
         return this.list(wrapper).stream().findFirst().orElse(null);
+    }
+
+    @Override
+    public void refreshWorkCodes(Task task, Long agvId) {
+        if (task == null) {
+            return;
+        }
+        task.setOriCode(resolveOriginCodeId(task, agvId));
+        task.setDestCode(resolveDestinationCodeId(task, agvId));
     }
 
     @Override
@@ -458,4 +477,38 @@
         }
     }
 
+    private Long resolveOriginCodeId(Task task, Long agvId) {
+        TaskTypeType taskType = TaskTypeType.get(task.getTaskTypeEl());
+        if (taskType == null) {
+            return task.getOriCode();
+        }
+        switch (taskType) {
+            case LOC_TO_LOC:
+            case LOC_TO_STA:
+                return task.getOriLoc() == null ? null : locService.getById(task.getOriLoc()).getCode();
+            case STA_TO_LOC:
+            case STA_TO_STA:
+                return task.getOriSta() == null ? null : staService.resolveWorkCodeId(staService.getById(task.getOriSta()), agvId);
+            default:
+                return task.getOriCode();
+        }
+    }
+
+    private Long resolveDestinationCodeId(Task task, Long agvId) {
+        TaskTypeType taskType = TaskTypeType.get(task.getTaskTypeEl());
+        if (taskType == null) {
+            return task.getDestCode();
+        }
+        switch (taskType) {
+            case LOC_TO_LOC:
+            case STA_TO_LOC:
+                return task.getDestLoc() == null ? null : locService.getById(task.getDestLoc()).getCode();
+            case LOC_TO_STA:
+            case STA_TO_STA:
+                return task.getDestSta() == null ? null : staService.resolveWorkCodeId(staService.getById(task.getDestSta()), agvId);
+            default:
+                return task.getDestCode();
+        }
+    }
+
 }

--
Gitblit v1.9.1