zhang
12 小时以前 a64658c5d91adba50240676eb8ffa6a24aa6caa4
跑库代码更新
1个文件已修改
63 ■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/test/AutoRunScheduler.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/test/AutoRunScheduler.java
@@ -80,26 +80,39 @@
    }
    private void autoRun(AgvModel agvModel) {
        int availableAgvCount = this.getAvailableAgvCount();
        if (0 == availableAgvCount) {
            log.error("failed to run auto agv task, 跑库区域无可用小车");
            return;
        }
//        List<String> staPreNos = getStaPrefixes(staGroupList);
        List<String> staPreNos = new ArrayList<>();
        String memo = "DEMO_STA_" + String.join("-", staPreNos);
        List<String> codes = getTestAreaCodes();
        if (codes.isEmpty()) {
            log.error("failed to run auto agv task, 未配置跑库区域");
        String taskAssignModeArea = configService.getVal("TaskAssignModeArea", String.class);
        if (Cools.isEmpty(taskAssignModeArea)) {
            return;
        }
        for (String areaCode : taskAssignModeArea.split(";")) {
            List<String> testAreaCodes = getTestAreaCodes(areaCode);
            if (testAreaCodes.isEmpty()) {
                continue;
            }
            List<Area> list = areaService.list(new LambdaQueryWrapper<Area>().eq(Area::getName, areaCode));
            Optional<Integer> max = list.stream().map(Area::getPriority).filter(Objects::nonNull).max(Integer::compareTo);
            Integer priority = max.isPresent() ? max.get() : null;
            if (!Cools.isEmpty(priority)) {
        // 入库
        this.runStaToLoc(agvModel, codes, memo);
                this.runStaToLoc(agvModel, testAreaCodes, memo);
        // 出库
        this.runLocToSta(agvModel, codes, memo);
                this.runLocToSta(agvModel, testAreaCodes, memo);
        // 移库
        this.runLocToLoc(agvModel, codes, memo);
                this.runLocToLoc(areaCode, agvModel, testAreaCodes, memo);
            } else if (priority > 10) {
                // 出库
                this.runLocToSta(agvModel, testAreaCodes, memo);
                // 移库
                this.runLocToLoc(areaCode, agvModel, testAreaCodes, memo);
            } else if (priority > 100) {
                // 移库
                this.runLocToLoc(areaCode, agvModel, testAreaCodes, memo);
            }
        }
    }
    // 入库
@@ -195,10 +208,10 @@
    }
    // 移库
    private void runLocToLoc(AgvModel agvModel, List<String> codes, String staTaskMemo) {
    private void runLocToLoc(String area, AgvModel agvModel, List<String> codes, String staTaskMemo) {
        String memo = "DEMO_LOC";
        int availableAgvCount = this.getAvailableAgvCount();
        int availableAgvCount = this.getAvailableAgvCount(area);
        // 最多 ? 组bus运行
        if (availableAgvCount <= busService.count(new LambdaQueryWrapper<Bus>()
@@ -269,26 +282,16 @@
    }
    public List<String> getTestAreaCodes() {
        String taskAssignModeArea = configService.getVal("TaskAssignModeArea", String.class);
        if (Cools.isEmpty(taskAssignModeArea)) {
            List<Code> list = codeService.list(new LambdaQueryWrapper<Code>().eq(Code::getStatus, 1));
            return list.stream().map(Code::getData).collect(Collectors.toList());
        }
        List<Area> list = areaService.list(new LambdaQueryWrapper<Area>().eq(Area::getName, taskAssignModeArea));
    public List<String> getTestAreaCodes(String areaCode) {
        List<Area> list = areaService.list(new LambdaQueryWrapper<Area>().eq(Area::getName, areaCode));
        if (list.isEmpty()) {
            return Collections.emptyList();
        }
        return areaGovernService.queryCodes(list.stream().map(Area::getId).collect(Collectors.toList()));
    }
    public List<Long> getTestAreaAgvs() {
        String taskAssignModeArea = configService.getVal("TaskAssignModeArea", String.class);
        if (Cools.isEmpty(taskAssignModeArea)) {
            List<Agv> list = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, 1));
            return list.stream().map(Agv::getId).collect(Collectors.toList());
        }
        List<Area> list = areaService.list(new LambdaQueryWrapper<Area>().eq(Area::getName, taskAssignModeArea));
    public List<Long> getTestAreaAgvs(String areaCode) {
        List<Area> list = areaService.list(new LambdaQueryWrapper<Area>().eq(Area::getName, areaCode));
        if (list.isEmpty()) {
            return Collections.emptyList();
        }
@@ -306,9 +309,9 @@
        return result;
    }
    private int getAvailableAgvCount() {
    private int getAvailableAgvCount(String areaCode) {
        int res = 0;
        List<Long> testAreaAgvs = getTestAreaAgvs();
        List<Long> testAreaAgvs = getTestAreaAgvs(areaCode);
        for (Long agvId : testAreaAgvs) {
            String agvNo = agvService.getAgvNo(agvId);
            Agv agv = agvService.selectByUuid(agvNo);