Junjie
2025-05-23 1b007b8d43f82cf86e3cf5f2a316f30bae51deb2
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
@@ -1,9 +1,11 @@
package com.zy.core.dispatcher;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.domain.ShuttleGatherResult;
import com.zy.asrs.domain.param.ShuttleGatherParam;
import com.zy.asrs.entity.BasShuttle;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.service.BasShuttleService;
@@ -55,14 +57,14 @@
    /**
     * 调度车辆-调度指定穿梭车
     */
    public boolean dispatchShuttle(Integer wrkNo, String locNo, Integer shuttleNo) {
    public synchronized boolean dispatchShuttle(Integer wrkNo, String locNo, Integer shuttleNo) {
        return shuttleMoveGenerate(wrkNo, locNo, shuttleNo);
    }
    /**
     * 调度车辆
     */
    public boolean dispatchShuttle(Integer wrkNo, String locNo) {
    public synchronized boolean dispatchShuttle(Integer wrkNo, String locNo) {
        ArrayList<ShuttleThread> sameLev = new ArrayList<>();//相同楼层的穿梭车
        ArrayList<ShuttleThread> diffLev = new ArrayList<>();//不同楼层的穿梭车
@@ -200,7 +202,7 @@
     * 小车迁移任务生成
     */
    @Transactional
    public boolean shuttleMoveGenerate(Integer wrkNo, String locNo, Integer shuttleNo) {
    public synchronized boolean shuttleMoveGenerate(Integer wrkNo, String locNo, Integer shuttleNo) {
        Date now = new Date();
        //获取四向穿梭车线程
        ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
@@ -237,7 +239,7 @@
                News.info("{}号小车,存在其他工作档任务,等待执行完成再生成新的任务", shuttleNo);
                return false;
            }else {
                if (!mainWrkMast.getShuttleNo().equals(shuttleNo)) {
                if (!shuttleNo.equals(mainWrkMast.getShuttleNo())) {
                    News.info("{}号小车,存在其他工作档任务,等待执行完成再生成新的任务", shuttleNo);
                    return false;
                }
@@ -299,8 +301,15 @@
    /**
     * 小车集合
     */
    public List<ShuttleGatherResult> shuttleGather() {
        List<BasShuttle> basShuttles = basShuttleService.selectList(new EntityWrapper<BasShuttle>().eq("status", 1));
    public List<ShuttleGatherResult> shuttleGather(ShuttleGatherParam param) {
        Wrapper<BasShuttle> wrapper = new EntityWrapper<BasShuttle>().eq("status", 1);
        if (param != null) {
            if (!param.getShuttleNos().isEmpty()) {
                wrapper.in("shuttle_no", param.getShuttleNos());
            }
        }
        List<BasShuttle> basShuttles = basShuttleService.selectList(wrapper);
        List<ShuttleGatherResult> list = new ArrayList<>();
        for (BasShuttle basShuttle : basShuttles) {
            String idleLoc = basShuttle.getIdleLoc();