#
luxiaotao1123
2024-12-17 d3d3857cda8b4307d8f03bf15ec9fb2c98c34b64
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java
@@ -37,6 +37,8 @@
    private final ReentrantLock lock = new ReentrantLock(Boolean.TRUE);
    @Autowired
    private AgvService agvService;
    @Autowired
    private BusService busService;
    @Autowired
    private TaskService taskService;
@@ -154,21 +156,30 @@
    @Scheduled(cron = "0/1 * * * * ? ")
    private void autoLocToLoc() {
        if (!configService.getVal("TaskAssignMode", Boolean.class)) { return; }
        int numOfAgv = 2;
        int maxCapacity = 1 * numOfAgv;
        // 最多两组bus运行
//        if (1 < busService.count(new LambdaQueryWrapper<Bus>().in(Bus::getBusSts, BusStsType.RECEIVE.val(), BusStsType.PROGRESS.val()))) {
//            return;
//        }
        int agvCount = agvService.count(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val));
        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
        if (null != agvModel) {
            maxCapacity = agvModel.getBackpack() * numOfAgv;
        if (null == agvModel || 0 == agvCount) {
            return;
        }
//        int maxCapacity = agvModel.getBackpack() * agvCount;
        int maxCapacity = agvModel.getBackpack();
        // STOCK
        List<Loc> stockList = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, LocStsType.STOCK.val()));
        if (Cools.isEmpty(stockList)) {
        if (Cools.isEmpty(stockList) || stockList.size() < agvModel.getBackpack()) {
            return;
        }
        Collections.shuffle(stockList);
        if (stockList.size() > maxCapacity) {
            stockList = stockList.subList(0, maxCapacity);
        }
        int numOfStockLocList = stockList.size();
        // IDLE
        List<Loc> idleList = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, LocStsType.IDLE.val()));
@@ -176,13 +187,13 @@
            return;
        }
        Collections.shuffle(idleList);
        if (idleList.size() > maxCapacity) {
            idleList = idleList.subList(0, maxCapacity);
        if (idleList.size() > numOfStockLocList) {
            idleList = idleList.subList(0, numOfStockLocList);
        }
        OpenBusSubmitParam param = new OpenBusSubmitParam();
        param.setBatch(String.valueOf(snowflakeIdWorker.nextId()).substring(13, 19));
        for (int i = 0; i < maxCapacity; i++) {
        for (int i = 0; i < numOfStockLocList; i++) {
            Loc stockLoc = stockList.get(i);
            Loc idleLoc = idleList.get(i);