#
vincentlu
2025-12-31 13e767fc0e39a13b0235e09f0dac301bb53ad885
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++) {
@@ -382,8 +382,24 @@
                                throw new BusinessException("failed to locate new destination in sorted list");
                            }
                            // 后继点
                            TaskPosDto afterTaskPos = ((idx + 1) < destPosList.size()) ? destPosList.get(idx + 1) : null;
                            // 后继点 todo
                            if (idx + 1 == destPosList.size()) {
                                placeSegSerial = destSegList.get(destSegList.size() - 1).getSerial() + 1;
                            } else {
                                TaskPosDto afterTaskPos = destPosList.get(idx);
                                Segment afterSeg = destSegList.stream()
                                        .filter(destSeg -> Objects.equals(destSeg.getId(), afterTaskPos.getSegId()))
                                        .findFirst()
                                        .orElse(null);
                                if (null == afterSeg) {
                                    placeSegSerial = destSegList.get(destSegList.size() - 1).getSerial() + 1;
                                } else {
                                    placeSegSerial = afterSeg.getSerial();
                                }
                            }
                            // todo
                            TaskPosDto afterTaskPos = (idx + 1) <= destPosList.size() ? destPosList.get(idx) : null;
                            if (null == afterTaskPos) {
                                // loadSeg is the last one
                                placeSegSerial = destSegList.get(destSegList.size() - 1).getSerial() + 1;