From 7ac5a3f2bcbb0d0e13dc87cd969c8fb1fd99b488 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期日, 04 一月 2026 10:38:42 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 42 ++++++++++++++++++++++++++++--------------
1 files changed, 28 insertions(+), 14 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 bfbc67f..9b3886e 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
@@ -276,7 +276,7 @@
int backpackLev = 0;
int backpack = agvService.getBackpack(agvId);
List<Integer> usedBackpacks = segmentService.selectUsedBackpacks(currSeg.getTravelId(), agvId);
- if (usedBackpacks.size() == backpackLev) {
+ if (usedBackpacks.size() >= backpack) {
throw new CoolException("[Agv:" + agvNo + "] allocate inbound segment failed: no idle backpack to use");
}
for (int lev = 1; lev <= backpack; lev++) {
@@ -293,7 +293,8 @@
currSeg.setState(SegmentStateType.INIT.toString());
currSeg.setUpdateTime(now);
if (!segmentService.updateById(currSeg)) {
- log.error("Segment [{}] failed to update 锛侊紒锛�", currSeg.getGroupId() + " - " + currSeg.getSerial());
+// log.error("Segment [{}] failed to update 锛侊紒锛�", currSeg.getGroupId() + " - " + currSeg.getSerial());
+ throw new CoolException("failed to update segment [" + currSeg.getGroupId() + "-" + currSeg.getSerial() + "] failed");
}
// new oriSta seg
@@ -310,7 +311,8 @@
loadSeg.setCreateTime(now);
loadSeg.setUpdateTime(now);
if (!segmentService.save(loadSeg)) {
- log.error("Segment [{}] failed to save 锛侊紒锛�", loadSeg.getTravelId() + " - " + loadSeg.getSerial());
+// log.error("Segment [{}] failed to save 锛侊紒锛�", loadSeg.getTravelId() + " - " + loadSeg.getSerial());
+ throw new CoolException("failed to save segment [" + loadSeg.getGroupId() + "-" + loadSeg.getSerial() + "] failed");
}
// place segment
@@ -358,17 +360,29 @@
newDto.setCodeId(endCode.getId());
destPosList.add(newDto);
+ // sort - reference to buildMarjoTask
+ final String sameGroupXy = configService.getVal("sameGroupXy", String.class);
+
+ // DEST-only sort
destPosList.sort((a, b) -> {
- int c1 = Double.compare(a.getXy()[0], b.getXy()[0]); // X
- if (c1 != 0) return c1;
- int c2 = Double.compare(a.getXy()[1], b.getXy()[1]); // Y
- if (c2 != 0) return c2;
- // 鍚屽潗鏍囨椂鐢� taskId 鎵撴暎锛堥伩鍏嶆帓搴忎笉绋冲畾锛�
+
+ // 涓昏酱
+ double aFirst = a.getFirstWeight(sameGroupXy);
+ double bFirst = b.getFirstWeight(sameGroupXy);
+ int c = Double.compare(aFirst, bFirst);
+ if (c != 0) return c;
+
+ // 鍓酱
+ double aSecond = a.getSecondWeight(sameGroupXy);
+ double bSecond = b.getSecondWeight(sameGroupXy);
+ c = Double.compare(aSecond, bSecond);
+ if (c != 0) return c;
+
return Long.compare(a.getTaskId(), b.getTaskId());
});
// get placeSeg serial
- int placeSegSerial = 9999;
+ int placeSegSerial;
// query placeSeg idx
int idx = -1;
for (int i = 0; i < destPosList.size(); i++) {
@@ -383,11 +397,10 @@
}
// 鍚庣户鐐�
- TaskPosDto afterTaskPos = ((idx + 1) < destPosList.size()) ? destPosList.get(idx + 1) : null;
- if (null == afterTaskPos) {
- // loadSeg is the last one
+ if (idx + 1 == destPosList.size()) {
placeSegSerial = destSegList.get(destSegList.size() - 1).getSerial() + 1;
} else {
+ TaskPosDto afterTaskPos = destPosList.get(idx + 1);
Segment afterSeg = destSegList.stream()
.filter(destSeg -> Objects.equals(destSeg.getId(), afterTaskPos.getSegId()))
.findFirst()
@@ -424,7 +437,8 @@
placeSeg.setCreateTime(now);
placeSeg.setUpdateTime(now);
if (!segmentService.save(placeSeg)) {
- log.error("Segment [{}] failed to save 锛侊紒锛�", placeSeg.getTravelId() + " - " + placeSeg.getSerial());
+// log.error("Segment [{}] failed to save 锛侊紒锛�", placeSeg.getTravelId() + " - " + placeSeg.getSerial());
+ throw new CoolException("failed to save segment [" + placeSeg.getGroupId() + "-" + placeSeg.getSerial() + "] failed");
}
// update task
@@ -511,7 +525,7 @@
* val: new TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType)
*/
Map<String, List<TaskPosDto>> groups = new HashMap<>();
- final String sameGroupXy = configService.getVal( "sameGroupXy", String.class);
+ final String sameGroupXy = configService.getVal("sameGroupXy", String.class);
int backpackLev = 0;
for (Task task : taskList) {
--
Gitblit v1.9.1