From e4232391800b6798fb3d6cf3acc61b5e4a126787 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 05 四月 2026 23:10:33 +0800
Subject: [PATCH] #缓存数据清理
---
src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java | 69 ++++++++++++++++++++++++++++------
1 files changed, 57 insertions(+), 12 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 17bd7f8..23dadc4 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
@@ -177,7 +177,7 @@
}
@Override
- public synchronized StationCommand getRunBlockRerouteCommand(Integer taskNo,
+ public StationCommand getRunBlockRerouteCommand(Integer taskNo,
Integer stationId,
Integer targetStationId,
Integer palletSize) {
@@ -185,7 +185,7 @@
}
@Override
- public synchronized StationCommand getRunBlockRerouteCommand(Integer taskNo,
+ public StationCommand getRunBlockRerouteCommand(Integer taskNo,
Integer stationId,
Integer targetStationId,
Integer palletSize,
@@ -197,10 +197,12 @@
return getCommand(StationCommandType.MOVE, taskNo, stationId, targetStationId, palletSize, pathLenFactor);
}
+ long startNs = System.nanoTime();
StationTaskLoopService taskLoopService = loadStationTaskLoopService();
StationTaskLoopService.LoopEvaluation loopEvaluation = taskLoopService == null
? new StationTaskLoopService.LoopEvaluation(taskNo, stationId, StationTaskLoopService.LoopIdentitySnapshot.empty(), 0, 0, false)
: taskLoopService.evaluateLoop(taskNo, stationId, true);
+ long loopEvalNs = System.nanoTime();
log.info("杈撻�佺嚎鍫靛閲嶈鍒掔幆绾胯瘑鍒紝taskNo={}, stationId={}, scopeType={}, localStationCount={}, sourceLoopStationCount={}",
taskNo,
stationId,
@@ -208,6 +210,7 @@
loopEvaluation.getLoopIdentity().getLocalStationCount(),
loopEvaluation.getLoopIdentity().getSourceLoopStationCount());
List<List<NavigateNode>> candidatePathList = calcCandidatePathNavigateNodes(taskNo, stationId, targetStationId, pathLenFactor);
+ long candidatePathNs = System.nanoTime();
List<StationCommand> candidateCommandList = new ArrayList<>();
for (List<NavigateNode> candidatePath : candidatePathList) {
StationCommand rerouteCommand = buildMoveCommand(taskNo, stationId, targetStationId, palletSize, candidatePath);
@@ -216,6 +219,7 @@
}
candidateCommandList.add(rerouteCommand);
}
+ long buildCommandNs = System.nanoTime();
StationV5RunBlockReroutePlanner.PlanResult planResult = runBlockReroutePlanner.plan(
taskNo,
@@ -223,6 +227,17 @@
loopEvaluation,
candidateCommandList
);
+ long planNs = System.nanoTime();
+ logRunBlockRerouteCost(taskNo,
+ stationId,
+ targetStationId,
+ candidatePathList == null ? 0 : candidatePathList.size(),
+ candidateCommandList.size(),
+ startNs,
+ loopEvalNs,
+ candidatePathNs,
+ buildCommandNs,
+ planNs);
if (candidateCommandList.isEmpty()) {
log.warn("杈撻�佺嚎鍫靛閲嶈鍒掑け璐ワ紝鍊欓�夎矾寰勪负绌猴紝taskNo={}, planCount={}, stationId={}, targetStationId={}",
taskNo, planResult.getPlanCount(), stationId, targetStationId);
@@ -249,8 +264,8 @@
}
@Override
- public synchronized boolean clearPath(Integer taskNo) {
- if (taskNo == null || taskNo <= 0) {
+ public boolean clearPath(Integer taskNo) {
+ if (taskNo == null) {
return false;
}
if (zyStationConnectDriver == null) {
@@ -274,18 +289,17 @@
continue;
}
found = true;
+ Integer clearedTaskNo = item.getTaskNo();
if (!zyStationConnectDriver.clearTaskBufferSlot(stationId, item.getSlotIdx())) {
success = false;
log.warn("杈撻�佺珯缂撳瓨鍖烘畫鐣欒矾寰勬竻鐞嗗け璐ャ�俿tationId={}, slotIdx={}, taskNo={}",
- stationId, item.getSlotIdx(), item.getTaskNo());
+ stationId, item.getSlotIdx(), clearedTaskNo);
continue;
- }else {
- item.setTaskNo(0);
- item.setTargetStaNo(0);
- success = true;
- log.warn("杈撻�佺珯缂撳瓨鍖烘畫鐣欒矾寰勬竻鐞嗘垚鍔熴�俿tationId={}, slotIdx={}, taskNo={}",
- stationId, item.getSlotIdx(), item.getTaskNo());
}
+ item.setTaskNo(0);
+ item.setTargetStaNo(0);
+ log.warn("杈撻�佺珯缂撳瓨鍖烘畫鐣欒矾寰勬竻鐞嗘垚鍔熴�俿tationId={}, slotIdx={}, taskNo={}",
+ stationId, item.getSlotIdx(), clearedTaskNo);
}
}
return found && success;
@@ -351,7 +365,7 @@
if (navigateUtils == null) {
return new ArrayList<>();
}
- return navigateUtils.calcByStationId(startStationId, targetStationId, taskNo, pathLenFactor);
+ return navigateUtils.calcOptimalPathByStationId(startStationId, targetStationId, taskNo, pathLenFactor);
}
private List<List<NavigateNode>> calcCandidatePathNavigateNodes(Integer taskNo,
@@ -423,4 +437,35 @@
return null;
}
}
+
+ private void logRunBlockRerouteCost(Integer taskNo,
+ Integer stationId,
+ Integer targetStationId,
+ int candidatePathCount,
+ int candidateCommandCount,
+ long startNs,
+ long loopEvalNs,
+ long candidatePathNs,
+ long buildCommandNs,
+ long planNs) {
+ long totalMs = nanosToMillis(planNs - startNs);
+ if (totalMs < 1000L) {
+ return;
+ }
+ log.warn("杈撻�佺嚎鍫靛閲嶈鍒掕�楁椂杈冮暱, taskNo={}, stationId={}, targetStationId={}, total={}ms, loopEval={}ms, candidatePath={}ms, buildCommand={}ms, planner={}ms, candidatePathCount={}, candidateCommandCount={}",
+ taskNo,
+ stationId,
+ targetStationId,
+ totalMs,
+ nanosToMillis(loopEvalNs - startNs),
+ nanosToMillis(candidatePathNs - loopEvalNs),
+ nanosToMillis(buildCommandNs - candidatePathNs),
+ nanosToMillis(planNs - buildCommandNs),
+ candidatePathCount,
+ candidateCommandCount);
+ }
+
+ private long nanosToMillis(long nanos) {
+ return nanos <= 0L ? 0L : nanos / 1_000_000L;
+ }
}
--
Gitblit v1.9.1