dev #2

Merged
admin merged 176 commits from dev into master 2025-04-18 01:31:49 +00:00
6 changed files with 46 additions and 73 deletions
Showing only changes of commit 50639f6fcf - Show all commits

View File

@ -6,6 +6,7 @@ using JiShe.CollectBus.FreeSql;
using JiShe.CollectBus.IoTDBProvider;
using JiShe.CollectBus.IotSystems.PrepayModel;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace JiShe.CollectBus.Samples;
@ -20,11 +21,12 @@ public class SampleAppService : CollectBusAppService, ISampleAppService
}
public async Task AddReadingAsync()
[HttpGet]
public async Task AddReadingAsync(int buildTabletMode = 1)
{
ElectricityMeter meter = new ElectricityMeter()
{
SystemName = "Energy",
SystemName = "energy",
DeviceId = "402440506",
DeviceType = "Ammeter",
Current = 10,
@ -32,7 +34,7 @@ public class SampleAppService : CollectBusAppService, ISampleAppService
ProjectCode = "10059",
Voltage = 10
};
await _iotDBProvider.InsertAsync(meter,2);
await _iotDBProvider.InsertAsync(meter, buildTabletMode);
}
public Task<SampleDto> GetAsync()

View File

@ -58,6 +58,12 @@
<ProjectReference Include="..\JiShe.CollectBus.MongoDB\JiShe.CollectBus.MongoDB.csproj" />
</ItemGroup>
<ItemGroup>
<Content Update="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<None Update="Plugins\JiShe.CollectBus.Protocol.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>

View File

@ -73,18 +73,12 @@
"Version": "V1"
}
],
"Cap": {
"RabbitMq": {
"HostName": "118.190.144.92",
"UserName": "collectbus",
"Password": "123456",
"Port": 5672
}
},
"IoTDBOptions": {
"UserName": "root",
"Password": "root",
"ClusterList": [ "192.168.56.102:6667" ],
"PoolSize": 10
"PoolSize": 10,
"DataBaseName": "energy",
"OpenDebugMode": true
}
}

View File

@ -11,6 +11,11 @@ namespace JiShe.CollectBus.IoTDBProvider
/// </summary>
public class IoTDBOptions
{
/// <summary>
/// 数据库名称
/// </summary>
public string DataBaseName { get; set; }
/// <summary>
/// 集群列表
/// </summary>
@ -28,5 +33,10 @@ namespace JiShe.CollectBus.IoTDBProvider
/// 连接池大小
/// </summary>
public int PoolSize { get; set; } = 3;
/// <summary>
/// 是否开启调试模式,生产环境请关闭,因为底层的实现方式,可能会导致内存持续增长。
/// </summary>
public bool OpenDebugMode { get; set;}
}
}

View File

@ -12,14 +12,14 @@ namespace JiShe.CollectBus.IoTDBProvider
public static class DevicePathBuilder
{
/// <summary>
/// 构建设备路径
/// 构建设备路径,由于路径的层级约束规范不能是纯数字字符,所以需要做特殊处理。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="entity"></param>
/// <returns></returns>
public static string GetDeviceId<T>(T entity) where T : IoTEntity
{
return $"root.{entity.SystemName}.{entity.ProjectCode}.{entity.DeviceId}";
return $"root.{entity.SystemName.ToLower()}.`{entity.ProjectCode}`.`{entity.DeviceId}`";
}
@ -32,7 +32,7 @@ namespace JiShe.CollectBus.IoTDBProvider
public static string GetTableName<T>() where T : IoTEntity
{
var type = typeof(T);
return $"{type.Name}";
return $"{type.Name.ToLower()}";
}
}

View File

