#
vincentlu
2026-01-27 5d8c23764a220724358d9cf7c4244f5f1864e9a1
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
@@ -50,6 +50,8 @@
    private AgvAreaDispatcher agvAreaDispatcher;
    @Autowired
    private SegmentService segmentService;
    @Autowired
    private TravelService travelService;
    /**
     * get available agv list which is idle
@@ -62,7 +64,6 @@
        List<String> result = new ArrayList<>();
        for (Agv agv : agvList) {
            if (!hasRunning) {
                // 1. without running tasks
                if (0 < taskService.count(new LambdaQueryWrapper<Task>()
                        .eq(Task::getAgvId, agv.getId())
                        .and(i -> i
@@ -73,10 +74,13 @@
                )) {
                    continue;
                }
            }
            // 2. in idle status
            if (!agvService.judgeEnable(agv.getId(), true)) {
                continue;
                if (!agvService.judgeEnable(agv.getId(), true, true)) {
                    continue;
                }
            } else {
                if (!agvService.judgeEnable(agv.getId(), true, false)) {
                    continue;
                }
            }
            result.add(agv.getUuid());
@@ -221,16 +225,15 @@
//                continue;
//            }
            // in TransferStationHandler.hasDelayAtSta
            Segment currSeg = segmentService.getRollerWaiting(agvId, sta.getCode(), TaskPosDto.PosType.ORI_STA);
            if (null == currSeg) {
            Travel currTravelInRollerWaiting = travelService.findRollerWaitingTravel(agvId, currentCode.getId());
            if (null == currTravelInRollerWaiting) {
                continue;
            }
            // has enough backpack space to load
            Integer backpack = agvService.getBackpack(agvId);
            List<Integer> usedBackpacks = segmentService.selectUsedBackpacks(null, agvId);
            if (usedBackpacks.size() >= backpack) {
            Integer backpackCap = agvService.getBackpack(agvId);
            List<Integer> usedBackpacks = segmentService.selectUsedBackpacks(currTravelInRollerWaiting.getId(), agvId);
            if (usedBackpacks.size() >= backpackCap) {
                continue;
            }