From 97e0bddd5a8b54ba0007af1f70d3e910a4dd81c0 Mon Sep 17 00:00:00 2001
From: yy <yy123>
Date: 星期二, 06 一月 2026 19:44:07 +0800
Subject: [PATCH] 测试修馥版

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java |   34 +++++++++++++++-------------------
 1 files changed, 15 insertions(+), 19 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 505da1b..b717ce4 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
@@ -765,7 +765,6 @@
 
             boolean first = true;
             for (Segment segment : segmentList) {
-
                 // 鍒嗘鎵�灞炵殑Task
                 Task task = taskService.getById(segment.getTaskId());
                 TaskPosDto.PosType posType = Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()));
@@ -785,22 +784,17 @@
                     // 璧拌璺緞鑺傜偣
 //                    List<String> pathList = mapService.checkoutPath(agv.getUuid(), lastCode, code);
                     List<String> pathListPart = pathList.subList(pathList.indexOf(lastCode.getData()), pathList.indexOf(code.getData()) + 1);
-
                     for (int i = 0; i < pathListPart.size(); i++) {
                         if (i == 0) {
                             continue;
                         }
-
                         String next = pathListPart.get(i);
-
                         Code nextCode = codeService.getCacheByData(next);
                         Double nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
-
                         // 绗竴姝ワ細濡傛灉涓嬩竴涓柟鍚戞濂芥槸浣滀笟鏂瑰悜鐨勭浉鍙嶆柟鍚戯紝鍒欓噸缃笅涓�涓柟鍚戜负浣滀笟鏂瑰悜锛屾爣璁� reverse = true
                         boolean reverse = false;
                         if (nextDirection.equals((workDirection + 180) % 360)) {
-                            if ((turnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000050")) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
-                            // if ((isStation && turnCodes.contains(lastCode.getData())) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
+                            if ((isStation && turnCodes.contains(lastCode.getData())) || (isLoc && locTurnCodes.contains(nextCode.getData()) && locTurnCodes.contains(lastCode.getData()))) {
                                 reverse = false;
                                 lastDirection = nextDirection;
                             } else {
@@ -827,8 +821,7 @@
                                     nextDirection = lastDirection;
                                     reverse = true;
                                 } else {
-                                    if ((turnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000050")) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
-                                    // if ((isStation && lastCode.getData().equals("00000050")) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
+                                    if ((isStation && lastCode.getData().equals("00000050")) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
                                         // turn
                                         reverse = false;
                                         actionList.add(new Action(
@@ -854,7 +847,7 @@
                                                 180);
                                     } else {
                                         Double turnDirection = nextDirection;
-                                        if ((turnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000050")) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
+                                        if (turnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000050") || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
                                             turnDirection = 180.0;
                                             reverse = false;
                                         }
@@ -879,14 +872,12 @@
                                                 lastCode.getData(),
                                                 lastCode.getCornerBool(),
                                                 nextDirection,
-                                                lastDirection);
+                                                nextDirection);
                                     }
                                     lastDirection = nextDirection;
                                 }
                             } else {
-                                // if (isStation && lastCode.getData().equals("00000050")) {
-                                if ((turnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000050")) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
-                                // if ((isStation && lastCode.getData().equals("00000050")) || (isLoc && lastCode.getData().equals("00000080"))) {
+                                if ((isStation && lastCode.getData().equals("00000050")) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
                                     // turn
                                     reverse = false;
                                     actionList.add(new Action(
@@ -974,11 +965,16 @@
                 if (first) {
                     if (Cools.isEmpty(actionList) || !actionList.get(0).getActionType().equals(ActionTypeType.TurnCorner.val())) {
                         Double turnDirection = workDirection;
-                        Code nextCode = codeService.getCacheByData(lastCode.getData());
-//                        Double nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
-                        // if (isStation && turnCodes.contains(lastCode.getData())) {
-                        if ((turnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000050")) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
-                        // if ((isStation && turnCodes.contains(lastCode.getData())) || (isLoc && locTurnCodes.contains(lastCode.getData()))) {
+                        Code nextCode = null;
+                        //娣诲姞鍒ゆ柇鏄惁瀛樺湪涓嬩竴涓湴鐮�
+                        int index = pathList.indexOf(lastCode.getData());
+                        if (index != -1 && index + 1 < pathList.size()) {
+                            String nextCodeData = pathList.get(index + 1);
+                            nextCode = codeService.getCacheByData(nextCodeData);
+                        } else {
+                            nextCode = codeService.getCacheByData(lastCode.getData());
+                        }
+                        if ((isStation && turnCodes.contains(lastCode.getData())) || (isLoc && locTurnCodes.contains(nextCode.getData()) && lastCode.getData().equals("00000080"))) {
                             turnDirection = workDirection + 180.0;
                         }
                         if (lastCode.getCornerBool()) {

--
Gitblit v1.9.1