From 1a3f0ed6b7f6d4112069a3c8679e7192365d5eef Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 31 三月 2026 12:38:44 +0800
Subject: [PATCH] #电视机退回时入库站点也显示信息
---
src/main/java/com/zy/core/plugin/store/StoreInTaskPolicy.java | 37 ++++++++++++
src/test/java/com/zy/core/plugin/store/StoreInTaskPolicyTest.java | 104 ++++++++++++++++++++++++++++++++++
2 files changed, 140 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/core/plugin/store/StoreInTaskPolicy.java b/src/main/java/com/zy/core/plugin/store/StoreInTaskPolicy.java
index 7549ec5..75f8356 100644
--- a/src/main/java/com/zy/core/plugin/store/StoreInTaskPolicy.java
+++ b/src/main/java/com/zy/core/plugin/store/StoreInTaskPolicy.java
@@ -7,6 +7,7 @@
import com.zy.common.model.StartupDto;
import com.zy.core.enums.RedisKeyType;
import com.zy.core.model.StationObjModel;
+import com.zy.core.model.protocol.StationProtocol;
import java.util.List;
@@ -71,7 +72,9 @@
}
default void onApplyFailed(StoreInTaskContext context, AsyncInTaskResult result) {
- context.getStationProtocol().setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=" + buildFailureMessage(result));
+ String warning = "璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=" + buildFailureMessage(result);
+ context.getStationProtocol().setSystemWarning(warning);
+ syncWarningToBackStation(context, warning);
}
default String buildFailureMessage(AsyncInTaskResult result) {
@@ -81,4 +84,36 @@
return result.getMessage();
}
+ default void syncWarningToBackStation(StoreInTaskContext context, String warning) {
+ if (context == null || context.getStationObjModel() == null || context.getStationThread() == null) {
+ return;
+ }
+ StationObjModel backStation = context.getStationObjModel().getBackStation();
+ if (backStation == null || backStation.getStationId() == null) {
+ return;
+ }
+ if (backStation.getStationId().equals(context.getStationProtocol().getStationId())) {
+ return;
+ }
+
+ List<StationProtocol> stations = context.getStationThread().getStatus();
+ if (stations != null) {
+ for (StationProtocol station : stations) {
+ if (station != null && backStation.getStationId().equals(station.getStationId())) {
+ station.setSystemWarning(warning);
+ return;
+ }
+ }
+ }
+
+ java.util.Map<Integer, StationProtocol> stationMap = context.getStationThread().getStatusMap();
+ if (stationMap == null) {
+ return;
+ }
+ StationProtocol backStationProtocol = stationMap.get(backStation.getStationId());
+ if (backStationProtocol != null) {
+ backStationProtocol.setSystemWarning(warning);
+ }
+ }
+
}
diff --git a/src/test/java/com/zy/core/plugin/store/StoreInTaskPolicyTest.java b/src/test/java/com/zy/core/plugin/store/StoreInTaskPolicyTest.java
new file mode 100644
index 0000000..49ef36f
--- /dev/null
+++ b/src/test/java/com/zy/core/plugin/store/StoreInTaskPolicyTest.java
@@ -0,0 +1,104 @@
+package com.zy.core.plugin.store;
+
+import com.zy.asrs.entity.BasDevp;
+import com.zy.core.model.CommandResponse;
+import com.zy.core.model.StationObjModel;
+import com.zy.core.model.command.StationCommand;
+import com.zy.core.model.protocol.StationProtocol;
+import com.zy.core.thread.StationThread;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+class StoreInTaskPolicyTest {
+
+ private final StoreInTaskPolicy policy = context -> true;
+
+ @Test
+ void onApplyFailed_propagatesWarningToBackStation() {
+ StationProtocol barcodeStation = new StationProtocol();
+ barcodeStation.setStationId(102);
+ StationProtocol backStation = new StationProtocol();
+ backStation.setStationId(101);
+ StationThread stationThread = new FixedStationThread(Map.of(
+ 102, barcodeStation,
+ 101, backStation
+ ));
+
+ StationObjModel backStationModel = new StationObjModel();
+ backStationModel.setStationId(101);
+ StationObjModel barcodeStationModel = new StationObjModel();
+ barcodeStationModel.setStationId(102);
+ barcodeStationModel.setBackStation(backStationModel);
+
+ StoreInTaskContext context = new StoreInTaskContext(new BasDevp(), stationThread, barcodeStationModel, barcodeStation);
+ AsyncInTaskResult result = new AsyncInTaskResult();
+ result.setMessage("WMS寮傚父");
+
+ policy.onApplyFailed(context, result);
+
+ assertEquals("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=WMS寮傚父", barcodeStation.getSystemWarning());
+ assertEquals("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=WMS寮傚父", backStation.getSystemWarning());
+ }
+
+ private static class FixedStationThread implements StationThread {
+
+ private final Map<Integer, StationProtocol> statusMap;
+
+ private FixedStationThread(Map<Integer, StationProtocol> statusMap) {
+ this.statusMap = statusMap;
+ }
+
+ @Override
+ public List<StationProtocol> getStatus() {
+ return List.copyOf(statusMap.values());
+ }
+
+ @Override
+ public Map<Integer, StationProtocol> getStatusMap() {
+ return statusMap;
+ }
+
+ @Override
+ public StationCommand getCommand(com.zy.core.enums.StationCommandType commandType, Integer taskNo,
+ Integer stationId, Integer targetStationId, Integer palletSize) {
+ return null;
+ }
+
+ @Override
+ public boolean clearPath(Integer taskNo) {
+ return false;
+ }
+
+ @Override
+ public CommandResponse sendCommand(StationCommand command) {
+ return null;
+ }
+
+ @Override
+ public CommandResponse sendOriginCommand(String address, short[] data) {
+ return null;
+ }
+
+ @Override
+ public byte[] readOriginCommand(String address, int length) {
+ return new byte[0];
+ }
+
+ @Override
+ public void run() {
+ }
+
+ @Override
+ public boolean connect() {
+ return true;
+ }
+
+ @Override
+ public void close() {
+ }
+ }
+}
--
Gitblit v1.9.1