@ -32,10 +32,18 @@ namespace JiShe.CollectBus.IoTDBProvider
.SetNodeUrls(_options.ClusterList)
.SetUsername(_options.UserName)
.SetPassword(_options.Password)
.SetDatabase(_options.DataBaseName)
.SetFetchSize(_options.PoolSize)
.Build();
_sessionPool.Open(false).Wait();
if (_options.OpenDebugMode)
{
_sessionPool.OpenDebugMode(builder =>
{
builder.AddConsole();
});
}
_logger = logger;
}
@ -50,7 +58,11 @@ namespace JiShe.CollectBus.IoTDBProvider
var metadata = GetMetadata<T>();
var tablet = BuildTablet(new[] { entity }, metadata, buildTabletMode);
await _sessionPool.InsertAsync(tablet);
var result = await _sessionPool.InsertAsync(tablet);
if (result <=0)
{
_logger.LogWarning($"{typeof(T).Name}插入数据没有成功");
}
}
/// <summary>
@ -69,7 +81,11 @@ namespace JiShe.CollectBus.IoTDBProvider
foreach (var batch in batches)
{
var tablet = BuildTablet(batch, metadata, buildTabletMode);
await _sessionPool.InsertAsync(tablet);
var result = await _sessionPool.InsertAsync(tablet);
if (result <= 0)
{
_logger.LogWarning($"{typeof(T).Name} 批量插入数据第{batch}批次没有成功,共{batches}批次。");
}
}
}
@ -320,61 +336,6 @@ namespace JiShe.CollectBus.IoTDBProvider
var metadata = BuildDeviceMetadata(columns);
return metadata;
});
//return _metadataCache.GetOrAdd(typeof(T), type =>
//{
// var metadata = new DeviceMetadata();
// List<Tuple<string, ColumnCategory, TSDataType>> columns = new();
// foreach (var prop in type.GetProperties())
// {
// //标签列
// var attrTAG = prop.GetCustomAttribute<TAGColumnAttribute>();
// if (attrTAG != null)
// {
// columns.Add(Tuple.Create(prop.PropertyType.Name, ColumnCategory.TAG, GetDataTypeFromStr(prop.PropertyType.Name)));
// continue;
// }
// //属性列
// var attrATTRIBUTE = prop.GetCustomAttribute<ATTRIBUTEColumnAttribute>();
// if (attrATTRIBUTE != null)
// {
// columns.Add(Tuple.Create(prop.PropertyType.Name, ColumnCategory.ATTRIBUTE, GetDataTypeFromStr(prop.PropertyType.Name)));
// continue;
// }
// //数据列
// var attrFIELD = prop.GetCustomAttribute<FIELDColumnAttribute>();
// if (attrFIELD != null)
// {
// columns.Add(Tuple.Create(prop.PropertyType.Name, ColumnCategory.FIELD, GetDataTypeFromStr(prop.PropertyType.Name)));
// }
// }
// var columnCategories = EnumExtensions.ToEnumDictionary<ColumnCategory>();
// foreach (var item in columnCategories)
// {
// if (item.Value == ColumnCategory.TAG)
// {
// metadata.ColumnNames.AddRange(columns.Where(d => d.Item2 == ColumnCategory.FIELD).Select(d => d.Item1).ToList());
// metadata.ColumnCategories.AddRange(columns.Where(d => d.Item2 == ColumnCategory.TAG).Select(d => d.Item2).ToList());
// metadata.DataTypes.AddRange(columns.Where(d => d.Item2 == ColumnCategory.TAG).Select(d => d.Item3).ToList());
// }
// else if (item.Value == ColumnCategory.ATTRIBUTE)
// {
// metadata.ColumnNames.AddRange(columns.Where(d => d.Item2 == ColumnCategory.ATTRIBUTE).Select(d => d.Item1).ToList());
// metadata.ColumnCategories.AddRange(columns.Where(d => d.Item2 == ColumnCategory.ATTRIBUTE).Select(d => d.Item2).ToList());
// metadata.DataTypes.AddRange(columns.Where(d => d.Item2 == ColumnCategory.ATTRIBUTE).Select(d => d.Item3).ToList());
// }
// else if (item.Value == ColumnCategory.FIELD)
// {
// metadata.ColumnNames.AddRange(columns.Where(d => d.Item2 == ColumnCategory.FIELD).Select(d => d.Item1).ToList());
// metadata.ColumnCategories.AddRange(columns.Where(d => d.Item2 == ColumnCategory.FIELD).Select(d => d.Item2).ToList());
// metadata.DataTypes.AddRange(columns.Where(d => d.Item2 == ColumnCategory.FIELD).Select(d => d.Item3).ToList());
// }
// }
// return metadata;
//});
}
/// <summary>