#
luxiaotao1123
2024-10-28 052ee1f9c0b9e2bc8bbd4cf135ae45fed7422023
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.manager.common.utils.LocUtils;
import com.zy.acs.manager.core.domain.Lane;
import com.zy.acs.manager.manager.entity.Agv;
import com.zy.acs.manager.manager.entity.AgvModel;
import com.zy.acs.manager.manager.entity.Task;
@@ -15,10 +16,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;
import java.util.*;
/**
 * Created by vincent on 8/12/2024
@@ -72,9 +70,34 @@
    public synchronized Agv execute(Task task) {
        List<Agv> availableAgvList = getAvailableAgv();
        if (Cools.isEmpty(availableAgvList)) {
            log.warn("No available agv to assign the task[{}]", task.getSeqNum());
            return null;
        }
        Integer maxAgvCountInLane = configService.getVal("maxAgvCountInLane", Integer.class);
        // checkout lane
        Lane originLane = taskService.checkoutOriginLane(task);
        Lane destinationLane = taskService.checkoutDestinationLane(task);
        // allocate about origin
        taskService.findTasksByLaneHash(originLane.getHashCode());
        // allocate about destination
        taskService.findTasksByLaneHash(destinationLane.getHashCode());
        /**
         * 1.   判断task的起始点和目的点所在的巷道承载任务数量,
         *      如果数量已经达到负载,则判断负载任务的AGV是否还有空背篓,如果有则优先派发给它,
         *      如果没有了,那么则阻塞任务,直到该巷道释放
         *
         * 2.   轮询空闲小车,目标是让每台小车都动起来
         *      判断逻辑:背篓数量最少的小车轮询的时候,优先级最高
         */
        task.setOriLaneHash(originLane.getHashCode());
        task.setDestLaneHash(destinationLane.getHashCode());
        return null;
    }