From 68156d14934ffb7d7b6e0dca63d3dcf3ed43c995 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期六, 05 九月 2026 18:01:40 +0800
Subject: [PATCH] 修复离线设备无法发现和登记的问题

---
 ruoyi-admin/src/test/java/com/battery/business/service/impl/TDetectionCabinetServiceImplTest.java |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/ruoyi-admin/src/test/java/com/battery/business/service/impl/TDetectionCabinetServiceImplTest.java b/ruoyi-admin/src/test/java/com/battery/business/service/impl/TDetectionCabinetServiceImplTest.java
index 26d0218..6a464b1 100644
--- a/ruoyi-admin/src/test/java/com/battery/business/service/impl/TDetectionCabinetServiceImplTest.java
+++ b/ruoyi-admin/src/test/java/com/battery/business/service/impl/TDetectionCabinetServiceImplTest.java
@@ -228,6 +228,23 @@
         assertEquals(8, devices.get(0).getChannelCount());
     }
 
+    @Test
+    void offlineCabinetRemainsDiscoverableAndCanBeRegistered()
+    {
+        var store = new InMemoryDeviceDiscoveryCandidateStore();
+        store.recordCabinets(List.of(candidate("CABINET-001", false, DeviceWorkStatus.UNOBSERVABLE)));
+        var service = new TDetectionCabinetServiceImpl(detectionCabinetMapper, store);
+        when(detectionCabinetMapper.selectRegisteredCabinetCodes()).thenReturn(List.of());
+        var devices = service.selectDiscoveredCabinetList();
+        assertEquals(1, devices.size());
+        assertEquals("离线", devices.get(0).getOnlineStatus());
+        when(detectionCabinetMapper.insertDetectionCabinet(any(TDetectionCabinet.class))).thenReturn(1);
+        assertEquals(1, service.insertDetectionCabinet(detectionCabinet));
+        assertEquals("OFFLINE", detectionCabinet.getOnlineStatus());
+        when(detectionCabinetMapper.selectRegisteredCabinetCodes()).thenReturn(List.of("CABINET-001"));
+        assertEquals(0, service.selectDiscoveredCabinetList().size());
+    }
+
     /**
      * 验证重复设备编码会阻止新增且不会执行写库操作。
      */
@@ -255,7 +272,7 @@
         ServiceException exception = assertThrows(ServiceException.class,
                 () -> detectionCabinetService.insertDetectionCabinet(detectionCabinet));
 
-        assertEquals("请先选择在线的发现候选设备", exception.getMessage());
+        assertEquals("请先选择有效的发现候选设备", exception.getMessage());
         verify(detectionCabinetMapper, never()).insertDetectionCabinet(any());
     }
 

--
Gitblit v1.7.1