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