zhang
12 小时以前 70930071a49190f414c8d8bc9c9e9795a4096739
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java
@@ -19,6 +19,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zy.acs.common.utils.News;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@@ -41,7 +42,7 @@
    private ScheduledExecutorService scheduler = null;
    private List<String> CODE_DATA_CACHE = new ArrayList<>();
    private List<String> ALL_CODE_DATA_CACHE = new ArrayList<>();
    private List<String> LOC_CODE_DATA_CACHE = new ArrayList<>();
@@ -74,9 +75,7 @@
    @Autowired
    private AgvModelService agvModelService;
    @Autowired
    private AreaAgvService areaAgvService;
    @Autowired
    private AreaGovernService areaGovernService;
    private AgvAreaDispatcher agvAreaDispatcher;
    @PostConstruct
    public void init() {
@@ -86,7 +85,7 @@
        }
        // init all code data
        List<Code> codeList = codeService.list(new LambdaQueryWrapper<Code>().eq(Code::getStatus, StatusType.ENABLE.val));
        this.CODE_DATA_CACHE = codeList.stream().map(Code::getData).distinct().collect(Collectors.toList());
        this.ALL_CODE_DATA_CACHE = codeList.stream().map(Code::getData).distinct().collect(Collectors.toList());
        // int all loc code data
        List<Code> locCodeList = codeService.getAllLocCode();
@@ -137,7 +136,7 @@
                }
                break;
            default:
                log.warn("AGV {}: 未知阶段: {}", agvNo, jobType);
                News.warn("AGV {}: 未知阶段: {}", agvNo, jobType);
                break;
        }
        if (Cools.isEmpty(destinationCodeData)) {
@@ -145,7 +144,7 @@
        }
        if (mainLockWrapService.buildMinorTask(agvId, TaskTypeType.MOVE, destinationCodeData, null)) {
            log.info( "{}开始作业演示...", agvNo);
            News.info( "{}开始作业演示...", agvNo);
            CoreCache.AGV_MOCK_STEP_CACHE.put(agvId, CodeStepDto.build(destinationCodeData, jobType));
        }
@@ -185,6 +184,7 @@
    }
    private void patrolOfMove(String agvNo) {
        if (!configService.getVal("TaskAssignMode", Boolean.class)) { return; }
        Long agvId = agvService.getAgvId(agvNo);
        if (0 < travelService.count(new LambdaQueryWrapper<Travel>()
                .eq(Travel::getAgvId, agvId)
@@ -200,7 +200,7 @@
            return;
        }
        if (mainLockWrapService.buildMinorTask(agvId, TaskTypeType.MOVE, destinationCodeData, null)) {
            log.info( "{}开始走行演示...", agvNo);
            News.info( "AGV[{}] 开启自动巡逻...", agvNo);
        }
    }
@@ -216,14 +216,16 @@
     * agv地图图标变化
     */
    public String getDestinationCode(String agvNo, AgvDetail agvDetail) {
        Code startCode = codeService.getCacheById(agvDetail.getRecentCode());
        Set<String> notInCodeSet = new HashSet<>();
        Long agvId = agvDetail.getAgvId();
//        Collections.shuffle(CODE_DATA_CACHE);
        List<Long> areaIds = areaAgvService.queryAreaIdsByAgvId(agvDetail.getAgvId());
        List<String> codeList = areaGovernService.queryCodes(areaIds);
        List<String> codeList = null;
        if (agvAreaDispatcher.isAgvExistsInAnyArea(agvId)) {
            codeList = agvAreaDispatcher.getCodesByAgvId(agvId);
        } else {
            codeList = ALL_CODE_DATA_CACHE;
        }
        Collections.shuffle(codeList);
        for (String endCodeData : codeList) {
@@ -265,14 +267,14 @@
                executePatrolLogic(agvNo);
//                executeUShapeConveyor(agvNo);
            } catch (Exception e) {
                log.error("执行AGV{}跑库任务时发生异常", agvNo, e);
                News.error("执行AGV{}跑库任务时发生异常", agvNo, e);
            }
        };
        ScheduledFuture<?> scheduledFuture = scheduler.scheduleAtFixedRate(patrolTask, 0, SCHEDULE_TIME_INTERVAL, TimeUnit.MILLISECONDS);
        AGV_PATROL_MAP.put(agvNo, scheduledFuture);
        log.info("已启动AGV{}的跑库任务。", agvNo);
        News.info("已启动AGV{}的跑库任务。", agvNo);
        return R.ok();
    }
@@ -290,10 +292,10 @@
            CoreCache.AGV_BACKPACK_USED_CACHE.remove(agvId);
            CoreCache.AGV_MOCK_STEP_CACHE.remove(agvId);
            CoreCache.AGV_MOCK_JOB_CACHE.remove(agvNo);
            log.info("已停止AGV {} 的跑库任务。", agvNo);
            News.info("已停止AGV {} 的跑库任务。", agvNo);
            return R.ok("已停止AGV " + agvNo + " 的跑库任务。");
        } else {
            log.error("未能成功停止AGV " + agvNo + " 的跑库任务。");
            News.error("未能成功停止AGV " + agvNo + " 的跑库任务。");
            return R.error("未能成功停止AGV " + agvNo + " 的跑库任务。");
        }
    }
@@ -309,4 +311,4 @@
        }
    }
}
}