From 472fb990c1c6216f6f375eb65ba957aaf75b3a00 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 05 一月 2026 13:26:44 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java |  151 ++++++++++++++++++++++++++-----------------------
 1 files changed, 80 insertions(+), 71 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
index e33f1f6..daa7470 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -899,6 +899,8 @@
 
             AgvModel agvModel = agvModelService.getByAgvId(agvId);
             Double workDirection = agvModel.getWorkDirection();
+            boolean backupAction = null != agvModel.getBackupAction() && agvModel.getBackupActionBool();
+            boolean needUndocking = null != agvModel.getNeedUndocking() && agvModel.getNeedUndockingBool();
             AgvSpeedType agvSpeedType = AgvSpeedType.query(agvModel.getTravelSpeed());
             assert agvSpeedType != null;
 
@@ -1063,7 +1065,6 @@
                 AgvDirectionType agvDirectionType;
                 Double staWorkDirection;
                 AgvBackpackType backpackType = AgvBackpackType.query(segment.getBackpack());
-                // todo agvModel backpackAction ?
                 switch (Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))) {
                     case ORI_LOC:
                         assert backpackType != null;
@@ -1090,22 +1091,24 @@
                                 agvId,    // AGV
                                 now    // 宸ヤ綔鏃堕棿
                         ));
-                        // 鏆傚瓨鐐规斁璐�
-                        actionList.add(new Action(
-                                null,    // 缂栧彿
-                                task.getBusId(),    // 鎬荤嚎
-                                task.getId(),    // 浠诲姟
-                                null,    // 鍔ㄤ綔鍙�
-                                null,    // 浼樺厛绾�
-                                ActionTypeType.ReadyReleaseToAgvSite.desc,    // 鍚嶇О
-                                (double) backpackType.lev,    // 灞炴�у��
-                                lastCode.getData(),    // 鍦伴潰鐮�
-                                String.valueOf(backpackType.height),   // 鍔ㄤ綔鍙傛暟
-                                ActionTypeType.ReadyReleaseToAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
-                                actionPrepareSts,    // 鍔ㄤ綔杩涘害
-                                agvId,    // AGV
-                                now    // 宸ヤ綔鏃堕棿
-                        ));
+                        // 鑳岀瘬鏀捐揣
+                        if (backupAction) {
+                            actionList.add(new Action(
+                                    null,    // 缂栧彿
+                                    task.getBusId(),    // 鎬荤嚎
+                                    task.getId(),    // 浠诲姟
+                                    null,    // 鍔ㄤ綔鍙�
+                                    null,    // 浼樺厛绾�
+                                    ActionTypeType.ReadyReleaseToAgvSite.desc,    // 鍚嶇О
+                                    (double) backpackType.lev,    // 灞炴�у��
+                                    lastCode.getData(),    // 鍦伴潰鐮�
+                                    String.valueOf(backpackType.height),   // 鍔ㄤ綔鍙傛暟
+                                    ActionTypeType.ReadyReleaseToAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
+                                    actionPrepareSts,    // 鍔ㄤ綔杩涘害
+                                    agvId,    // AGV
+                                    now    // 宸ヤ綔鏃堕棿
+                            ));
+                        }
                         break;
                     case DEST_LOC:
                         assert backpackType != null;
@@ -1113,22 +1116,24 @@
                         if (!lastDirection.equals(workDirection)) {
                             throw new CoolException(agvNo + "鍙峰皬杞︽柟鍚戦敊璇紝璇锋帹鑷宠浆寮偣鎵嬪姩璋冩暣");
                         }
-                        // 鏆傚瓨鐐瑰彇璐ц揣
-                        actionList.add(new Action(
-                                null,    // 缂栧彿
-                                task.getBusId(),    // 鎬荤嚎
-                                task.getId(),    // 浠诲姟
-                                null,    // 鍔ㄤ綔鍙�
-                                null,    // 浼樺厛绾�
-                                ActionTypeType.ReadyTakeFromAgvSite.desc,    // 鍚嶇О
-                                (double) backpackType.lev,    // 灞炴�у��
-                                lastCode.getData(),    // 鍦伴潰鐮�
-                                String.valueOf(backpackType.height),   // 鍔ㄤ綔鍙傛暟
-                                ActionTypeType.ReadyTakeFromAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
-                                actionPrepareSts,    // 鍔ㄤ綔杩涘害
-                                agvId,    // AGV
-                                now    // 宸ヤ綔鏃堕棿
-                        ));
+                        // 鑳岀瘬鍙栬揣
+                        if (backupAction) {
+                            actionList.add(new Action(
+                                    null,    // 缂栧彿
+                                    task.getBusId(),    // 鎬荤嚎
+                                    task.getId(),    // 浠诲姟
+                                    null,    // 鍔ㄤ綔鍙�
+                                    null,    // 浼樺厛绾�
+                                    ActionTypeType.ReadyTakeFromAgvSite.desc,    // 鍚嶇О
+                                    (double) backpackType.lev,    // 灞炴�у��
+                                    lastCode.getData(),    // 鍦伴潰鐮�
+                                    String.valueOf(backpackType.height),   // 鍔ㄤ綔鍙傛暟
+                                    ActionTypeType.ReadyTakeFromAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
+                                    actionPrepareSts,    // 鍔ㄤ綔杩涘害
+                                    agvId,    // AGV
+                                    now    // 宸ヤ綔鏃堕棿
+                            ));
+                        }
 
                         // 璐ф灦鏀捐揣
                         Loc destLoc = locService.getById(task.getDestLoc());
