From 4dec9b5fe50a366b14910b7f1ae057e5be6e1366 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期三, 31 十二月 2025 15:52:46 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 70 ++++++++++++++++++++++++++---------
1 files changed, 52 insertions(+), 18 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 849bdcd..a0b1a83 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
@@ -253,27 +253,45 @@
, (task, agvNo, sta) -> {
Long agvId = agvService.getAgvId(agvNo);
- List<Travel> travelList = travelService.list(new LambdaQueryWrapper<Travel>()
- .eq(Travel::getAgvId, agvId)
- .eq(Travel::getState, TravelStateType.RUNNING.toString())
- .orderByDesc(Travel::getCreateTime));
- if (Cools.isEmpty(travelList)) {
- throw new BusinessException("[Agv: " + agvNo + "]allocate inbound failed to find travel");
- }
- Travel travel = travelList.get(0);
-
- List<Segment> currSegments = segmentService.list(new LambdaQueryWrapper<Segment>()
- .eq(Segment::getAgvId, agvId)
- .eq(Segment::getTravelId, travel.getId())
- );
+// List<Travel> travelList = travelService.list(new LambdaQueryWrapper<Travel>()
+// .eq(Travel::getAgvId, agvId)
+// .eq(Travel::getState, TravelStateType.RUNNING.toString())
+// .orderByDesc(Travel::getCreateTime));
+// if (Cools.isEmpty(travelList)) {
+// throw new BusinessException("[Agv: " + agvNo + "]allocate inbound failed to find travel");
+// }
+// Travel travel = travelList.get(0);
+//
+// List<Segment> currSegments = segmentService.list(new LambdaQueryWrapper<Segment>()
+// .eq(Segment::getAgvId, agvId)
+// .eq(Segment::getTravelId, travel.getId())
+// );
// load segment
Segment currSeg = segmentService.getRollerWaiting(agvId, sta.getCode(), TaskPosDto.PosType.ORI_STA);
+ if (null == currSeg) {
+ throw new BusinessException("[Agv:" + agvNo + "] allocate inbound failed: no roller waiting segment");
+ }
+
+ // get backpack lev
+ int backpackLev = 0;
+ int backpack = agvService.getBackpack(agvId);
+ List<Integer> usedBackpacks = segmentService.selectUsedBackpacks(currSeg.getTravelId(), agvId);
+ for (int lev = 0; lev < backpack; lev++) {
+ if (!usedBackpacks.contains(lev)) {
+ backpackLev = lev;
+ break;
+ }
+ }
+ if (backpackLev == 0) {
+ throw new BusinessException("[Agv:" + agvNo + "] backpack full, can't allocate inbound");
+ }
+
+ // update curr seg
currSeg.setState(SegmentStateType.INIT.toString());
currSeg.setUpdateTime(now);
if (!segmentService.updateById(currSeg)) {
log.error("Segment [{}] failed to update 锛侊紒锛�", currSeg.getGroupId() + " - " + currSeg.getSerial());
}
-
// new oriSta seg
Segment loadSeg = new Segment();
@@ -285,22 +303,30 @@
loadSeg.setEndNode(sta.getCode());
loadSeg.setPosType(TaskPosDto.PosType.ORI_STA.toString());
loadSeg.setState(SegmentStateType.WAITING.toString());
+ loadSeg.setBackpack(backpackLev);
+ loadSeg.setCreateTime(now);
+ loadSeg.setUpdateTime(now);
if (!segmentService.save(loadSeg)) {
log.error("Segment [{}] failed to save 锛侊紒锛�", loadSeg.getTravelId() + " - " + loadSeg.getSerial());
}
// place segment
TaskTypeType taskType = Objects.requireNonNull(TaskTypeType.get(task.getTaskTypeEl()));
- TaskPosDto.PosType posType = null;
+ TaskPosDto.PosType posType;
+ Code endCode;
switch (taskType) {
case STA_TO_LOC:
posType = TaskPosDto.PosType.DEST_LOC;
+ Loc destLoc = locService.getById(task.getDestLoc());
+ endCode = codeService.getCacheById(destLoc.getCode());
break;
case STA_TO_STA:
posType = TaskPosDto.PosType.DEST_STA;
+ Sta destSta = staService.getById(task.getDestSta());
+ endCode = codeService.getCacheById(destSta.getCode());
break;
default:
- throw new BusinessException("[Agv: " + agvNo + "]allocate inbound failed to find travel");
+ throw new BusinessException("[Agv:" + agvNo + "] allocate inbound only supports STA_TO_LOC/STA_TO_STA");
}
Segment placeSeg = new Segment();
@@ -308,14 +334,18 @@
placeSeg.setTravelId(currSeg.getTravelId());
placeSeg.setAgvId(agvId);
placeSeg.setTaskId(task.getId());
- placeSeg.setSerial(currSeg.getSerial() - 1);
- placeSeg.setEndNode(sta.getCode());
+ placeSeg.setSerial();
+ placeSeg.setEndNode(endCode.getId());
placeSeg.setPosType(posType.toString());
placeSeg.setState(SegmentStateType.INIT.toString());
+ loadSeg.setBackpack(backpackLev);
+ placeSeg.setCreateTime(now);
+ placeSeg.setUpdateTime(now);
if (!segmentService.save(placeSeg)) {
log.error("Segment [{}] failed to save 锛侊紒锛�", placeSeg.getTravelId() + " - " + placeSeg.getSerial());
}
+ // update task
task.setAgvId(agvId);
task.setTaskSts(TaskStsType.ASSIGN.val());
task.setIoTime(now);
@@ -548,6 +578,8 @@
travel.setTaskContent(JSON.toJSONString(list));
travel.setTaskIds(JSON.toJSONString(taskList.stream().map(Task::getId).collect(Collectors.toList())));
travel.setState(TravelStateType.RUNNING.toString());
+ travel.setCreateTime(now);
+ travel.setUpdateTime(now);
if (!travelService.save(travel)) {
throw new BusinessException("浠诲姟缁勪繚瀛樺け璐�");
}
@@ -571,6 +603,8 @@
segment.setPosType(taskPosDto.getPosType().toString());
segment.setBackpack(backpackType.lev);
segment.setState(SegmentStateType.INIT.toString());
+ segment.setCreateTime(now);
+ segment.setUpdateTime(now);
segmentList.add(segment);
}
}
--
Gitblit v1.9.1