diff --git a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs
index bad9528..9212cda 100644
--- a/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs
+++ b/modules/JiShe.CollectBus.Analyzers/ComplexTypeSourceAnalyzers.cs
@@ -226,7 +226,7 @@ namespace JiShe.CollectBus.IncrementalGenerator
code.AppendLine($" public string EntityName {{get;}} = \"{classSymbol.Name}\";");
// 添加 EntityType 属性
code.AppendLine($" public EntityTypeEnum? EntityType {{ get; }} = {entityTypeValue};");
-
+
foreach (var prop in propList)
{
// 安全类型转换
@@ -531,7 +531,14 @@ namespace JiShe.CollectBus.IncrementalGenerator
var entityType = prop.ContainingType.ToDisplayString();//entity 实体类型名称
var propType = prop.Type;//实体属性的类型
var propTypeName = propType.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
- var declaredTypeName = propType.Name; // 直接获取类型名称(如 "Int32")
+ // var declaredTypeName = propType.Name; // 直接获取类型名称(如 "Int32")
+ // 处理可空类型,获取底层具体类型名称
+ var declaredTypeName = propType switch
+ {
+ INamedTypeSymbol { OriginalDefinition.SpecialType: SpecialType.System_Nullable_T } nullableType =>
+ nullableType.TypeArguments[0].Name, // 提取如 "Int32"
+ _ => propType.Name
+ };
// 处理主属性
var propAttributes = prop.GetAttributes()
@@ -573,7 +580,7 @@ namespace JiShe.CollectBus.IncrementalGenerator
$"new EntityMemberInfo(" +
$"\"{prop.Name}.{elementName}\", " +
$"typeof({elementType}), " +
- $"\"{elementDeclaredName}\", " +
+ $"typeof({elementType}).Name, " +//$"\"{elementDeclaredName}\", " +
$"(e) => Get{prop.Name}_{elementName}(({entityType})e), " +
$"(e, v) => Set{prop.Name}_{elementName}(({entityType})e, ({elementType})v))");
}
diff --git a/modules/JiShe.CollectBus.IoTDB/Model/IoTEntity.cs b/modules/JiShe.CollectBus.IoTDB/Model/IoTEntity.cs
index f2d55a5..9df2488 100644
--- a/modules/JiShe.CollectBus.IoTDB/Model/IoTEntity.cs
+++ b/modules/JiShe.CollectBus.IoTDB/Model/IoTEntity.cs
@@ -1,6 +1,7 @@
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
{
@@ -43,5 +44,27 @@ namespace JiShe.CollectBus.IoTDB.Model
/// 时标,也就是业务时间戳,单位毫秒,必须通过DateTimeOffset获取
///
public long Timestamps { get; set; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
+
+ ///
+ /// 设备路径
+ ///
+ public virtual string DevicePath
+ {
+ get
+ {
+ return $"root.{SystemName.ToLower()}.`{ProjectId}`.`{DeviceType}`.{DataType}.`{DeviceId}`";
+ }
+ set
+ {
+ if (string.IsNullOrWhiteSpace(value))
+ {
+ DevicePath = $"root.{SystemName.ToLower()}.`{ProjectId}`.`{DeviceType}`.{DataType}.`{DeviceId}`";
+ }
+ else
+ {
+ DevicePath = value;
+ }
+ }
+ }
}
}
diff --git a/modules/JiShe.CollectBus.IoTDB/Provider/DeviceMetadata.cs b/modules/JiShe.CollectBus.IoTDB/Provider/DeviceMetadata.cs
index f48d218..a93ba35 100644
--- a/modules/JiShe.CollectBus.IoTDB/Provider/DeviceMetadata.cs
+++ b/modules/JiShe.CollectBus.IoTDB/Provider/DeviceMetadata.cs
@@ -6,8 +6,18 @@ namespace JiShe.CollectBus.IoTDB.Provider
///
/// 设备元数据
///
- public class DeviceMetadata
+ public sealed class DeviceMetadata
{
+ ///
+ /// 实体类名称
+ ///
+ public string EntityName { get; set; }
+
+ ///
+ /// 设备表名或树路径,如果实体没有添加TableNameOrTreePath,此处为空
+ ///
+ public string TableNameOrTreePath { get; set; }
+
///
/// 实体类型枚举
///
@@ -31,6 +41,57 @@ namespace JiShe.CollectBus.IoTDB.Provider
///
/// 值类型集合,用于构建Table的值类型,也就是dataTypes参数
///
- public List DataTypes { get; } = new();
+ public List DataTypes { get; set; } = new();
+
+ ///
+ /// 列处理信息集合
+ ///
+ public List Processors { get; } = new List();
+ }
+
+ ///
+ /// 列处理信息结构
+ ///
+ public struct ColumnProcessor
+ {
+ ///
+ /// 列名
+ ///
+ public string ColumnName;
+
+ ///
+ /// 数据类型
+ ///
+ public TSDataType TSDataType { get; set;}
+
+ ///
+ /// 值获取委托(参数:实体对象)
+ ///
+ public Func