#
vincentlu
2025-12-18 8bc919a3a4ad7f690ad5269628f4405df1a896b8
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);