From a04222c873e5e55f48c8d33b5c0bc46fa524ac8d Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期四, 08 十月 2026 13:20:39 +0800
Subject: [PATCH] 界面显示号改为来源自报,并给出无歧义的来源定位

---
 battery-business/src/test/java/com/battery/business/service/impl/PushIngestAdapterContractTest.java |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/battery-business/src/test/java/com/battery/business/service/impl/PushIngestAdapterContractTest.java b/battery-business/src/test/java/com/battery/business/service/impl/PushIngestAdapterContractTest.java
index acee31c..25a2792 100644
--- a/battery-business/src/test/java/com/battery/business/service/impl/PushIngestAdapterContractTest.java
+++ b/battery-business/src/test/java/com/battery/business/service/impl/PushIngestAdapterContractTest.java
@@ -54,7 +54,8 @@
     @Test
     void topologyPushMakesChannelsCandidatesWithTheirOwnLatestDataTime()
     {
-        ingest("{\"kind\":\"TOPOLOGY\",\"rows\":[{\"channel\":26},{\"channel\":18}]}");
+        // 拓扑行里可以带 channelNo:来源自己软件里显示的通道号(现场核对:22 所界面号 = 表名号 + 1)
+        ingest("{\"kind\":\"TOPOLOGY\",\"rows\":[{\"channel\":26,\"channelNo\":27},{\"channel\":18}]}");
         ingest(BATCH);
         PushIngestAdapter adapter = adapter(NOW);
 
@@ -68,9 +69,15 @@
         assertTrue(active.available());
         // 候选的机器地址取实例配置:登记时会被带进检测柜的 IP 字段。
         assertEquals("127.0.0.1", active.serverIp());
+        // 来源自己的通道叫法随候选一起交出(界面与登记用它显示),身份仍是表名里的号。
+        assertEquals("27", active.sourceDisplayNo());
+        assertEquals(26, active.identity().chlid());
         // 登记范围由操作员决定:没有采样行的通道照样出现在候选里,只是没有最近数据时间。
         assertNull(channels.stream().filter(channel -> channel.identity().chlid() == 18).findFirst()
                 .orElseThrow().lastDataAt());
+        // 来源没报叫法的通道保持为空,界面回退到「单元-通道」。
+        assertNull(channels.stream().filter(channel -> channel.identity().chlid() == 18).findFirst()
+                .orElseThrow().sourceDisplayNo());
     }
 
     /** 心跳缺失或过期即来源不可达:发现路径明确失败,业务侧据此把已登记设备置为离线并撤下旧快照。 */

--
Gitblit v1.7.1