From 852664df1caf38831793b341edcada9dd7b6c22a Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 06 五月 2026 19:28:33 +0800
Subject: [PATCH] #dfs
---
src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 58 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java b/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
index d563265..e0209e4 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
@@ -50,6 +50,7 @@
private static final int EXECUTOR_QUEUE_WARN_THRESHOLD = 20;
private static final int EXECUTOR_ACTIVE_WARN_THRESHOLD = 48;
private static final long SEGMENT_EXECUTE_WARN_MS = 10_000L;
+ private static final long COMMAND_BUILD_WARN_MS = 500L;
private static final int QUEUE_DRAIN_BATCH_SIZE = 32;
private static final long QUEUE_IDLE_SLEEP_MS = 20L;
@@ -254,8 +255,25 @@
stationCommand.setCommandType(commandType);
if (commandType == StationCommandType.MOVE && !stationId.equals(targetStationId)) {
+ long startNs = System.nanoTime();
+ long calcPathStartNs = startNs;
List<NavigateNode> nodes = calcPathNavigateNodes(taskNo, stationId, targetStationId, pathLenFactor);
- return fillMoveCommandPath(stationCommand, nodes, taskNo, stationId, targetStationId);
+ long calcPathCostMs = nanosToMillis(System.nanoTime() - calcPathStartNs);
+ long fillCommandStartNs = System.nanoTime();
+ StationCommand builtCommand = fillMoveCommandPath(stationCommand, nodes, taskNo, stationId, targetStationId);
+ long fillCommandCostMs = nanosToMillis(System.nanoTime() - fillCommandStartNs);
+ long totalCostMs = nanosToMillis(System.nanoTime() - startNs);
+ if (totalCostMs >= COMMAND_BUILD_WARN_MS) {
+ log.warn("V5杈撻�佸懡浠ょ敓鎴愯�楁椂杈冮暱锛宒eviceNo={}, taskNo={}, stationId={}, targetStaNo={}, calcPath={}ms, fillCommand={}ms, total={}ms",
+ deviceConfig == null ? null : deviceConfig.getDeviceNo(),
+ taskNo,
+ stationId,
+ targetStationId,
+ calcPathCostMs,
+ fillCommandCostMs,
+ totalCostMs);
+ }
+ return builtCommand;
}
return stationCommand;
}
@@ -293,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);
@@ -304,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,
@@ -312,6 +346,14 @@
candidateCommandList
);
long planNs = System.nanoTime();
+ log.info("杈撻�佺嚎鍫靛閲嶈鍒抪lanner瀹屾垚锛宼askNo={}, 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,
@@ -331,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()));
@@ -347,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) {
--
Gitblit v1.9.1