#
vincentlu
2025-12-18 8bc919a3a4ad7f690ad5269628f4405df1a896b8
#
7个文件已修改
124 ■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AreaGovernService.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/LocMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
@@ -173,7 +173,7 @@
                    oriLoc = locService.getById(param.getStartLocNo());
                }
                if (!Cools.isEmpty(param.getStartLocNoStr())) {
                    oriLoc = locService.selecatByLocNo(param.getStartLocNoStr());
                    oriLoc = locService.selectByLocNo(param.getStartLocNoStr());
                }
                if (null == oriLoc) {
                    return R.error();
@@ -192,7 +192,7 @@
                    destLoc = locService.getById(param.getEndLocNo());
                }
                if (!Cools.isEmpty(param.getEndLocNoStr())) {
                    destLoc = locService.selecatByLocNo(param.getEndLocNoStr());
                    destLoc = locService.selectByLocNo(param.getEndLocNoStr());
                }
                if (null == destLoc) {
                    return R.error();
@@ -220,7 +220,7 @@
                    oriLoc = locService.getById(param.getStartLocNo());
                }
                if (!Cools.isEmpty(param.getStartLocNoStr())) {
                    oriLoc = locService.selecatByLocNo(param.getStartLocNoStr());
                    oriLoc = locService.selectByLocNo(param.getStartLocNoStr());
                }
                if (null == oriLoc) {
                    return R.error();
@@ -286,7 +286,7 @@
                    destLoc = locService.getById(param.getEndLocNo());
                }
                if (!Cools.isEmpty(param.getEndLocNoStr())) {
                    destLoc = locService.selecatByLocNo(param.getEndLocNoStr());
                    destLoc = locService.selectByLocNo(param.getEndLocNoStr());
                }
                if (null == destLoc) {
                    return R.error();
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
@@ -6,13 +6,12 @@
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.SnowflakeIdWorker;
import com.zy.acs.manager.common.domain.TaskDto;
import com.zy.acs.manager.core.service.MainLockWrapService;
import com.zy.acs.manager.core.service.MainService;
import com.zy.acs.manager.core.service.TrafficService;
import com.zy.acs.manager.core.service.*;
import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam;
import com.zy.acs.manager.manager.entity.*;
import com.zy.acs.manager.manager.enums.*;
import com.zy.acs.manager.manager.service.*;
import com.zy.acs.manager.manager.service.impl.CodeServiceImpl;
import com.zy.acs.manager.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -53,8 +52,14 @@
    private AgvModelService agvModelService;
    @Autowired
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private AgvAreaDispatcher agvAreaDispatcher;
    @Autowired
    private AreaGovernService areaGovernService;
    @Autowired
    private CodeServiceImpl codeService;
//    @Scheduled(fixedRate = 500) // 固定频率执行,不同步
    //    @Scheduled(fixedRate = 500) // 固定频率执行,不同步
    @Scheduled(fixedDelay = 1000) // 固定频率执行,同步
//    @Scheduled(cron = "0/1 * * * * ? ")
    private void execute() {
@@ -91,7 +96,7 @@
            return;
        }
        // STOCK
        // STOCK STA
        LambdaQueryWrapper<Sta> stockWrapper = new LambdaQueryWrapper<Sta>()
                .eq(Sta::getStaSts, StaStsType.STOCK.val())
                .eq(Sta::getStatus, StatusType.ENABLE.val)
@@ -127,6 +132,65 @@
        mainService.generateBusAndTask(param, memo);
    }
    private void runStaToLoc0(String memo) {
        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
        if (null == agvModel) { return; }
        // STOCK STA
        List<Sta> stockList = staService.list(new LambdaQueryWrapper<Sta>()
                .eq(Sta::getStaSts, StaStsType.STOCK.val())
                .eq(Sta::getStatus, StatusType.ENABLE.val));
        if (Cools.isEmpty(stockList)) { return; }
        Collections.shuffle(stockList);
        OpenBusSubmitParam param = new OpenBusSubmitParam();
        param.setBatch(String.valueOf(snowflakeIdWorker.nextId()).substring(13, 19));
        for (int i = 0; i < Math.min(agvModel.getBackpack(), stockList.size()) ; i++) {
            Sta stockSta = stockList.get(i);
            String staCode = stockSta.getCode$();
            Loc idleLoc = null;
            // 所在区域的条码,如果没有area绑定,就全地图
            List<String> codeList = areaGovernService.queryCodesByOneCode(staCode);
            if (Cools.isEmpty(codeList)) {
                idleLoc = locService.selectRandOneByLocSts(LocStsType.IDLE.val());
            } else {
                Collections.shuffle(codeList);
                for (String codeData : codeList) {
                    Code code = codeService.getCacheByData(codeData);
                    if (null == code) { break; }
                    List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>()
                            .eq(Loc::getCode, code.getId()).eq(Loc::getLocSts, LocStsType.IDLE.val()));
                    if (Cools.isEmpty(locList)) {
                        break;
                    } else if (locList.size() == 1) {
                        idleLoc = locList.get(0);
                    } else {
                        Collections.shuffle(locList);
                        idleLoc = locList.get(0);
                    }
                    if (null != idleLoc) {
                        break;
                    }
                }
            }
            if (null == idleLoc) { break; }
            TaskDto taskDto = new TaskDto();
            taskDto.setOriSta(stockSta.getStaNo());
            taskDto.setDestLoc(idleLoc.getLocNo());
            taskDto.setPriority(100);
            taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
            param.getTaskList().add(taskDto);
        }
        if (Cools.isEmpty(param.getTaskList())) { return; }
        mainService.generateBusAndTask(param, memo);
    }
    // 出库
    private void runLocToSta(String memo) {
//        Integer startRow = Collections.min(locGroupList);
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AreaGovernService.java
@@ -15,10 +15,9 @@
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -40,7 +39,8 @@
    private AreaAgvService areaAgvService;
    // launcher -------------------------------------------------------
    @EventListener(ApplicationReadyEvent.class)
//    @EventListener(ApplicationReadyEvent.class)
    @PostConstruct
    public void init() {
        List<Area> areaList = areaService.list(new LambdaQueryWrapper<Area>().eq(Area::getStatus, StatusType.ENABLE.val));
        if (Cools.isEmpty(areaList)) {
@@ -124,6 +124,18 @@
        return areaIds;
    }
    // checkout list of code by code data
    public List<String> queryCodesByOneCode(String code) {
        Set<String> codeSet = new HashSet<>();
        for (Map.Entry<Long, List<String>> entry : AREA_CODE.entrySet()) {
            List<String> codeList = entry.getValue();
            if (!Cools.isEmpty(codeList) && codeList.contains(code)) {
                codeSet.addAll(codeList);
            }
        }
        return new ArrayList<>(codeSet);
    }
    // checkout list of code by area ids
    public List<String> queryCodes(List<Long> areaIds) {
        if (Cools.isEmpty(areaIds)) {
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java
@@ -51,7 +51,7 @@
            // ori --------------------------
            if (!Cools.isEmpty(taskDto.getOriLoc())) {
                Loc oriLoc = locService.selecatByLocNo(taskDto.getOriLoc());
                Loc oriLoc = locService.selectByLocNo(taskDto.getOriLoc());
                if (null == oriLoc) {
                    throw new BusinessException("oriLoc: " + taskDto.getOriLoc() + " doesn't exist!");
                }
@@ -68,7 +68,7 @@
            }
            // dest --------------------------
            if (!Cools.isEmpty(taskDto.getDestLoc())) {
                Loc destLoc = locService.selecatByLocNo(taskDto.getDestLoc());
                Loc destLoc = locService.selectByLocNo(taskDto.getDestLoc());
                if (null == destLoc) {
                    throw new BusinessException("destLoc: " + taskDto.getDestLoc() + " doesn't exist!");
                }
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/LocMapper.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zy.acs.manager.manager.entity.Loc;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
@@ -12,4 +14,7 @@
    List<Map<String, Object>> selectDigitalLocWhichNeedShow();
    @Select("SELECT * FROM man_loc WHERE loc_sts = #{locSts} ORDER BY RAND() LIMIT 1")
    Loc selectRandOneByLocSts(@Param("locSts") Long locSts);
}
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java
@@ -9,11 +9,14 @@
public interface LocService extends IService<Loc> {
    Loc selecatByLocNo(String locNo);
    Loc selectByLocNo(String locNo);
    List<Map<String, Object>> selectCountGroupByLocSts();
    List<Map<String, Object>> selectDigitalLocWhichNeedShow();
    void taskCallBack(Task task);
    Loc selectRandOneByLocSts(Long locSts);
}
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java
@@ -29,7 +29,7 @@
    private StaService staService;
    @Override
    public Loc selecatByLocNo(String locNo) {
    public Loc selectByLocNo(String locNo) {
        return this.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, locNo));
    }
@@ -144,4 +144,12 @@
    }
    @Override
    public Loc selectRandOneByLocSts(Long locSts) {
        if (locSts == null) {
            return null;
        }
        return this.baseMapper.selectRandOneByLocSts(locSts);
    }
}