From 5a2bd164d3a831e39bf0defaddf181a97de36993 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期日, 05 四月 2026 23:28:42 +0800
Subject: [PATCH] #缓存数据清理
---
src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java | 34 +++++++++++++++++
src/main/java/com/zy/asrs/controller/StationController.java | 23 +++++++++++
src/main/java/com/zy/core/thread/StationThread.java | 4 ++
src/main/webapp/components/DevpCard.js | 13 +++++-
src/main/java/com/zy/asrs/domain/param/StationCommandMoveParam.java | 3 +
5 files changed, 75 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/StationController.java b/src/main/java/com/zy/asrs/controller/StationController.java
index 9f2dff7..cecae35 100644
--- a/src/main/java/com/zy/asrs/controller/StationController.java
+++ b/src/main/java/com/zy/asrs/controller/StationController.java
@@ -166,6 +166,29 @@
return R.ok("娓呯悊璺緞鎴愬姛");
}
+ @PostMapping("/command/clearPathBySlot")
+ public R commandClearPathBySlot(@RequestBody StationCommandMoveParam param) {
+ if (param == null || Cools.isEmpty(param.getStationId()) || param.getSlotIdx() == null) {
+ return R.error("缂哄皯鍙傛暟");
+ }
+
+ StationObjModel finalStation = findStation(param.getStationId());
+ if (finalStation == null) {
+ return R.error("绔欑偣涓嶅瓨鍦�");
+ }
+
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, finalStation.getDeviceNo());
+ if (stationThread == null) {
+ return R.error("绾跨▼涓嶅瓨鍦�");
+ }
+
+ boolean cleared = stationThread.clearPathByStationSlot(param.getStationId(), param.getSlotIdx());
+ if (!cleared) {
+ return R.error("鏈尮閰嶅埌鍙竻鐞嗘Ы浣嶆垨娓呯悊澶辫触");
+ }
+ return R.ok("娓呯悊璺緞鎴愬姛");
+ }
+
private StationObjModel findStation(Integer stationId) {
if (Cools.isEmpty(stationId)) {
return null;
diff --git a/src/main/java/com/zy/asrs/domain/param/StationCommandMoveParam.java b/src/main/java/com/zy/asrs/domain/param/StationCommandMoveParam.java
index 6a9844e..1d1ac2d 100644
--- a/src/main/java/com/zy/asrs/domain/param/StationCommandMoveParam.java
+++ b/src/main/java/com/zy/asrs/domain/param/StationCommandMoveParam.java
@@ -14,4 +14,7 @@
// 浠诲姟缂栧彿
private Integer taskNo;
+ // 缂撳瓨鍖烘Ы浣嶇紪鍙�
+ private Integer slotIdx;
+
}
diff --git a/src/main/java/com/zy/core/thread/StationThread.java b/src/main/java/com/zy/core/thread/StationThread.java
index 3586470..9193988 100644
--- a/src/main/java/com/zy/core/thread/StationThread.java
+++ b/src/main/java/com/zy/core/thread/StationThread.java
@@ -46,6 +46,10 @@
boolean clearPath(Integer taskNo);
+ default boolean clearPathByStationSlot(Integer stationId, Integer slotIdx) {
+ return false;
+ }
+
CommandResponse sendCommand(StationCommand command);
CommandResponse sendOriginCommand(String address, short[] data);
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 23dadc4..04f30fe 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationV5Thread.java
@@ -306,6 +306,40 @@
}
@Override
+ public boolean clearPathByStationSlot(Integer stationId, Integer slotIdx) {
+ if (stationId == null || slotIdx == null || zyStationConnectDriver == null) {
+ return false;
+ }
+ List<StationProtocol> status = getStatus();
+ if (status == null || status.isEmpty()) {
+ return false;
+ }
+
+ for (StationProtocol stationProtocol : status) {
+ if (stationProtocol == null || !Objects.equals(stationId, stationProtocol.getStationId())) {
+ continue;
+ }
+ if (!zyStationConnectDriver.clearTaskBufferSlot(stationId, slotIdx)) {
+ log.warn("杈撻�佺珯缂撳瓨鍖烘畫鐣欒矾寰勬寜绔欑偣妲戒綅娓呯悊澶辫触銆俿tationId={}, slotIdx={}", stationId, slotIdx);
+ return false;
+ }
+ List<StationTaskBufferItem> taskBufferItems = stationProtocol.getTaskBufferItems();
+ if (taskBufferItems != null) {
+ for (StationTaskBufferItem item : taskBufferItems) {
+ if (item != null && Objects.equals(slotIdx, item.getSlotIdx())) {
+ item.setTaskNo(0);
+ item.setTargetStaNo(0);
+ break;
+ }
+ }
+ }
+ log.warn("杈撻�佺珯缂撳瓨鍖烘畫鐣欒矾寰勬寜绔欑偣妲戒綅娓呯悊鎴愬姛銆俿tationId={}, slotIdx={}", stationId, slotIdx);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
public CommandResponse sendCommand(StationCommand command) {
CommandResponse commandResponse = null;
try {
diff --git a/src/main/webapp/components/DevpCard.js b/src/main/webapp/components/DevpCard.js
index d9eb322..94deb26 100644
--- a/src/main/webapp/components/DevpCard.js
+++ b/src/main/webapp/components/DevpCard.js
@@ -27,13 +27,18 @@
<span class="mc-field-label">宸ヤ綔鍙�</span>
<input class="mc-input" v-model="controlParam.taskNo" placeholder="杈撳叆宸ヤ綔鍙�" />
</label>
+ <label class="mc-field">
+ <span class="mc-field-label">slotIdx</span>
+ <input class="mc-input" v-model="controlParam.slotIdx" placeholder="杈撳叆缂撳瓨绱㈠紩" />
+ </label>
<label class="mc-field mc-span-2">
<span class="mc-field-label">鐩爣绔�</span>
<input class="mc-input" v-model="controlParam.targetStationId" placeholder="杈撳叆鐩爣绔欏彿" />
</label>
<div class="mc-action-row">
<button type="button" class="mc-btn" @click="controlCommand">涓嬪彂</button>
- <button type="button" class="mc-btn mc-btn-soft" @click="clearPathCommand">娓呰矾寰�</button>
+ <button type="button" class="mc-btn mc-btn-soft" @click="clearPathByTaskNoCommand">宸ヤ綔鍙锋竻璺緞</button>
+ <button type="button" class="mc-btn mc-btn-soft" @click="clearPathBySlotCommand">绔欑偣娓呰矾寰�</button>
<button type="button" class="mc-btn mc-btn-soft" @click="resetCommand">澶嶄綅</button>
<button type="button" class="mc-btn mc-btn-ghost" @click="openStationTracePage">杩愯杞ㄨ抗</button>
<button v-if="showFakeTraceEntry" type="button" class="mc-btn mc-btn-ghost" @click="openFakeTracePage">浠跨湡杞ㄨ抗</button>
@@ -115,6 +120,7 @@
controlParam: {
stationId: "",
taskNo: "",
+ slotIdx: "",
targetStationId: ""
},
barcodePreviewCache: {},
@@ -495,9 +501,12 @@
controlCommand: function () {
this.postControl("/station/command/move", this.controlParam);
},
- clearPathCommand: function () {
+ clearPathByTaskNoCommand: function () {
this.postControl("/station/command/clearPath", this.controlParam);
},
+ clearPathBySlotCommand: function () {
+ this.postControl("/station/command/clearPathBySlot", this.controlParam);
+ },
resetCommand: function () {
this.postControl("/station/command/reset", this.controlParam);
}
--
Gitblit v1.9.1