#
luxiaotao1123
2024-10-25 500f6ce071c0bc14d6720354ce148599ac3f35ee
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,8 +35,51 @@
    private ConfigService configService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private LaneService laneService;
    public synchronized Agv execute1(Task task, Map<String, List<Long>> taskAllot, List<Long> taskIds) {
    /**
     * 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
            if (!agvService.judgeEnable(agv.getId(), true)) {
                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$();
        int oriLocRow = LocUtils.getRow(oriLocNo);
        String destLocNo = task.getDestLoc$();
@@ -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());
@@ -66,9 +110,8 @@
                log.info(agv.getUuid() + "号AGV不可用,已经存在进行中的任务...");
                continue;
            }
            final Agv finalAgv = agv;
            if (!agvService.judgeEnable(finalAgv.getId(), agvDetail -> agvDetail.getVol() > finalAgv.getChargeLine())) {
                log.info(finalAgv.getUuid() + "号AGV不可用," + task.getSeqNum() + "任务无法计算...");
            if (!agvService.judgeEnable(agv.getId(), true)) {
                log.info(agv.getUuid() + "号AGV不可用," + task.getSeqNum() + "任务无法计算...");
                continue;
            }
@@ -79,7 +122,7 @@
        return hit;
    }
    public synchronized Agv execute(Task task, Map<String, List<Long>> taskAllot, List<Long> taskIds) {
    public synchronized Agv execute1(Task task, Map<String, List<Long>> taskAllot, List<Long> taskIds) {
        String oriLocNo = task.getOriLoc$();
        int oriLocRow = LocUtils.getRow(oriLocNo);
        String destLocNo = task.getDestLoc$();
@@ -113,9 +156,8 @@
            log.info(agv.getUuid() + "号AGV不可用,已经存在进行中的任务...");
            return null;
        }
        final Agv finalAgv = agv;
        if (!agvService.judgeEnable(finalAgv.getId(), agvDetail -> agvDetail.getVol() > finalAgv.getChargeLine())) {
            log.info(finalAgv.getUuid() + "号AGV不可用," + task.getSeqNum() + "任务无法计算...");
        if (!agvService.judgeEnable(agv.getId(), true)) {
            log.info(agv.getUuid() + "号AGV不可用," + task.getSeqNum() + "任务无法计算...");
            return null;
        }