@@ -1194,23 +1199,25 @@
                                 agvId,    // AGV
                                 now    // 宸ヤ綔鏃堕棿
                         ));
-                        // 鏆傚瓨鐐规斁璐�
-                        assert backpackType != null;
-                        actionList.add(new Action(
-                                null,    // 缂栧彿
-                                task.getBusId(),    // 鎬荤嚎
-                                task.getId(),    // 浠诲姟
-                                null,    // 鍔ㄤ綔鍙�
-                                null,    // 浼樺厛绾�
-                                ActionTypeType.ReadyReleaseToAgvSite.desc,    // 鍚嶇О
-                                (double) backpackType.lev,    // 灞炴�у��
-                                lastCode.getData(),    // 鍦伴潰鐮�
-                                String.valueOf(backpackType.height),   // 鍔ㄤ綔鍙傛暟
-                                ActionTypeType.ReadyReleaseToAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
-                                actionPrepareSts,    // 鍔ㄤ綔杩涘害
-                                agvId,    // AGV
-                                now    // 宸ヤ綔鏃堕棿
-                        ));
+                        // 鑳岀瘬鏀捐揣
+                        if (backupAction) {
+                            assert backpackType != null;
+                            actionList.add(new Action(
+                                    null,    // 缂栧彿
+                                    task.getBusId(),    // 鎬荤嚎
+                                    task.getId(),    // 浠诲姟
+                                    null,    // 鍔ㄤ綔鍙�
+                                    null,    // 浼樺厛绾�
+                                    ActionTypeType.ReadyReleaseToAgvSite.desc,    // 鍚嶇О
+                                    (double) backpackType.lev,    // 灞炴�у��
+                                    lastCode.getData(),    // 鍦伴潰鐮�
+                                    String.valueOf(backpackType.height),   // 鍔ㄤ綔鍙傛暟
+                                    ActionTypeType.ReadyReleaseToAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
+                                    actionPrepareSts,    // 鍔ㄤ綔杩涘害
+                                    agvId,    // AGV
+                                    now    // 宸ヤ綔鏃堕棿
+                            ));
+                        }
                         break;
                     case DEST_STA:
                         // 绔欑偣鏀捐揣
@@ -1239,23 +1246,25 @@
                             ));
                             lastDirection = destStaWorkDirection;
                         }
-                        // 鏆傚瓨鐐瑰彇璐�
-                        assert backpackType != null;
-                        actionList.add(new Action(
-                                null,    // 缂栧彿
-                                task.getBusId(),    // 鎬荤嚎
-                                task.getId(),    // 浠诲姟
-                                null,    // 鍔ㄤ綔鍙�
-                                null,    // 浼樺厛绾�
-                                ActionTypeType.ReadyTakeFromAgvSite.desc,    // 鍚嶇О
-                                (double) backpackType.lev,    // 灞炴�у��
-                                lastCode.getData(),    // 鍦伴潰鐮�
-                                String.valueOf(backpackType.height),   // 鍔ㄤ綔鍙傛暟
-                                ActionTypeType.ReadyTakeFromAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
-                                actionPrepareSts,    // 鍔ㄤ綔杩涘害
-                                agvId,    // AGV
-                                now    // 宸ヤ綔鏃堕棿
-                        ));
+                        // 鑳岀瘬鍙栬揣
+                        if (backupAction) {
+                            assert backpackType != null;
+                            actionList.add(new Action(
+                                    null,    // 缂栧彿
+                                    task.getBusId(),    // 鎬荤嚎
+                                    task.getId(),    // 浠诲姟
+                                    null,    // 鍔ㄤ綔鍙�
+                                    null,    // 浼樺厛绾�
+                                    ActionTypeType.ReadyTakeFromAgvSite.desc,    // 鍚嶇О
+                                    (double) backpackType.lev,    // 灞炴�у��
+                                    lastCode.getData(),    // 鍦伴潰鐮�
+                                    String.valueOf(backpackType.height),   // 鍔ㄤ綔鍙傛暟
+                                    ActionTypeType.ReadyTakeFromAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
+                                    actionPrepareSts,    // 鍔ㄤ綔杩涘害
+                                    agvId,    // AGV
+                                    now    // 宸ヤ綔鏃堕棿
+                            ));
+                        }
                         // 璁$畻璐у弶宸ヤ綔鏂瑰悜
                         staWorkDirection = mapService.calculateAgvWorkDirectionByStation(destStaWorkDirection, lastDirection);
                         actionList.add(new Action(
@@ -1362,8 +1371,7 @@
             }
 
             // 濡傛灉鍏呯數涓紝鍒欏厛鏂紑鍏呯數
-            // todo agvModel backpackAction ?
-            if (agvModel.getNeedUndockingBool() && agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
+            if (needUndocking && agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
                 String undockingCode = Cools.isEmpty(actionList) ? lastCode.getData() : actionList.get(0).getCode();
                 // undocking charge
                 actionList.add(0, new Action(
@@ -1400,8 +1408,6 @@
                     now    // 宸ヤ綔鏃堕棿
             ));
 
-            // todo asr need optimize sort ?
-            List<Action> newActionList = actionSorter.optimizeSort(actionList);
             String groupId = String.valueOf(snowflakeIdWorker.nextId()).substring(3);
 
             // update segment
@@ -1436,6 +1442,9 @@
 //                }
 //            }
 
+            // optimize action list, must have backpack
+            List<Action> newActionList = backupAction ? actionSorter.optimizeSort(actionList) : actionList;
+
             // save action
             int i = newActionList.size();
             for (Action action : newActionList) {

--
Gitblit v1.9.1