From 82cb51c355dae174dc29361d2b0c11bc2665147a Mon Sep 17 00:00:00 2001
From: zc <zyzc>
Date: 星期六, 08 十一月 2025 14:50:33 +0800
Subject: [PATCH] 希日多任务出库问题优化
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 136 ++++++++++++++++++++++++++++-----------------
1 files changed, 84 insertions(+), 52 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 753675a..26789de 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
@@ -205,11 +205,11 @@
break;
case STA_TO_LOC:
oriSta = staService.getById(task.getOriSta());
- if (oriSta.getStaTypeIsCheck() != 1) {
- if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
- throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status");
- }
- }
+// if (oriSta.getStaTypeIsCheck() != 1) {
+// if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
+// throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status");
+// }
+// }
oriSta.setStaSts(StaStsType.READY_TAKE.val());
oriSta.setUpdateTime(now);
if (!staService.updateById(oriSta)) {
@@ -770,7 +770,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);
@@ -788,10 +787,14 @@
// 绗竴姝ワ細濡傛灉涓嬩竴涓柟鍚戞濂芥槸浣滀笟鏂瑰悜鐨勭浉鍙嶆柟鍚戯紝鍒欓噸缃笅涓�涓柟鍚戜负浣滀笟鏂瑰悜锛屾爣璁� reverse = true
boolean reverse = false;
if (nextDirection.equals((workDirection + 180) % 360)) {
- nextDirection = workDirection;
- if (Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType())).equals(TaskPosDto.PosType.ORI_STA)) {
+ List<String> list = Arrays.asList("00000050", "00000051", "00000052", "00000053", "00000054");
+ if ((Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType())).equals(TaskPosDto.PosType.ORI_STA)
+ || Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))
+ .equals(TaskPosDto.PosType.DEST_STA)) && list.contains(lastCode.getData())) {
reverse = false;
+ lastDirection = nextDirection;
} else {
+ nextDirection = workDirection;
reverse = true;
}
}
@@ -814,9 +817,11 @@
nextDirection = lastDirection;
reverse = true;
} else {
- if (Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))
- .equals(TaskPosDto.PosType.ORI_STA)) {
+ if ((Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))
+ .equals(TaskPosDto.PosType.ORI_STA) || Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))
+ .equals(TaskPosDto.PosType.DEST_STA)) && lastCode.getData().equals("00000050")) {
// turn
+ reverse = false;
actionList.add(new Action(
null, // 缂栧彿s
task.getBusId(), // 鎬荤嚎
@@ -850,14 +855,35 @@
now // 宸ヤ綔鏃堕棿
));
}
-
lastDirection = nextDirection;
+ }
+ } else {
+ if ((Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))
+ .equals(TaskPosDto.PosType.ORI_STA) || Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))
+ .equals(TaskPosDto.PosType.DEST_STA)) && lastCode.getData().equals("00000050")) {
+ // turn
+ reverse = false;
+ actionList.add(new Action(
+ null, // 缂栧彿s
+ task.getBusId(), // 鎬荤嚎
+ task.getId(), // 浠诲姟
+ null, // 鍔ㄤ綔鍙�
+ null, // 浼樺厛绾�
+ ActionTypeType.TurnCorner.desc, // 鍚嶇О
+ mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D, // 灞炴�у��
+ lastCode.getData(), // 鍦伴潰鐮�
+ String.valueOf(180), // 鍔ㄤ綔鍙傛暟
+ ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷
+ actionPrepareSts, // 鍔ㄤ綔杩涘害
+ agvId, // AGV
+ now // 宸ヤ綔鏃堕棿
+ ));
}
}
}
// 绗竴涓姩浣滀竴瀹氭槸 turn
- if (actionList.isEmpty()) {
+ if (actionList.isEmpty() && lastCode.getCornerBool()) {
// turn
actionList.add(new Action(
null, // 缂栧彿
@@ -903,31 +929,37 @@
lastCode = nextCode;
}
-
}
// 鍒濆鏂瑰悜鍊艰ˉ涓�
if (first) {
if (Cools.isEmpty(actionList) || !actionList.get(0).getActionType().equals(ActionTypeType.TurnCorner.val())) {
- // turn
- actionList.add(new Action(
- null, // 缂栧彿
- task.getBusId(), // 鎬荤嚎
- task.getId(), // 浠诲姟
- null, // 鍔ㄤ綔鍙�
- null, // 浼樺厛绾�
- ActionTypeType.TurnCorner.desc, // 鍚嶇О
- mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D, // 灞炴�у��
- lastCode.getData(), // 鍦伴潰鐮�
- String.valueOf(workDirection), // 鍔ㄤ綔鍙傛暟
- ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷
- actionPrepareSts, // 鍔ㄤ綔杩涘害
- agvId, // AGV
- now // 宸ヤ綔鏃堕棿
- ));
-
- lastDirection = workDirection;
-
+ Double turnDirection = workDirection;
+ List<String> list = Arrays.asList("00000051", "00000052", "00000053", "00000054");
+ if ((Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType())).equals(TaskPosDto.PosType.ORI_STA)
+ || Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))
+ .equals(TaskPosDto.PosType.DEST_STA)) && list.contains(lastCode.getData())) {
+ turnDirection = workDirection + 180.0;
+ }
+ if (lastCode.getCornerBool()) {
+ // turn
+ actionList.add(new Action(
+ null, // 缂栧彿
+ task.getBusId(), // 鎬荤嚎
+ task.getId(), // 浠诲姟
+ null, // 鍔ㄤ綔鍙�
+ null, // 浼樺厛绾�
+ ActionTypeType.TurnCorner.desc, // 鍚嶇О
+ mapService.isTurnCorner(lastCode.getData()) ? 1D : 0D, // 灞炴�у��
+ lastCode.getData(), // 鍦伴潰鐮�
+ String.valueOf(turnDirection), // 鍔ㄤ綔鍙傛暟
+ ActionTypeType.TurnCorner.val(), // 鍔ㄤ綔绫诲瀷
+ actionPrepareSts, // 鍔ㄤ綔杩涘害
+ agvId, // AGV
+ now // 宸ヤ綔鏃堕棿
+ ));
+ lastDirection = workDirection;
+ }
}
first = false;
}
@@ -1098,21 +1130,21 @@
// throw new CoolException(agvNo + "鍙峰皬杞︽柟鍚戦敊璇紝璇锋帹鑷宠浆寮偣鎵嬪姩璋冩暣");
// }
//
-//// actionList.add(new Action(
-//// null, // 缂栧彿
-//// task.getBusId(), // 鎬荤嚎
-//// task.getId(), // 浠诲姟
-//// null, // 鍔ㄤ綔鍙�
-//// null, // 浼樺厛绾�
-//// actionType.desc, // 鍚嶇О
-//// (double) agvSpeedType.val, // 灞炴�у��
-//// lastCode.getData(), // 鍦伴潰鐮�
-//// String.valueOf(gap.getDistance()), // 鍔ㄤ綔鍙傛暟
-//// actionType.val(), // 鍔ㄤ綔绫诲瀷
-//// actionPrepareSts, // 鍔ㄤ綔杩涘害
-//// agvId, // AGV
-//// now // 宸ヤ綔鏃堕棿
-//// ));
+// actionList.add(new Action(
+// null, // 缂栧彿
+// task.getBusId(), // 鎬荤嚎
+// task.getId(), // 浠诲姟
+// null, // 鍔ㄤ綔鍙�
+// null, // 浼樺厛绾�
+// actionType.desc, // 鍚嶇О
+// (double) agvSpeedType.val, // 灞炴�у��
+// lastCode.getData(), // 鍦伴潰鐮�
+// String.valueOf(gap.getDistance()), // 鍔ㄤ綔鍙傛暟
+// actionType.val(), // 鍔ㄤ綔绫诲瀷
+// actionPrepareSts, // 鍔ㄤ綔杩涘害
+// agvId, // AGV
+// now // 宸ヤ綔鏃堕棿
+// ));
// // turn
// actionList.add(new Action(
// null, // 缂栧彿
@@ -1157,11 +1189,11 @@
task.getId(), // 浠诲姟
null, // 鍔ㄤ綔鍙�
null, // 浼樺厛绾�
- ActionTypeType.ReadyReleaseToConveyorSta.desc, // 鍚嶇О
- staWorkDirection, // 灞炴�ш皰
+ ActionTypeType.ReadyReleaseToShelvesLoc.desc, // 鍚嶇О
+ Double.parseDouble("0"), // 灞炴�у��
lastCode.getData(), // 鍦伴潰鐮�
String.valueOf(destSta.getOffset()), // 鍔ㄤ綔鍙傛暟
- ActionTypeType.ReadyReleaseToConveyorSta.val(), // 鍔ㄤ綔绫诲瀷
+ ActionTypeType.ReadyReleaseToShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷
actionPrepareSts, // 鍔ㄤ綔杩涘害
agvId, // AGV
now, // 宸ヤ綔鏃堕棿
@@ -1173,7 +1205,7 @@
// 妫�楠屾柟鍚�
FuncSta chargeFuncSta = funcStaService.query(lastCode.getId(), FuncStaType.CHARGE.toString());
Double chargeDirection = Double.parseDouble(chargeFuncSta.getAngle());
- if (!lastDirection.equals(chargeDirection)&&lastCode.getCornerBool()) {
+ if (!lastDirection.equals(chargeDirection) && lastCode.getCornerBool()) {
actionList.add(new Action(
null, // 缂栧彿
null, // 鎬荤嚎
@@ -1408,7 +1440,7 @@
nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
// 绗竴姝ワ細濡傛灉涓嬩竴涓柟鍚戞濂芥槸浣滀笟鏂瑰悜鐨勭浉鍙嶆柟鍚戯紝鍒欓噸缃笅涓�涓柟鍚戜负浣滀笟鏂瑰悜锛屾爣璁� reverse = true
- if (!nextDirection.equals((workDirection+180) % 360)) {
+ if (!nextDirection.equals((workDirection + 180) % 360)) {
nextDirection = workDirection;
reverse = true;
}
--
Gitblit v1.9.1