From 4d45de01e35f8b271e5ba25439b574a8b67bc5eb Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期五, 26 十二月 2025 14:00:55 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 104 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 79 insertions(+), 25 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 99f715d..9e7f54a 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
@@ -96,6 +96,8 @@
private LaneService laneService;
@Autowired
private ActionSorter actionSorter;
+ @Autowired
+ private StaReserveService staReserveService;
@SuppressWarnings("all")
@Transactional
@@ -175,22 +177,26 @@
throw new BusinessException("oriLoc锛�" + task.getOriLoc$() + " failed to update");
}
+ // reserver station inbound, qty: 1
destSta = staService.getById(task.getDestSta());
- if (!destSta.getStaSts().equals(StaStsType.IDLE.val())) {
- throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
+ if (null == staReserveService.reserveStaIn(destSta, task, 1)) {
+ throw new BusinessException("destSta锛�" + task.getDestSta$() + " failed to reserve");
}
- destSta.setStaSts(StaStsType.PAKIN.val());
- destSta.setUpdateTime(now);
- if (!staService.updateById(destSta)) {
- throw new BusinessException("destSta锛�" + task.getDestSta$() + " failed to update");
- }
+// if (!destSta.getStaSts().equals(StaStsType.IDLE.val())) {
+// throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
+// }
+// destSta.setStaSts(StaStsType.READY_RELEASE.val());
+// destSta.setUpdateTime(now);
+// if (!staService.updateById(destSta)) {
+// throw new BusinessException("destSta锛�" + task.getDestSta$() + " failed to update");
+// }
break;
case STA_TO_LOC:
oriSta = staService.getById(task.getOriSta());
if (!oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status");
}
- oriSta.setStaSts(StaStsType.PAKOUT.val());
+ oriSta.setStaSts(StaStsType.READY_TAKE.val());
oriSta.setUpdateTime(now);
if (!staService.updateById(oriSta)) {
throw new BusinessException("oriSta锛�" + task.getOriSta$() + " failed to update");
@@ -211,7 +217,7 @@
if (!oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status");
}
- oriSta.setStaSts(StaStsType.PAKOUT.val());
+ oriSta.setStaSts(StaStsType.READY_TAKE.val());
oriSta.setUpdateTime(now);
if (!staService.updateById(oriSta)) {
throw new BusinessException("oriSta锛�" + task.getOriSta$() + " failed to update");
@@ -221,7 +227,7 @@
if (!destSta.getStaSts().equals(StaStsType.IDLE.val())) {
throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
}
- destSta.setStaSts(StaStsType.PAKIN.val());
+ destSta.setStaSts(StaStsType.READY_RELEASE.val());
destSta.setUpdateTime(now);
if (!staService.updateById(destSta)) {
throw new BusinessException("destSta锛�" + task.getDestSta$() + " failed to update");
@@ -249,10 +255,12 @@
);
if (Cools.isEmpty(taskList)) {
- bus.setBusSts(BusStsType.PROGRESS.val());
- bus.setUpdateTime(now);
- if (!busService.updateById(bus)) {
- log.error("Bus [{}] failed to Update 锛侊紒锛�", bus.getUuid());
+ if (bus.getBusSts().equals(BusStsType.RECEIVE.val())) {
+ bus.setBusSts(BusStsType.PROGRESS.val());
+ bus.setUpdateTime(now);
+ if (!busService.updateById(bus)) {
+ log.error("Bus [{}] failed to Update 锛侊紒锛�", bus.getUuid());
+ }
}
return;
}
@@ -859,6 +867,7 @@
// 浣滀笟鐐瑰姩浣�
AgvDirectionType agvDirectionType;
+ Double staWorkDirection;
AgvBackpackType backpackType = AgvBackpackType.query(segment.getBackpack());
switch (Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))) {
case ORI_LOC:
@@ -974,18 +983,18 @@
lastDirection = oriStaWorkDirection;
}
// 璁$畻璐у弶宸ヤ綔鏂瑰悜
- agvDirectionType = mapService.calculateAgvWorkDirectionByStation(oriSta, lastCode);
+ staWorkDirection = mapService.calculateAgvWorkDirectionByStation(oriStaWorkDirection, lastDirection);
actionList.add(new Action(
null, // 缂栧彿
task.getBusId(), // 鎬荤嚎
task.getId(), // 浠诲姟
null, // 鍔ㄤ綔鍙�
null, // 浼樺厛绾�
- ActionTypeType.ReadyTakeFromShelvesLoc.desc, // 鍚嶇О
- (double) agvDirectionType.val, // 灞炴�у��
+ ActionTypeType.ReadyTakeFromConveyorSta.desc, // 鍚嶇О
+ staWorkDirection, // 灞炴�у��
lastCode.getData(), // 鍦伴潰鐮�
String.valueOf(oriSta.getOffset()), // 鍔ㄤ綔鍙傛暟
- ActionTypeType.ReadyTakeFromShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷
+ ActionTypeType.ReadyTakeFromConveyorSta.val(), // 鍔ㄤ綔绫诲瀷
actionPrepareSts, // 鍔ㄤ綔杩涘害
agvId, // AGV
now // 宸ヤ綔鏃堕棿
@@ -1053,18 +1062,18 @@
now // 宸ヤ綔鏃堕棿
));
// 璁$畻璐у弶宸ヤ綔鏂瑰悜
- agvDirectionType = mapService.calculateAgvWorkDirectionByStation(destSta, lastCode);
+ staWorkDirection = mapService.calculateAgvWorkDirectionByStation(destStaWorkDirection, lastDirection);
actionList.add(new Action(
null, // 缂栧彿
task.getBusId(), // 鎬荤嚎
task.getId(), // 浠诲姟
null, // 鍔ㄤ綔鍙�
null, // 浼樺厛绾�
- ActionTypeType.ReadyReleaseToShelvesLoc.desc, // 鍚嶇О
- (double) agvDirectionType.val, // 灞炴�у��
+ ActionTypeType.ReadyReleaseToConveyorSta.desc, // 鍚嶇О
+ staWorkDirection, // 灞炴�у��
lastCode.getData(), // 鍦伴潰鐮�
String.valueOf(destSta.getOffset()), // 鍔ㄤ綔鍙傛暟
- ActionTypeType.ReadyReleaseToShelvesLoc.val(), // 鍔ㄤ綔绫诲瀷
+ ActionTypeType.ReadyReleaseToConveyorSta.val(), // 鍔ㄤ綔绫诲瀷
actionPrepareSts, // 鍔ㄤ綔杩涘害
agvId, // AGV
now // 宸ヤ綔鏃堕棿
@@ -1111,7 +1120,24 @@
));
break;
case TO_STANDBY:
-// FuncSta standByFuncSta = funcStaService.query(agvId, lastCode.getId(), 2);
+ // load lift
+// actionList.add(new Action(
+// null, // 缂栧彿
+// null, // 鎬荤嚎
+// task.getId(), // 浠诲姟
+// null, // 鍔ㄤ綔鍙�
+// null, // 浼樺厛绾�
+// ActionTypeType.LoadPlatformLift.desc, // 鍚嶇О
+// null, // 灞炴�у��
+// lastCode.getData(), // 鍦伴潰鐮�
+// String.valueOf(0), // 鍔ㄤ綔鍙傛暟
+// ActionTypeType.LoadPlatformLift.val(), // 鍔ㄤ綔绫诲瀷
+// actionPrepareSts, // 鍔ㄤ綔杩涘害
+// agvId, // AGV
+// now // 宸ヤ綔鏃堕棿
+// ));
+ // turn
+// FuncSta standByFuncSta = funcStaService.query(lastCode.getId(), FuncStaType.STANDBY.toString());
// Double standByDirection = Double.parseDouble(standByFuncSta.getAngle());
// if (!lastDirection.equals(standByDirection)) {
// actionList.add(new Action(
@@ -1176,6 +1202,7 @@
for (Segment item : segmentList) {
item.setGroupId(groupId);
item.setState(SegmentStateType.RUNNING.toString());
+ item.setStartTime(now);
item.setUpdateTime(now);
if (null != algoStartTime) {
item.setAlgoTime((int) (now.getTime() - algoStartTime.getTime()));
@@ -1212,6 +1239,13 @@
if (Cools.isEmpty(actionList)) {
return;
}
+
+ Long agvId = actionList.get(0).getAgvId();
+ String agvNo = agvService.getAgvNo(agvId);
+ if (!agvService.judgeOnline(agvId)) {
+ return;
+ }
+
long actionIssuedSts = ActionStsType.ISSUED.val();
for (Action action : actionList) {
action.setActionSts(actionIssuedSts);
@@ -1238,10 +1272,8 @@
}
}
- String agvNo = agvService.getAgvNo(actionList.get(0).getAgvId());
AgvAction agvAction = new AgvAction(agvNo, actionGroupId);
for (Action action : actionList) {
-
switch (Objects.requireNonNull(ActionTypeType.get(action.getActionTypeEl()))) {
case TurnCorner:
agvAction.add(new AgvActionItem<>(TurnCornerAction.class)
@@ -1275,6 +1307,13 @@
.bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
);
break;
+ case ReadyTakeFromConveyorSta:
+ agvAction.add(new AgvActionItem<>(ReadyTakeFromConveyorSta.class)
+ .setVal(action.getVal().intValue())
+ .setQrCode(action.getCode())
+ .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
+ );
+ break;
case ReadyTakeFromAgvSite:
agvAction.add(new AgvActionItem<>(ReadyTakeFromAgvSite.class)
.setVal(action.getVal().intValue())
@@ -1284,6 +1323,20 @@
break;
case ReadyReleaseToShelvesLoc:
agvAction.add(new AgvActionItem<>(ReadyReleaseToShelvesLoc.class)
+ .setVal(action.getVal().intValue())
+ .setQrCode(action.getCode())
+ .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
+ );
+ break;
+ case LoadPlatformLift:
+ agvAction.add(new AgvActionItem<>(LoadPlatformLift.class)
+ .setVal(action.getVal().intValue())
+ .setQrCode(action.getCode())
+ .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
+ );
+ break;
+ case ReadyReleaseToConveyorSta:
+ agvAction.add(new AgvActionItem<>(ReadyReleaseToConveyorSta.class)
.setVal(action.getVal().intValue())
.setQrCode(action.getCode())
.bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
@@ -1510,6 +1563,7 @@
// segment
for (Segment segment : segmentList) {
segment.setState(SegmentStateType.FINISH.toString());
+ segment.setEndTime(now);
segment.setUpdateTime(now);
if (!segmentService.updateById(segment)) {
log.error("Segment [{}] 鏇存柊澶辫触 锛侊紒锛�", segment.getGroupId() + " - " + segment.getSerial());
--
Gitblit v1.9.1