package com.battery.device.api.model; import java.time.Instant; /** * 发现结果中的一个通道。 * {@code lastDataAt} 是来源里最近一次采样行的设备时间;它是"最近是否有新采样行写入"这一条依据的取值, * 与设备结束时间或通道水位线列无关。来源不提供该事实时保持为空。 * *
{@code sourceDisplayNo} 是**来源自己的叫法**(通常是它自己软件里显示的通道号,也可能是文本): * 各厂商给通道编号的方式不同(新威按「单元-通道」,22 所按它界面上的 01–30), * 由来源在发现结果里报出来,界面与登记就用它显示,操作员才能拿它跟厂商软件对上。 * 来源不提供时保持为空,界面回退到身份里的「单元-通道」。 * 它只是展示名,**不参与通道身份**(身份始终是设备的存储事实),所以改它不需要迁移任何数据。 */ public record DetectedChannel(ChannelIdentity identity, String serverIp, boolean available, DetectedDeviceMetadata deviceMetadata, Instant lastDataAt, String sourceDisplayNo) { public DetectedChannel(ChannelIdentity identity, String serverIp, boolean available) { this(identity, serverIp, available, DetectedDeviceMetadata.empty(), null, null); } public DetectedChannel(ChannelIdentity identity, String serverIp, boolean available, DetectedDeviceMetadata deviceMetadata) { this(identity, serverIp, available, deviceMetadata, null, null); } /** 兼容不带来源叫法的既有适配器。 */ public DetectedChannel(ChannelIdentity identity, String serverIp, boolean available, DetectedDeviceMetadata deviceMetadata, Instant lastDataAt) { this(identity, serverIp, available, deviceMetadata, lastDataAt, null); } }