From 6b9019956913fc47499ba185beedf4370bb5354c Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期四, 03 九月 2026 23:25:01 +0800
Subject: [PATCH] 修正实时设备连接状态与异常展示

---
 ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TTestLiveServiceImplTest.java |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TTestLiveServiceImplTest.java b/ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TTestLiveServiceImplTest.java
index 0024f83..5dfef99 100644
--- a/ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TTestLiveServiceImplTest.java
+++ b/ruoyi-admin/src/test/java/com/ruoyi/system/service/impl/TTestLiveServiceImplTest.java
@@ -60,6 +60,20 @@
     }
 
     @Test
+    void onlineCabinetWithStoppedWorkStatusShouldRemainOnlineAndNotRaiseSourceAlarm()
+    {
+        Instant now = Instant.parse("2026-09-02T06:00:00Z");
+        TTestLiveServiceImpl service = liveService(test("RECEIVING"), now, true, DeviceWorkStatus.STOPPED);
+
+        LiveState state = service.current(10L);
+        var cabinet = state.sources().stream().filter(source -> "CABINET_CHANNEL".equals(source.sourceType()))
+                .findFirst().orElseThrow();
+
+        assertEquals("ONLINE", cabinet.deviceStatus());
+        assertTrue(state.exceptions().isEmpty());
+    }
+
+    @Test
     void pausedShouldNotExposeUnavailableSourceAsAlarm()
     {
         Instant now = Instant.parse("2026-09-02T06:00:00Z");
@@ -98,17 +112,23 @@
 
     private static TTestLiveServiceImpl liveService(TTest test, Instant now, boolean online)
     {
+        return liveService(test, now, online, DeviceWorkStatus.WORKING);
+    }
+
+    private static TTestLiveServiceImpl liveService(TTest test, Instant now, boolean online,
+            DeviceWorkStatus workStatus)
+    {
         DeviceDiscoveryCandidateStore candidates = mock(DeviceDiscoveryCandidateStore.class);
         BtsDevelopmentSimulator simulator = mock(BtsDevelopmentSimulator.class);
         ITTestService tests = mock(ITTestService.class);
         when(tests.selectTestById(10L)).thenReturn(test);
         ChannelIdentity identity = new ChannelIdentity("dev-sim", 1, 1, 0, 1);
-        RealtimeSnapshot snapshot = new RealtimeSnapshot(identity, DeviceWorkStatus.WORKING, 1, 1, "cc", null,
+        RealtimeSnapshot snapshot = new RealtimeSnapshot(identity, workStatus, 1, 1, "cc", null,
                 new BigDecimal("1.200"), new BigDecimal("3.700"), new BigDecimal("2.500"),
                 new BigDecimal("9.250"), 12L, 12L, "0", now,
                 java.util.Map.of());
         DeviceDiscoveryCandidateStore.ChannelCandidate channel = new DeviceDiscoveryCandidateStore.ChannelCandidate(
-                identity, online, DeviceWorkStatus.WORKING, now, snapshot);
+                identity, online, workStatus, now, snapshot);
         DeviceDiscoveryCandidateStore.CabinetCandidate cabinet = new DeviceDiscoveryCandidateStore.CabinetCandidate(
                 "dev-sim", 1L, "dev-sim", 1, 1, "127.0.0.2", "mac", "cabinet", "vendor", "model",
                 List.of(channel), now, now.plusSeconds(60));

--
Gitblit v1.7.1