using JiShe.CollectBus.Common.Attributes;
using JiShe.CollectBus.Common.Consts;
using JiShe.CollectBus.IoTDB.Attributes;
using Volo.Abp.Domain.Entities;
namespace JiShe.CollectBus.IoTDB.Model
{
///
/// IoT实体基类,此类适用于多个数据测点记录场景,单个测点请使用子类 SingleMeasuring,新增字段只能现有字段末尾添加,否则会导致数据写入失败。
///
public abstract class IoTEntity
{
///
/// 系统名称
///
[TAGColumn]
public string SystemName { get; set; }
///
/// 项目编码
///
[TAGColumn]
public string ProjectId { get; set; }
///
/// 数据类型
///
[TAGColumn]
public string DataType { get; set; } = IOTDBDataTypeConst.Data;
///
/// 设备类型集中器、电表、水表、流量计、传感器等
///
[TAGColumn]
public string DeviceType { get; set; }
///
/// 设备ID,数据生成者,例如集中器ID,电表ID、水表ID、流量计ID、传感器ID等
///
[TAGColumn]
public string DeviceId { get; set; }
///
/// 时标,也就是业务时间戳,单位毫秒,必须通过DateTimeOffset获取
///
public long Timestamps { get; set; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
///
/// 设备路径
///
private string _devicePath;
///
/// 设备路径,树模型使用,表模型会在数据插入的时候直接获取继承类的名称作为表明
///
public virtual string DevicePath
{
get
{
// 如果未手动设置路径,则自动生成
if (string.IsNullOrWhiteSpace(_devicePath))
{
return $"root.{SystemName.ToLower()}.`{ProjectId}`.`{DeviceType}`.{DataType}.`{DeviceId}`";
}
return _devicePath;
}
set
{
_devicePath = value; // 直接赋值给支持字段,避免递归
}
}
}
}