From ef776e9fd5e4f64e4ad09a3faa12fb7bb646c79c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 31 三月 2026 08:15:36 +0800
Subject: [PATCH] Merge branch 'stationChange'

---
 src/test/java/com/zy/asrs/controller/StationControllerTest.java |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/src/test/java/com/zy/asrs/controller/StationControllerTest.java b/src/test/java/com/zy/asrs/controller/StationControllerTest.java
index 5983e47..c6dcd32 100644
--- a/src/test/java/com/zy/asrs/controller/StationControllerTest.java
+++ b/src/test/java/com/zy/asrs/controller/StationControllerTest.java
@@ -4,8 +4,12 @@
 import com.zy.asrs.domain.param.StationCommandMoveParam;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.service.BasDevpService;
+import com.zy.core.dispatch.StationCommandDispatchResult;
+import com.zy.core.dispatch.StationCommandDispatcher;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
+import com.zy.core.enums.StationCommandType;
+import com.zy.core.model.command.StationCommand;
 import com.zy.core.thread.StationThread;
 import org.junit.jupiter.api.Test;
 import org.springframework.test.util.ReflectionTestUtils;
@@ -13,12 +17,21 @@
 import java.util.Collections;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.same;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 class StationControllerTest {
+
+    @Test
+    void controller_noLongerKeepsDispatcherFallbackHelper() {
+        assertThrows(NoSuchMethodException.class,
+                () -> StationController.class.getDeclaredMethod("getStationCommandDispatcher"));
+    }
 
     @Test
     void commandClearPath_callsThreadClearPath() {
@@ -48,4 +61,39 @@
             SlaveConnection.remove(SlaveType.Devp, 1);
         }
     }
+
+    @Test
+    void commandMove_dispatchesViaStationCommandDispatcher() {
+        StationController controller = new StationController();
+        BasDevpService basDevpService = mock(BasDevpService.class);
+        StationThread stationThread = mock(StationThread.class);
+        StationCommandDispatcher dispatcher = mock(StationCommandDispatcher.class);
+        StationCommand command = new StationCommand();
+
+        ReflectionTestUtils.setField(controller, "basDevpService", basDevpService);
+        ReflectionTestUtils.setField(controller, "stationCommandDispatcher", dispatcher);
+
+        BasDevp basDevp = new BasDevp();
+        basDevp.setStationList("[{\"deviceNo\":1,\"stationId\":145}]");
+        when(basDevpService.list(any(com.baomidou.mybatisplus.core.conditions.Wrapper.class)))
+                .thenReturn(Collections.singletonList(basDevp));
+        when(stationThread.getCommand(StationCommandType.MOVE, 10335, 145, 188, 0)).thenReturn(command);
+        when(dispatcher.dispatch(1, command, "station-controller", "manual-move"))
+                .thenReturn(StationCommandDispatchResult.accepted("accepted", 1, "station-controller", "manual-move"));
+
+        StationCommandMoveParam param = new StationCommandMoveParam();
+        param.setStationId(145);
+        param.setTaskNo(10335);
+        param.setTargetStationId(188);
+
+        SlaveConnection.put(SlaveType.Devp, 1, stationThread);
+        try {
+            R result = controller.commandMove(param);
+
+            assertEquals(200, result.get("code"));
+            verify(dispatcher).dispatch(eq(1), same(command), eq("station-controller"), eq("manual-move"));
+        } finally {
+            SlaveConnection.remove(SlaveType.Devp, 1);
+        }
+    }
 }

--
Gitblit v1.9.1