package com.battery.device.api.model;
|
|
import java.time.Instant;
|
|
/**
|
* 发现结果中的一个通道。
|
* {@code lastDataAt} 是来源里最近一次采样行的设备时间;它是"最近是否有新采样行写入"这一条依据的取值,
|
* 与设备结束时间或通道水位线列无关。来源不提供该事实时保持为空。
|
*
|
* <p>{@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);
|
}
|
}
|