Junjie
2 天以前 1cb18ad19e48be2b944b005db1b950a667725fc6
src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
@@ -311,8 +311,16 @@
                loopEvaluation.getLoopIdentity().getScopeType(),
                loopEvaluation.getLoopIdentity().getLocalStationCount(),
                loopEvaluation.getLoopIdentity().getSourceLoopStationCount());
        log.info("输送线堵塞重规划候选路径计算开始,taskNo={}, stationId={}, targetStationId={}, pathLenFactor={}",
                taskNo, stationId, targetStationId, pathLenFactor);
        List<List<NavigateNode>> candidatePathList = calcCandidatePathNavigateNodes(taskNo, stationId, targetStationId, pathLenFactor);
        long candidatePathNs = System.nanoTime();
        log.info("输送线堵塞重规划候选路径计算完成,taskNo={}, stationId={}, targetStationId={}, candidatePathCount={}, costMs={}",
                taskNo,
                stationId,
                targetStationId,
                candidatePathList == null ? null : candidatePathList.size(),
                nanosToMillis(candidatePathNs - loopEvalNs));
        List<StationCommand> candidateCommandList = new ArrayList<>();
        for (List<NavigateNode> candidatePath : candidatePathList) {
            StationCommand rerouteCommand = buildMoveCommand(taskNo, stationId, targetStationId, palletSize, candidatePath);
@@ -322,6 +330,14 @@
            candidateCommandList.add(rerouteCommand);
        }
        long buildCommandNs = System.nanoTime();
        log.info("输送线堵塞重规划候选命令构建完成,taskNo={}, stationId={}, targetStationId={}, candidatePathCount={}, candidateCommandCount={}, costMs={}, firstCommandPath={}",
                taskNo,
                stationId,
                targetStationId,
                candidatePathList == null ? null : candidatePathList.size(),
                candidateCommandList.size(),
                nanosToMillis(buildCommandNs - candidatePathNs),
                JSON.toJSONString(firstCommandPath(candidateCommandList)));
        StationV5RunBlockReroutePlanner.PlanResult planResult = runBlockReroutePlanner.plan(
                taskNo,
@@ -330,6 +346,14 @@
                candidateCommandList
        );
        long planNs = System.nanoTime();
        log.info("输送线堵塞重规划planner完成,taskNo={}, stationId={}, targetStationId={}, planCount={}, selected={}, issuedRouteCount={}, costMs={}",
                taskNo,
                stationId,
                targetStationId,
                planResult == null ? null : planResult.getPlanCount(),
                planResult != null && planResult.getCommand() != null,
                planResult == null || planResult.getIssuedRoutePathList() == null ? null : planResult.getIssuedRoutePathList().size(),
                nanosToMillis(planNs - buildCommandNs));
        logRunBlockRerouteCost(taskNo,
                stationId,
                targetStationId,
@@ -349,7 +373,11 @@
        StationCommand rerouteCommand = planResult.getCommand();
        if (rerouteCommand != null) {
            if (taskLoopService != null) {
                log.info("输送线堵塞重规划记录环线开始,taskNo={}, stationId={}, targetStationId={}",
                        taskNo, stationId, targetStationId);
                taskLoopService.recordLoopIssue(loopEvaluation, "RUN_BLOCK_REROUTE");
                log.info("输送线堵塞重规划记录环线完成,taskNo={}, stationId={}, targetStationId={}",
                        taskNo, stationId, targetStationId);
            }
            log.info("输送线堵塞重规划选中候选路线,taskNo={}, planCount={}, stationId={}, targetStationId={}, route={}",
                    taskNo, planResult.getPlanCount(), stationId, targetStationId, JSON.toJSONString(rerouteCommand.getNavigatePath()));
@@ -365,6 +393,17 @@
        return null;
    }
    private List<Integer> firstCommandPath(List<StationCommand> candidateCommandList) {
        if (candidateCommandList == null || candidateCommandList.isEmpty()) {
            return new ArrayList<>();
        }
        StationCommand firstCommand = candidateCommandList.get(0);
        if (firstCommand == null || firstCommand.getNavigatePath() == null) {
            return new ArrayList<>();
        }
        return firstCommand.getNavigatePath();
    }
    @Override
    public boolean clearPath(Integer taskNo) {
        if (taskNo == null || taskNo <= 0) {