更新代码
This commit is contained in:
parent
5772ce906d
commit
50639f6fcf
@ -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()
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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;}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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()}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user