From c402e77c8a141b05d5ef62b73306ba7322585bb2 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@gmail.com>
Date: 星期三, 14 一月 2026 13:24:46 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 77 +++++++++++++++++++++++++++++---------
1 files changed, 58 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 dbcc983..745c251 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
@@ -936,7 +936,6 @@
if (!lastCode.getData().equals(code.getData())) {
// 璧拌璺緞鑺傜偣
-// 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++) {
@@ -945,10 +944,13 @@
String next = pathListPart.get(i);
Code nextCode = codeService.getCacheByData(next);
+ // 杞﹀ご鏈濆墠鐨勪笅涓�涓璧版柟鍚�
Double nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
// 鍙嶅悜瑙�
final double oppLastDir = (lastDirection + 180) % 360;
+ // 鏄惁鍊掗��琛岃蛋
+ boolean reverse = false;
// 宸烽亾閫昏緫
if (!laneBuilder.isInitialized()) {
@@ -957,21 +959,16 @@
LaneDto lastLaneDto = laneBuilder.search(lastCode.getData());
LaneDto nextLaneDto = laneBuilder.search(nextCode.getData());
// 杩涘叆宸烽亾瑙掑害
- Double laneDir = laneService.getLaneDirection(nextLaneDto);
- // 绗竴娆¤繘鍏ユ宸烽亾
- boolean firstEnteringLane = null != laneDir && (
- lastLaneDto == null
- || !Objects.equals(lastLaneDto.getHashCode(), nextLaneDto.getHashCode())
- );
-
- boolean reverse = false;
+ Double lastLaneDir = laneService.getLaneDirection(lastLaneDto);
+ Double nextLaneDir = laneService.getLaneDirection(nextLaneDto);
// 宸烽亾寮哄埗杞集锛屼紭鍏堢骇 > workDirection
- if (firstEnteringLane) {
-// final double oppLaneDir = (laneDir + 180) % 360;
- if (!lastDirection.equals(laneDir)) {
+ if (null != nextLaneDir) {
+ final double oppNextLaneDir = (nextLaneDir + 180) % 360;
+
+ if (!lastDirection.equals(nextLaneDir)) {
if (!lastCode.getCornerBool()) {
- throw new CoolException(agvNo + "鍙峰皬杞﹁繘鍏ュ贩閬撻渶璋冩暣鏂瑰悜涓� " + laneDir + "掳锛岃鎺ㄨ嚦杞集鐐规墜鍔ㄨ皟鏁�");
+ throw new CoolException(agvNo + "鍙峰皬杞﹁繘鍏ュ贩閬撻渶璋冩暣鏂瑰悜涓� " + nextLaneDir + "掳锛岃鎺ㄨ嚦杞集鐐规墜鍔ㄨ皟鏁�");
}
// turn
actionList.add(new Action(
@@ -983,13 +980,36 @@
ActionTypeType.TurnCorner.desc, // 鍚嶇О
(double) mapService.spinDirection(lastCode).val, // 灞炴�у��
lastCode.getData(), // 鍦伴潰鐮�
- String.valueOf(laneDir), // 鍔ㄤ綔鍙傛暟
+ String.valueOf(nextLaneDir), // 鍔ㄤ綔鍙傛暟
ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷
actionPrepareSts, // 鍔ㄤ綔杩涘害
agvId, // AGV
now // 宸ヤ綔鏃堕棿
));
- lastDirection = laneDir;
+ lastDirection = nextLaneDir;
+
+ if (nextDirection.equals(oppNextLaneDir)) {
+ reverse = true;
+ }
+ } else {
+ if (nextDirection.equals(oppNextLaneDir)) {
+ nextDirection = nextLaneDir;
+ reverse = true;
+ }
+ }
+
+ nextDirection = nextLaneDir;
+ } else if (null != lastLaneDir) {
+ final double oppLastLaneDir = (lastLaneDir + 180) % 360;
+ if (nextDirection.equals(oppLastLaneDir)) {
+ reverse = true;
+ }
+ nextDirection = lastLaneDir;
+
+ if (!lastDirection.equals(nextDirection)) {
+ if (!lastCode.getCornerBool()) {
+ throw new CoolException(agvNo + "鍙峰皬杞︾寮�宸烽亾闇�璋冩暣鏂瑰悜涓� " + nextDirection + "掳锛岃鎺ㄨ嚦杞集鐐规墜鍔ㄨ皟鏁�");
+ }
}
} else {
@@ -1095,6 +1115,25 @@
// 鍒濆鏂瑰悜鍊艰ˉ涓�
if (first) {
if (Cools.isEmpty(actionList) || !actionList.get(0).getActionType().equals(ActionTypeType.TurnCorner.val())) {
+ Double firstTurnDir = workDirection;
+
+ // 宸烽亾閫昏緫
+ if (!laneBuilder.isInitialized()) {
+ throw new CoolException("lanes are not initialized");
+ }
+ LaneDto lastLaneDto = laneBuilder.search(lastCode.getData());
+ // 杩涘叆宸烽亾瑙掑害
+ Double lastLaneDir = laneService.getLaneDirection(lastLaneDto);
+ if (lastLaneDir != null) {
+ firstTurnDir = lastLaneDir;
+ }
+
+ if (!lastDirection.equals(firstTurnDir)) {
+ if (!lastCode.getCornerBool()) {
+ throw new CoolException(agvNo + "鍙峰皬杞︽柟鍚戦敊璇紝璇锋帹鑷宠浆寮偣鎵嬪姩璋冩暣");
+ }
+ }
+
// turn
actionList.add(new Action(
null, // 缂栧彿
@@ -1105,14 +1144,14 @@
ActionTypeType.TurnCorner.desc, // 鍚嶇О
(double) mapService.spinDirection(lastCode).val, // 灞炴�у��
lastCode.getData(), // 鍦伴潰鐮�
- String.valueOf(workDirection), // 鍔ㄤ綔鍙傛暟
+ String.valueOf(firstTurnDir), // 鍔ㄤ綔鍙傛暟
ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷
actionPrepareSts, // 鍔ㄤ綔杩涘害
agvId, // AGV
now // 宸ヤ綔鏃堕棿
));
- lastDirection = workDirection;
+ lastDirection = firstTurnDir;
}
first = false;
@@ -1865,8 +1904,8 @@
AGV_06_DOWN agv_06_down = new AGV_06_DOWN();
agv_06_down.setSerialNo(agv_06_up.getSerialNo());
agv_06_down.setActionCode(agv_06_up.getActionCode());
- agv_06_down.setResult(success ? 1 : 0);
-
+ //agv_06_down.setResult(success ? 1 : 0);
+ agv_06_down.setResult(1);
redis.push(RedisConstant.AGV_PATH_DOWN_FLAG, AgvProtocol.build(protocol.getAgvNo()).setMessageBody(agv_06_down));
}
--
Gitblit v1.9.1