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