zhang
2026-01-05 1809dba25f489ea01c07a9ecc977d9f408545310
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
@@ -3,7 +3,6 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.manager.common.utils.CommonUtil;
import com.zy.acs.manager.core.constant.AgvAreaDispatcher;
import com.zy.acs.manager.core.domain.Lane;
import com.zy.acs.manager.core.domain.TaskPosDto;
import com.zy.acs.manager.manager.entity.*;
@@ -50,18 +49,24 @@
    /**
     * get available agv list which is idle
     */
    private List<String> getAvailableAgvNos(List<String> agvNos) {
        List<Agv> agvList = new ArrayList<>();
        if (Cools.isEmpty(agvNos)) {
            agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val));
        } else {
            for (String agvNo : agvNos) {
                Agv agv = agvService.selectByUuid(agvNo);
                if (agv.getStatusBool()) {
                    agvList.add(agv);
                }
            }
        }
    private List<String> getAvailableAgvNos(List<Long> agvIds) {
//        List<Agv> agvList = new ArrayList<>();
//        if (Cools.isEmpty(agvNos)) {
//            // global
//            agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val));
//        } else {
//            // local
//            for (String agvNo : agvNos) {
//                Agv agv = agvService.selectByUuid(agvNo);
//                if (agv.getStatusBool()) {
//                    agvList.add(agv);
//                }
//            }
//        }
        List<Agv> agvList = Cools.isEmpty(agvIds)
                ? agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val))
                : agvIds.stream().map(agvService::getById).filter(Agv::getStatusBool).collect(Collectors.toList());
        List<String> result = new ArrayList<>();
        for (Agv agv : agvList) {
@@ -84,6 +89,7 @@
        }
        if (!Cools.isEmpty(result)) {
            // todo: 轮询权重
            Collections.shuffle(result);
        }
@@ -101,6 +107,7 @@
     */
    public synchronized Agv execute(Task task) {
        List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvNosByTask(task));
//        List<String> availableAgvNos = this.getAvailableAgvNos(null);
        if (Cools.isEmpty(availableAgvNos)) {
//            log.warn("No available agv to assign the task[{}]", task.getSeqNum());
            return null;