yeg
6 天以前 a04222c873e5e55f48c8d33b5c0bc46fa524ac8d
battery-device-api/src/main/java/com/battery/device/api/model/DetectedChannel.java
@@ -6,18 +6,31 @@
 * 发现结果中的一个通道。
 * {@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);
    }
}