#
luxiaotao1123
2024-10-25 fff2e8aa532540036088744c76efe5bffc7733a3
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MissionAssignService.java
@@ -15,6 +15,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -34,6 +35,49 @@
    private ConfigService configService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private LaneService laneService;
    /**
     * get available agv list which is idle
     */
    private List<Agv> getAvailableAgv() {
        List<Agv> result = new ArrayList<>();
        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, 1));
        Collections.shuffle(agvList);
        for (Agv agv : agvList) {
            // 1. without running tasks
            if (0 < taskService.count(new LambdaQueryWrapper<Task>()
                    .eq(Task::getAgvId, agv.getId())
                    .and(i ->
                            i.eq(Task::getTaskSts, TaskStsType.ASSIGN.val())
                            .or().eq(Task::getTaskSts, TaskStsType.PROGRESS.val())
                    )
            )) {
                continue;
            }
            // 2. in idle status
            final Agv finalAgv = agv;
            if (!agvService.judgeEnable(finalAgv.getId(), agvDetail -> agvDetail.getVol() > finalAgv.getChargeLine())) {
                continue;
            }
            result.add(agv);
        }
        return result;
    }
    public synchronized Agv execute(Task task) {
        List<Agv> availableAgvList = getAvailableAgv();
        if (Cools.isEmpty(availableAgvList)) {
            return null;
        }
        return null;
    }
    public synchronized Agv execute(Task task, Map<String, List<Long>> taskAllot, List<Long> taskIds) {
        String oriLocNo = task.getOriLoc$();
@@ -43,7 +87,7 @@
        Agv hit = null;
        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<>());
        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, 1));
        Collections.shuffle(agvList);
        for (Agv agv : agvList) {
            AgvModel agvModel = agvModelService.getById(agv.getAgvModel());