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; // 直接赋值给支持字段,避免递归 } } } }