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/main/java/com/battery/business/service/impl/TDetectionCabinetServiceImpl.java |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/battery-business/src/main/java/com/battery/business/service/impl/TDetectionCabinetServiceImpl.java b/battery-business/src/main/java/com/battery/business/service/impl/TDetectionCabinetServiceImpl.java
index 9c485e1..e875c1f 100644
--- a/battery-business/src/main/java/com/battery/business/service/impl/TDetectionCabinetServiceImpl.java
+++ b/battery-business/src/main/java/com/battery/business/service/impl/TDetectionCabinetServiceImpl.java
@@ -22,6 +22,7 @@
 import com.battery.business.service.ITDetectionCabinetService;
 import com.battery.device.api.discovery.DeviceDiscoveryCandidateStore;
 import com.battery.device.api.discovery.DeviceDiscoveryCandidateStore.CabinetCandidate;
+import com.battery.device.api.discovery.DeviceDiscoveryCandidateStore.ChannelCandidate;
 import com.battery.device.api.model.DeviceWorkStatus;
 
 /**
@@ -197,7 +198,7 @@
                 value.setDevid(channel.identity().devid());
                 value.setSubdevid(channel.identity().subdevid());
                 value.setChlid(channel.identity().chlid());
-                value.setDisplayNo(channel.identity().subdevid() + "-" + channel.identity().chlid());
+                value.setDisplayNo(channelDisplayNo(channel));
                 value.setOnlineStatus(channel.online() ? "ONLINE" : "OFFLINE");
                 value.setWorkStatus(persistedWorkStatus(channel.workStatus(), channel.online()));
                 value.setLastSeenAtUtc(null);
@@ -209,7 +210,8 @@
                     candidate.online());
             candidate.channels().forEach(channel -> detectionCabinetMapper.updateRegisteredChannelObservation(
                     candidate.adapterCode(), channel.identity().devtype(), channel.identity().devid(),
-                    channel.identity().subdevid(), channel.identity().chlid(), channel.online() ? "ONLINE" : "OFFLINE",
+                    channel.identity().subdevid(), channel.identity().chlid(), channelDisplayNo(channel),
+                    channel.online() ? "ONLINE" : "OFFLINE",
                     channel.online() ? persistedWorkStatus(channel.workStatus(), true) : "UNOBSERVABLE",
                     channel.observedAt(), channel.online()));
             return rows;
@@ -432,6 +434,17 @@
         return adapterCode + "-" + devtype + "-" + devid;
     }
 
+    /**
+     * 通道在界面上的显示号:来源自己有叫法就用它(操作员拿它跟厂商软件对上),
+     * 否则回退到身份里的「单元-通道」。显示号只是展示,不参与通道身份。
+     */
+    static String channelDisplayNo(ChannelCandidate channel)
+    {
+        String declared = channel.sourceDisplayNo();
+        return declared == null || declared.isBlank()
+                ? channel.identity().subdevid() + "-" + channel.identity().chlid() : declared.trim();
+    }
+
     /** 将设备观测状态转换为最终数据库允许的通道事实状态。 */
     private String persistedWorkStatus(DeviceWorkStatus status, boolean online)
     {

--
Gitblit v1.7.1