From 529623a2324bf399d5256c7e35030f27724aefcc Mon Sep 17 00:00:00 2001 From: zenghongyao <873884283@qq.com> Date: Mon, 12 May 2025 14:02:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=9E=90=E6=89=80=E6=9C=89=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=BF=9D=E5=AD=98=E5=88=B0iotdb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminClient/AdminClientService.cs | 2 +- .../KafkaSubscribeExtensions.cs | 82 +++++++-- .../MongoDB/CollectBusMongoDbContext.cs | 2 +- .../MongoDB/CollectBusMongoDbModule.cs | 10 +- .../LogRecord/ILogRecordRepository.cs | 57 ++++++ .../LogRecord/LogRecordRepository.cs | 166 ++++++++++++++++++ .../ShardingStrategy/DayShardingStrategy.cs | 9 +- .../ShardingStrategy/HourShardingStrategy.cs | 58 ++++++ .../ShardingStrategy/IHourShardingStrategy.cs | 12 ++ .../AnalysisData/AFN_00H/AFN0_F1_Analysis.cs | 34 +++- .../AnalysisData/AFN_00H/AFN0_F2_Analysis.cs | 35 +++- .../AnalysisData/AFN_02H/AFN2_F1_Analysis.cs | 10 +- .../AnalysisData/AFN_02H/AFN2_F2_Analysis.cs | 7 +- .../AnalysisData/AFN_02H/AFN2_F3_Analysis.cs | 7 +- .../AnalysisData/AFN_09H/AFN9_F1_Analysis.cs | 39 +++- .../AnalysisData/AFN_09H/AFN9_F9_Analysis.cs | 36 +++- .../AFN_0AH/AFN10_F10_Analysis.cs | 42 +++-- .../AFN_0AH/AFN10_F66_Analysis.cs | 33 +++- .../AFN_0AH/AFN10_F68_Analysis.cs | 36 +++- .../AFN_0CH/AFN12_F129_Analysis.cs | 27 ++- .../AFN_0CH/AFN12_F130_Analysis.cs | 24 ++- .../AFN_0CH/AFN12_F131_Analysis.cs | 24 ++- .../AFN_0CH/AFN12_F132_Analysis.cs | 24 ++- .../AFN_0CH/AFN12_F145_Analysis.cs | 21 ++- .../AFN_0CH/AFN12_F149_Analysis.cs | 2 +- .../AFN_0CH/AFN12_F188_Analysis.cs | 20 ++- .../AFN_0CH/AFN12_F25_Analysis.cs | 26 ++- .../AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs | 20 ++- .../AFN_0CH/AFN12_F33_Analysis.cs | 30 +++- .../AFN_0CH/AFN12_F49_Analysis.cs | 25 ++- .../AFN_0DH/AFN13_F100_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F101_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F102_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F103_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F104_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F105_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F106_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F107_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F108_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F11_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F145_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F146_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F147_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F148_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F161_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F162_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F163_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F164_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F165_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F166_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F167_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F168_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F177_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F178_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F179_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F180_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F181_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F182_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F183_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F184_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F189_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F190_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F193_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F195_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F19_Analysis.cs | 2 +- .../AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs | 2 +- .../AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F81_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F82_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F83_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F84_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F85_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F86_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F87_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F88_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F89_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F90_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F91_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F92_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F93_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F94_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F95_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F97_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F98_Analysis.cs | 2 +- .../AFN_0DH/AFN13_F99_Analysis.cs | 2 +- .../AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs | 2 +- .../AFN_10H/AFN16_F101_Analysis.cs | 26 ++- .../AFN_10H/AFN16_F97_Analysis.cs | 5 +- .../AFN_10H/AFN16_F98_Analysis.cs | 34 ++-- .../AnalysisData/DataStorage.cs | 138 ++++++++++++--- .../CollectBusProtocolT37612012Module.cs | 2 + .../CollectBusApplicationModule.cs | 27 ++- .../DataChannels/DataChannelManage.cs | 12 ++ .../DataChannels/DataChannelManageService.cs | 141 ++++++++++++++- .../Workers/CreateToBeIssueTaskWorker.cs | 78 ++++---- .../DataDetectionFifteenMinuteWorker.cs | 68 +++---- .../Workers/EpiCollectWorker.cs | 68 +++---- .../Workers/SubscriberFifteenMinuteWorker.cs | 86 ++++----- .../Workers/SubscriberFiveMinuteWorker.cs | 76 ++++---- .../Workers/SubscriberOneMinuteWorker.cs | 76 ++++---- .../IotSystems/LogRecord/LogRecords.cs | 99 +++++++++++ .../JiShe.CollectBus.Domain.csproj | 4 +- .../Protocol3761/Dto/AFN10_F66_AnalysisDto.cs | 4 - .../Protocol3761/Dto/UnitDataAnalysis.cs | 4 +- .../Consts/T37612012PacketItemCodeConst.cs | 4 - .../Enums/TableTimeStrategyEnum.cs | 36 ++++ .../Extensions/DateTimeExtensions.cs | 26 ++- .../CollectBusHostModule.Configure.cs | 2 +- .../Pages/Monitor.cshtml | 1 + web/JiShe.CollectBus.Host/appsettings.json | 6 +- 110 files changed, 1545 insertions(+), 510 deletions(-) create mode 100644 modules/JiShe.CollectBus.MongoDB/Repository/LogRecord/ILogRecordRepository.cs create mode 100644 modules/JiShe.CollectBus.MongoDB/Repository/LogRecord/LogRecordRepository.cs create mode 100644 modules/JiShe.CollectBus.MongoDB/ShardingStrategy/HourShardingStrategy.cs create mode 100644 modules/JiShe.CollectBus.MongoDB/ShardingStrategy/IHourShardingStrategy.cs create mode 100644 services/JiShe.CollectBus.Domain/IotSystems/LogRecord/LogRecords.cs create mode 100644 shared/JiShe.CollectBus.Common/Enums/TableTimeStrategyEnum.cs diff --git a/modules/JiShe.CollectBus.Kafka/AdminClient/AdminClientService.cs b/modules/JiShe.CollectBus.Kafka/AdminClient/AdminClientService.cs index 0287f40..bef89ad 100644 --- a/modules/JiShe.CollectBus.Kafka/AdminClient/AdminClientService.cs +++ b/modules/JiShe.CollectBus.Kafka/AdminClient/AdminClientService.cs @@ -157,7 +157,7 @@ public class AdminClientService : IAdminClientService, IDisposable, ISingletonDe adminClientConfig.SecurityProtocol = SecurityProtocol.SaslPlaintext; adminClientConfig.SaslMechanism = SaslMechanism.Plain; adminClientConfig.SaslUsername = _kafkaOptionConfig.SaslUserName; - adminClientConfig.SaslPassword = _kafkaOptionConfig.SaslUserName; + adminClientConfig.SaslPassword = _kafkaOptionConfig.SaslPassword; } return new AdminClientBuilder(adminClientConfig).Build(); } diff --git a/modules/JiShe.CollectBus.Kafka/KafkaSubscribeExtensions.cs b/modules/JiShe.CollectBus.Kafka/KafkaSubscribeExtensions.cs index 96237bb..028762f 100644 --- a/modules/JiShe.CollectBus.Kafka/KafkaSubscribeExtensions.cs +++ b/modules/JiShe.CollectBus.Kafka/KafkaSubscribeExtensions.cs @@ -21,6 +21,10 @@ namespace JiShe.CollectBus.Kafka public static class KafkaSubscribeExtensions { + private static long _threadCount = 0; + private static long _topicSubscribeCount = 0; + private static long _threadStartCount = 0; + public static void UseInitKafkaTopic(this IServiceProvider provider) { //初始化主题信息 @@ -46,12 +50,12 @@ namespace JiShe.CollectBus.Kafka lifetime.ApplicationStarted.Register(() => { var logger = provider.GetRequiredService>(); - var threadCount = 0; - var topicCount = 0; + //var threadCount = 0; + //var topicCount = 0; var assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location); if (string.IsNullOrWhiteSpace(assemblyPath)) { - logger.LogInformation($"kafka订阅未能找到程序路径"); + logger.LogWarning($"kafka订阅未能找到程序路径"); return; } var dllFiles = Directory.GetFiles(assemblyPath, "*.dll"); @@ -69,21 +73,35 @@ namespace JiShe.CollectBus.Kafka if (subscribeTypes.Count == 0) continue; - foreach (var subscribeType in subscribeTypes) + // 并行处理 + Parallel.ForEach(subscribeTypes, subscribeType => { var subscribes = provider.GetServices(subscribeType).ToList(); - subscribes.ForEach(subscribe => + Parallel.ForEach(subscribes,subscribe => { if (subscribe != null) { Tuple tuple = BuildKafkaSubscribe(subscribe, provider, logger, kafkaOptions.Value); - threadCount += tuple.Item1; - topicCount += tuple.Item2; + //threadCount += tuple.Item1; + //topicCount += tuple.Item2; } }); - } + }); + //foreach (var subscribeType in subscribeTypes) + //{ + // var subscribes = provider.GetServices(subscribeType).ToList(); + // subscribes.ForEach(subscribe => + // { + // if (subscribe != null) + // { + // Tuple tuple = BuildKafkaSubscribe(subscribe, provider, logger, kafkaOptions.Value); + // threadCount += tuple.Item1; + // topicCount += tuple.Item2; + // } + // }); + //} } - logger.LogInformation($"kafka订阅主题:{topicCount}数,共启动:{threadCount}线程"); + logger.LogWarning($"kafka订阅主题:{_topicSubscribeCount}数,共启动:{_threadCount}线程"); }); } @@ -135,26 +153,50 @@ namespace JiShe.CollectBus.Kafka //var configuration = provider.GetRequiredService(); int threadCount = 0; - foreach (var sub in subscribedMethods) + Parallel.ForEach(subscribedMethods, sub => { - //int partitionCount = sub.Attribute!.TaskCount==-1?3: sub.Attribute!.TaskCount;// kafkaOptionConfig.NumPartitions; + Interlocked.Increment(ref _topicSubscribeCount); + int partitionCount = sub.Attribute!.TaskCount == -1 ? 3 : sub.Attribute!.TaskCount;// kafkaOptionConfig.NumPartitions; var adminClientService = provider.GetRequiredService(); int topicCount = adminClientService.GetTopicPartitionsNum(sub.Attribute!.Topic); - int partitionCount = sub.Attribute!.TaskCount == -1 ? topicCount : sub.Attribute!.TaskCount;// kafkaOptionConfig.NumPartitions; + //int partitionCount = sub.Attribute!.TaskCount == -1 ? topicCount : sub.Attribute!.TaskCount;// kafkaOptionConfig.NumPartitions; partitionCount = partitionCount > topicCount ? topicCount : partitionCount; //partitionCount = sub.Attribute!.TaskCount == -1 ? adminClientService.GetTopicPartitionsNum(sub.Attribute!.Topic) : sub.Attribute!.TaskCount; if (partitionCount <= 0) partitionCount = 1; - for (int i = 0; i < partitionCount; i++) + Parallel.For(0,partitionCount, async (partition) => { - //if (sub.Attribute!.Topic == ProtocolConst.SubscriberLoginReceivedEventName) - Task.Run(() => StartConsumerAsync(provider, sub.Attribute!, sub.Method, subscribe, logger)); - threadCount++; - } - } + Interlocked.Increment(ref _threadCount); + //Task.Run(() => StartConsumerAsync(provider, sub.Attribute!, sub.Method, subscribe, logger)); + //threadCount++; + await StartConsumerAsync(provider, sub.Attribute!, sub.Method, subscribe, logger); + }); + + }); + + //foreach (var sub in subscribedMethods) + //{ + // //int partitionCount = sub.Attribute!.TaskCount==-1?3: sub.Attribute!.TaskCount;// kafkaOptionConfig.NumPartitions; + // var adminClientService = provider.GetRequiredService(); + + // int topicCount = adminClientService.GetTopicPartitionsNum(sub.Attribute!.Topic); + + // int partitionCount = sub.Attribute!.TaskCount == -1 ? topicCount : sub.Attribute!.TaskCount;// kafkaOptionConfig.NumPartitions; + + // partitionCount = partitionCount > topicCount ? topicCount : partitionCount; + // //partitionCount = sub.Attribute!.TaskCount == -1 ? adminClientService.GetTopicPartitionsNum(sub.Attribute!.Topic) : sub.Attribute!.TaskCount; + // if (partitionCount <= 0) + // partitionCount = 1; + // for (int i = 0; i < partitionCount; i++) + // { + // //if (sub.Attribute!.Topic == ProtocolConst.SubscriberLoginReceivedEventName) + // Task.Run(() => StartConsumerAsync(provider, sub.Attribute!, sub.Method, subscribe, logger)); + // threadCount++; + // } + //} return Tuple.Create(threadCount, subscribedMethods.Length); } @@ -167,6 +209,8 @@ namespace JiShe.CollectBus.Kafka if (attr.EnableBatch) { + Interlocked.Increment(ref _threadStartCount); + logger.LogInformation($"kafka开启线程消费:{_threadStartCount}"); await consumerService.SubscribeBatchAsync(attr.Topic, async (message) => { try @@ -187,6 +231,8 @@ namespace JiShe.CollectBus.Kafka } else { + Interlocked.Increment(ref _threadStartCount); + logger.LogInformation($"kafka开启线程消费:{_threadStartCount}"); await consumerService.SubscribeAsync(attr.Topic, async (message) => { try diff --git a/modules/JiShe.CollectBus.MongoDB/MongoDB/CollectBusMongoDbContext.cs b/modules/JiShe.CollectBus.MongoDB/MongoDB/CollectBusMongoDbContext.cs index ebc5ad1..c0ddd77 100644 --- a/modules/JiShe.CollectBus.MongoDB/MongoDB/CollectBusMongoDbContext.cs +++ b/modules/JiShe.CollectBus.MongoDB/MongoDB/CollectBusMongoDbContext.cs @@ -13,6 +13,7 @@ using JiShe.CollectBus.IotSystems.MessageIssueds; using Volo.Abp.Data; using Volo.Abp.MongoDB; using Volo.Abp.MultiTenancy; +using JiShe.CollectBus.IotSystems.LogRecord; namespace JiShe.CollectBus.MongoDB; @@ -32,7 +33,6 @@ public class CollectBusMongoDbContext : AbpMongoDbContext, ICollectBusMongoDbCon public IMongoCollection MessageIssueds => Collection(); - protected override void CreateModel(IMongoModelBuilder modelBuilder) { diff --git a/modules/JiShe.CollectBus.MongoDB/MongoDB/CollectBusMongoDbModule.cs b/modules/JiShe.CollectBus.MongoDB/MongoDB/CollectBusMongoDbModule.cs index f427d19..89fd079 100644 --- a/modules/JiShe.CollectBus.MongoDB/MongoDB/CollectBusMongoDbModule.cs +++ b/modules/JiShe.CollectBus.MongoDB/MongoDB/CollectBusMongoDbModule.cs @@ -1,5 +1,7 @@ -using JiShe.CollectBus.IotSystems.MeterReadingRecords; +using JiShe.CollectBus.IotSystems.LogRecord; +using JiShe.CollectBus.IotSystems.MeterReadingRecords; using JiShe.CollectBus.Repository; +using JiShe.CollectBus.Repository.LogRecord; using JiShe.CollectBus.Repository.MeterReadingRecord; using JiShe.CollectBus.ShardingStrategy; using Microsoft.Extensions.DependencyInjection; @@ -35,10 +37,14 @@ public class CollectBusMongoDbModule : AbpModule typeof(IShardingStrategy<>), typeof(DayShardingStrategy<>)); + + context.Services.AddTransient(typeof(HourShardingStrategy<>)); + //// 分表策略仓储 替换默认仓储 //options.AddRepository(); - }); + options.AddRepository(); + }); context.Services.AddAlwaysDisableUnitOfWorkTransaction(); Configure(options => { diff --git a/modules/JiShe.CollectBus.MongoDB/Repository/LogRecord/ILogRecordRepository.cs b/modules/JiShe.CollectBus.MongoDB/Repository/LogRecord/ILogRecordRepository.cs new file mode 100644 index 0000000..8d1c203 --- /dev/null +++ b/modules/JiShe.CollectBus.MongoDB/Repository/LogRecord/ILogRecordRepository.cs @@ -0,0 +1,57 @@ +using JiShe.CollectBus.IotSystems.LogRecord; +using JiShe.CollectBus.IotSystems.MeterReadingRecords; +using MongoDB.Driver; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; + +namespace JiShe.CollectBus.Repository.LogRecord +{ + public interface ILogRecordRepository : IRepository + { + /// + /// 批量插入 + /// + /// + /// + /// + Task InsertManyAsync(List entities, + DateTime? dateTime); + + /// + /// 单个插入 + /// + /// + /// + /// + Task InsertAsync(LogRecords entity, DateTime? dateTime); + + /// + /// 单条更新 + /// + /// 过滤条件,示例:Builders.Filter.Eq(x => x.Id, filter.Id) + /// 包含待更新的内容,示例:Builders.Update.Set(x => x.SendHexMessage, SendHexMessage).Set(x => x.MessageId, MessageId) + /// 数据实体,用于获取对应的分片库 + /// + Task UpdateOneAsync(FilterDefinition filter, UpdateDefinition update, LogRecords entity); + + /// + /// 单个获取 + /// + /// + /// + /// + Task FirOrDefaultAsync(LogRecords entity, DateTime dateTime); + + /// + /// 多集合数据查询 + /// + /// + /// + /// + Task> ParallelQueryAsync(DateTime startTime, DateTime endTime); + } +} diff --git a/modules/JiShe.CollectBus.MongoDB/Repository/LogRecord/LogRecordRepository.cs b/modules/JiShe.CollectBus.MongoDB/Repository/LogRecord/LogRecordRepository.cs new file mode 100644 index 0000000..415ad06 --- /dev/null +++ b/modules/JiShe.CollectBus.MongoDB/Repository/LogRecord/LogRecordRepository.cs @@ -0,0 +1,166 @@ +using JiShe.CollectBus.IotSystems.LogRecord; +using JiShe.CollectBus.IotSystems.MeterReadingRecords; +using JiShe.CollectBus.MongoDB; +using JiShe.CollectBus.Repository.MeterReadingRecord; +using JiShe.CollectBus.ShardingStrategy; +using MongoDB.Driver; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories.MongoDB; +using Volo.Abp.MongoDB; + +namespace JiShe.CollectBus.Repository.LogRecord +{ + public class LogRecordRepository : MongoDbRepository, ILogRecordRepository + { + + private readonly HourShardingStrategy _hourShardingStrategy; + private readonly IMongoDbContextProvider _dbContextProvider; + + public LogRecordRepository( + IMongoDbContextProvider dbContextProvider, + HourShardingStrategy hourShardingStrategy + ) + : base(dbContextProvider) + { + _dbContextProvider = dbContextProvider; + _hourShardingStrategy = hourShardingStrategy; + } + + /// + /// 批量插入 + /// + /// + /// + /// + public override async Task> InsertManyAsync(IEnumerable entities, bool autoSave = false, CancellationToken cancellationToken = default(CancellationToken)) + { + var collection = await GetShardedCollection(DateTime.Now); + await collection.InsertManyAsync(entities); + + return entities; + } + + /// + /// 批量插入 + /// + /// + /// + /// + public async Task InsertManyAsync(List entities, DateTime? dateTime) + { + var collection = await GetShardedCollection(dateTime); + await collection.InsertManyAsync(entities); + } + + + /// + /// 单条插入 + /// + /// + /// + /// + public override async Task InsertAsync(LogRecords entity, bool autoSave = false, CancellationToken cancellationToken = default(CancellationToken)) + { + var collection = await GetShardedCollection(DateTime.Now); + await collection.InsertOneAsync(entity); + return entity; + } + + + /// + /// 单条插入 + /// + /// + /// + /// + public async Task InsertAsync(LogRecords entity, DateTime? dateTime) + { + var collection = await GetShardedCollection(dateTime); + await collection.InsertOneAsync(entity); + return entity; + } + + /// + /// 单条更新 + /// + /// 过滤条件,示例:Builders.Filter.Eq(x => x.Id, filter.Id) + /// 包含待更新的内容,示例:Builders.Update.Set(x => x.SendHexMessage, SendHexMessage).Set(x => x.MessageId, MessageId) + /// 数据实体,用于获取对应的分片库 + /// + public async Task UpdateOneAsync(FilterDefinition filter, UpdateDefinition update, LogRecords entity) + { + var collection = await GetShardedCollection(entity.CreationTime); + + await collection.UpdateOneAsync(filter, update); + return entity; + } + + + /// + /// 单个获取 + /// + /// + /// + /// + /// + public async Task FirOrDefaultAsync(LogRecords entity, DateTime dateTime) + { + var collection = await GetShardedCollection(dateTime); + var query = await collection.FindAsync(d => d.CreationTime == dateTime && d.AFN == entity.AFN && d.Fn == entity.Fn && d.Code == entity.Code); + return await query.FirstOrDefaultAsync(); + } + + /// + /// 多集合数据查询 + /// + /// + /// + /// + public async Task> ParallelQueryAsync(DateTime startTime, DateTime endTime) + { + var collectionNames = _hourShardingStrategy.GetQueryCollectionNames(startTime, endTime); + + var dbContext = await DbContextProvider.GetDbContextAsync(); + + var tasks = collectionNames.Select(async name => + { + var collection = dbContext.Database.GetCollection(name); + var filter = Builders.Filter.And( + Builders.Filter.Gte(x => x.CreationTime, startTime), + Builders.Filter.Lte(x => x.CreationTime, endTime) + ); + return await collection.Find(filter).ToListAsync(); + }); + + var results = await Task.WhenAll(tasks); + return results.SelectMany(r => r).ToList(); + } + + /// + /// 获得分片集合 + /// + /// + private async Task> GetShardedCollection(DateTime? dateTime) + { + var dbContext = await DbContextProvider.GetDbContextAsync(); + string collectionName = string.Empty; + + if (dateTime != null) + { + collectionName = _hourShardingStrategy.GetCollectionName(dateTime.Value); + } + else + { + collectionName = _hourShardingStrategy.GetCurrentCollectionName(); + } + + return dbContext.Database.GetCollection(collectionName); + } + } +} diff --git a/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/DayShardingStrategy.cs b/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/DayShardingStrategy.cs index f26136d..0c721a5 100644 --- a/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/DayShardingStrategy.cs +++ b/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/DayShardingStrategy.cs @@ -1,4 +1,5 @@ -using JiShe.CollectBus.Common.Extensions; +using JiShe.CollectBus.Common.Enums; +using JiShe.CollectBus.Common.Extensions; using System; using System.Collections.Generic; using System.Linq; @@ -22,7 +23,7 @@ namespace JiShe.CollectBus.ShardingStrategy public string GetCollectionName(DateTime dateTime) { var baseName = typeof(TEntity).Name; - return $"{baseName}_{dateTime.GetDataTableShardingStrategy()}"; + return $"{baseName}_{dateTime.GetDataTableShardingStrategy(TableTimeStrategyEnum.DayShardingStrategy)}"; } /// @@ -32,7 +33,7 @@ namespace JiShe.CollectBus.ShardingStrategy public string GetCurrentCollectionName() { var baseName = typeof(TEntity).Name; - return $"{baseName}_{DateTime.Now.GetDataTableShardingStrategy()}"; + return $"{baseName}_{DateTime.Now.GetDataTableShardingStrategy(TableTimeStrategyEnum.DayShardingStrategy)}"; } /// @@ -50,7 +51,7 @@ namespace JiShe.CollectBus.ShardingStrategy while (current <= end) { - months.Add($"{baseName}_{current.GetDataTableShardingStrategy()}"); + months.Add($"{baseName}_{current.GetDataTableShardingStrategy(TableTimeStrategyEnum.DayShardingStrategy)}"); current = current.AddMonths(1); } diff --git a/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/HourShardingStrategy.cs b/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/HourShardingStrategy.cs new file mode 100644 index 0000000..20f65de --- /dev/null +++ b/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/HourShardingStrategy.cs @@ -0,0 +1,58 @@ +using JiShe.CollectBus.Common.Enums; +using JiShe.CollectBus.Common.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace JiShe.CollectBus.ShardingStrategy +{ + /// + /// 按小时分表 + /// + /// + public class HourShardingStrategy + { + /// + /// 获取指定时间对应的集合名 + /// + /// + /// + public string GetCollectionName(DateTime dateTime) + { + var baseName = typeof(TEntity).Name; + return $"{baseName}_{dateTime.GetDataTableShardingStrategy(TableTimeStrategyEnum.HourShardingStrategy)}"; + } + + /// + /// 获取当前时间对应的集合名 + /// + /// + public string GetCurrentCollectionName() + { + var baseName = typeof(TEntity).Name; + return $"{baseName}_{DateTime.Now.GetDataTableShardingStrategy(TableTimeStrategyEnum.HourShardingStrategy)}"; + } + + /// + /// 用于查询时确定目标集合 + /// + /// + /// + /// + public IEnumerable GetQueryCollectionNames(DateTime? startTime, DateTime? endTime) + { + var list = new List(); + var current = startTime ?? DateTime.MinValue; + var end = endTime ?? DateTime.MaxValue; + var baseName = typeof(TEntity).Name; + + while (current <= end) + { + list.Add($"{baseName}_{current.GetDataTableShardingStrategy(TableTimeStrategyEnum.HourShardingStrategy)}"); + current = current.AddHours(1); + } + + return list.Distinct(); + } + } +} diff --git a/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/IHourShardingStrategy.cs b/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/IHourShardingStrategy.cs new file mode 100644 index 0000000..ad0654c --- /dev/null +++ b/modules/JiShe.CollectBus.MongoDB/ShardingStrategy/IHourShardingStrategy.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JiShe.CollectBus.ShardingStrategy +{ + public interface IHourShardingStrategy : IShardingStrategy + { + } +} diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F1_Analysis.cs index 73c8e5e..fdeb25f 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F1_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F1_Analysis.cs @@ -1,4 +1,6 @@ using JiShe.CollectBus.Common.Enums; +using JiShe.CollectBus.IotSystems.Ammeters; +using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol3761; @@ -12,39 +14,57 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H public class AFN0_F1_Analysis: IAnalysisStrategy { private readonly ILogger _logger; + private readonly DataStorage _dataStorage; - public AFN0_F1_Analysis(ILogger logger) + public AFN0_F1_Analysis(ILogger logger, DataStorage dataStorage) { _logger = logger; + _dataStorage= dataStorage; } - public Task ExecuteAsync(TB3761 input, Action? result = null) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input.A.Code); - UnitDataAnalysis dto = new UnitDataAnalysis + var data = new AnalysisBaseDto() + { + FiledDesc = "全部确认", + DataValue = true + }; + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(MeterTypeEnum.Focus.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.FocusId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.Address; + data.DeviceType = MeterTypeEnum.Focus; + } + UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data = true, - HexMessage = input.BaseHexMessage.HexMessageString, + Data = data, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, TimeDensity = -1 }; result?.Invoke(dto); - return Task.FromResult(true); + await _dataStorage.SaveDataToIotDbAsync(dto); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"00_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); } - return Task.FromResult(false); + return await Task.FromResult(false); } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F2_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F2_Analysis.cs index 27fd11f..09c65c2 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F2_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_00H/AFN0_F2_Analysis.cs @@ -1,4 +1,6 @@ using JiShe.CollectBus.Common.Enums; +using JiShe.CollectBus.IotSystems.Ammeters; +using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol3761; @@ -12,25 +14,41 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H public class AFN0_F2_Analysis : IAnalysisStrategy { private readonly ILogger _logger; - - public AFN0_F2_Analysis(ILogger logger) + private readonly DataStorage _dataStorage; + public AFN0_F2_Analysis(ILogger logger, DataStorage dataStorage) { _logger = logger; + _dataStorage = dataStorage; } - public Task ExecuteAsync(TB3761 input, Action? result = null) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input.A.Code); - UnitDataAnalysis dto = new UnitDataAnalysis + var data = new AnalysisBaseDto() + { + FiledDesc = "全部否认", + DataValue = false + }; + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(MeterTypeEnum.Focus.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.FocusId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.Address; + data.DeviceType = MeterTypeEnum.Focus; + } + UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data = false, - HexMessage = input.BaseHexMessage.HexMessageString, + Data = data, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime =input.ReceivedTime, DensityUnit = DensityUnit.None, @@ -40,13 +58,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H #if DEBUG _logger.LogWarning($"全部否认:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString}"); #endif - return Task.FromResult(true); + await _dataStorage.SaveDataToIotDbAsync(dto); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"00_2解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); - return Task.FromResult(false); } + return await Task.FromResult(false); } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F1_Analysis.cs index e7e6655..6a83dbc 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F1_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F1_Analysis.cs @@ -3,16 +3,8 @@ using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; -using JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using static FreeSql.Internal.GlobalFilter; -using static System.Runtime.InteropServices.JavaScript.JSType; namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H { @@ -58,7 +50,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F2_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F2_Analysis.cs index fe3efcc..8992d82 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F2_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F2_Analysis.cs @@ -5,11 +5,6 @@ using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H { @@ -55,7 +50,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F3_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F3_Analysis.cs index ce982b3..4015131 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F3_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_02H/AFN2_F3_Analysis.cs @@ -5,11 +5,6 @@ using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H { @@ -55,7 +50,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F1_Analysis.cs index 19521aa..2580ec9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F1_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F1_Analysis.cs @@ -1,9 +1,11 @@ using System.Text; using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; @@ -16,41 +18,60 @@ namespace JiShe.CollectBus.Protocol.AnalysisData.AFN_09H { private readonly ILogger _logger; - public AFN9_F1_Analysis(ILogger logger) + private readonly DataStorage _dataStorage; + + public AFN9_F1_Analysis(ILogger logger, DataStorage dataStorage) { _logger = logger; + _dataStorage = dataStorage; } - public Task ExecuteAsync(TB3761 input, Action? result = null) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); - var data = AnalysisDataUnit(input.UnitData.HexMessageList); - data.AreaCode = input.A.Code?.Substring(0, 4); - data.Address = input.A.Code?.Substring(4, 5); - UnitDataAnalysis dto = new UnitDataAnalysis + var version = AnalysisDataUnit(input.UnitData.HexMessageList); + version.AreaCode = input.A.Code?.Substring(0, 4); + version.Address = input.A.Code?.Substring(4, 5); + var data = new AnalysisBaseDto() + { + FiledDesc = "终端版本信息", + DataValue = version + }; + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(MeterTypeEnum.Focus.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.FocusId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.Address; + data.DeviceType = MeterTypeEnum.Focus; + } + UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, TimeDensity = -1 }; result?.Invoke(dto); - return Task.FromResult(true); + await _dataStorage.SaveDataToIotDbAsync(dto); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"09_1解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); } - return Task.FromResult(false); + return await Task.FromResult(false); } private AFN9_F1_AnalysisDto AnalysisDataUnit(List hexMessageList) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F9_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F9_Analysis.cs index 7de40a1..1df4a32 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F9_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_09H/AFN9_F9_Analysis.cs @@ -1,6 +1,8 @@ using System.Text; using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; +using JiShe.CollectBus.IotSystems.Ammeters; +using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol3761; @@ -14,39 +16,57 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_09H public class AFN9_F9_Analysis : IAnalysisStrategy { private readonly ILogger _logger; - - public AFN9_F9_Analysis(ILogger logger) + private readonly DataStorage _dataStorage; + public AFN9_F9_Analysis(ILogger logger, DataStorage dataStorage) { _logger = logger; + _dataStorage = dataStorage; } - public Task ExecuteAsync(TB3761 input, Action? result = null) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); - UnitDataAnalysis dto = new UnitDataAnalysis + var data = new AnalysisBaseDto() + { + FiledDesc = "远程通信模块版本信息", + DataValue = Encoding.ASCII.GetString(string.Join("", input.UnitData.HexMessageList.Skip(30).Take(20).ToList()).HexToByte()).Replace("\0", "") + }; + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(MeterTypeEnum.Focus.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.FocusId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.Address; + data.DeviceType = MeterTypeEnum.Focus; + } + UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data = Encoding.ASCII.GetString(string.Join("", input.UnitData.HexMessageList.Skip(30).Take(20).ToList()).HexToByte()).Replace("\0", ""), //SIM卡 - HexMessage = input.BaseHexMessage.HexMessageString, + Data = data, //SIM卡 + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, TimeDensity = -1 }; result?.Invoke(dto); - return Task.FromResult(true); + await _dataStorage.SaveDataToIotDbAsync(dto); + + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"00_1解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); } - return Task.FromResult(false); + return await Task.FromResult(false); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F10_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F10_Analysis.cs index 7df7b1b..0e66af9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F10_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F10_Analysis.cs @@ -1,5 +1,6 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; @@ -15,42 +16,61 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH { private readonly ILogger _logger; - public AFN10_F10_Analysis(ILogger logger) + private readonly DataStorage _dataStorage; + public AFN10_F10_Analysis(ILogger logger, DataStorage dataStorage) { _logger = logger; + _dataStorage = dataStorage; } - public Task ExecuteAsync(TB3761 input, Action? result = null) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); Tuple> tuple = AFN10F10EntityAnalysis(input.UnitData.HexMessageList); - UnitDataAnalysis dto = new UnitDataAnalysis + + var data = new AnalysisBaseDto() + { + FiledDesc = "终端电能表/交流采样装置配置参数", + DataValue = new AFN10_F10_AnalysisDto() + { + AFN10F10Entitys = tuple.Item2, + ConfigNum = tuple.Item1 + } + }; + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(MeterTypeEnum.Focus.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.FocusId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.Address; + data.DeviceType = MeterTypeEnum.Focus; + } + UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data = new AFN10_F10_AnalysisDto() - { - AFN10F10Entitys = tuple.Item2, - ConfigNum = tuple.Item1 - }, - HexMessage = input.BaseHexMessage.HexMessageString, + Data = data, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, TimeDensity = -1 }; result?.Invoke(dto); - return Task.FromResult(true); + await _dataStorage.SaveDataToIotDbAsync(dto); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0A_10解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); } - return Task.FromResult(false); + return await Task.FromResult(false); } public Tuple> AFN10F10EntityAnalysis(List hexMessageList) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F66_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F66_Analysis.cs index b23abef..2a01edc 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F66_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F66_Analysis.cs @@ -1,11 +1,13 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; +using System; namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH { @@ -16,11 +18,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN10_F66_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN10_F66_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; - _analysisStrategyContext= analysisStrategyContext; + _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } public async Task ExecuteAsync(TB3761 input, Action? result = null) @@ -29,22 +32,38 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH { ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); - var data = await GenerateFinalResult(input.UnitData.HexMessageList); - data.Pn = input.DA.Pn; - UnitDataAnalysis dto = new UnitDataAnalysis + + var data = new AnalysisBaseDto() + { + FiledDesc = "终端电能表/交流采样装置配置参数", + DataValue = await GenerateFinalResult(input.UnitData.HexMessageList) + }; + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(MeterTypeEnum.Focus.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.FocusId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.Address; + data.DeviceType = MeterTypeEnum.Focus; + } + UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, TimeDensity = -1 }; result?.Invoke(dto); + await _dataStorage.SaveDataToIotDbAsync(dto); + return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F68_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F68_Analysis.cs index 254ebc6..e69f8e3 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F68_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0AH/AFN10_F68_Analysis.cs @@ -1,4 +1,6 @@ using JiShe.CollectBus.Common.Enums; +using JiShe.CollectBus.IotSystems.Ammeters; +using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol3761; @@ -12,39 +14,57 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH public class AFN10_F68_Analysis : IAnalysisStrategy { private readonly ILogger _logger; - - public AFN10_F68_Analysis(ILogger logger) + private readonly DataStorage _dataStorage; + public AFN10_F68_Analysis(ILogger logger, DataStorage dataStorage) { _logger = logger; + _dataStorage = dataStorage; } - public Task ExecuteAsync(TB3761 input, Action? result = null) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); - UnitDataAnalysis dto = new UnitDataAnalysis + var data = new AnalysisBaseDto() + { + FiledDesc = "终端电能表/交流采样装置配置参数", + DataValue = input.UnitData.HexMessageList[4].Equals("55") + }; + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(MeterTypeEnum.Focus.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.FocusId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.Address; + data.DeviceType = MeterTypeEnum.Focus; + } + UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data = input.UnitData.HexMessageList[4].Equals("55"), - HexMessage = input.BaseHexMessage.HexMessageString, + Data = data, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, TimeDensity = -1 }; result?.Invoke(dto); - return Task.FromResult(true); + await _dataStorage.SaveDataToIotDbAsync(dto); + + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"0A_68解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); } - return Task.FromResult(false); + return await Task.FromResult(false); } } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F129_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F129_Analysis.cs index a7538ca..f4e9fa6 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F129_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F129_Analysis.cs @@ -1,12 +1,14 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.IoTDB.Interface; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; +using static System.Runtime.InteropServices.JavaScript.JSType; namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH { @@ -17,13 +19,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - private readonly IIoTDbProvider _dbProvider; - - public AFN12_F129_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, IIoTDbProvider dbProvider) + private readonly DataStorage _dataStorage; + public AFN12_F129_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; - _dbProvider= dbProvider; + _dataStorage = dataStorage; } public async Task ExecuteAsync(TB3761 input, Action? result = null) @@ -41,7 +42,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH Pn = input.DA.Pn, MSA = input.A.A3.D1_D7, PSEQ = input.SEQ.PSEQ, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, @@ -49,8 +50,24 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH }; List datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List> list = GenerateFinalResult(2, datas, "正向有功电能示值", input.AFN_FC.AFN, input.DT.Fn); + if (list.Count > 0) + { + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(list[0].DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + list.ForEach(item => + { + item.ProjectId = ammeterInfo.ProjectID; + item.DeviceId = ammeterInfo.MeterId; + item.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + item.DeviceAddress = ammeterInfo.AmmerterAddress; + }); + } + } unitDataAnalysis.Data= list; result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F130_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F130_Analysis.cs index 59ae0fc..ed4e4d0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F130_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F130_Analysis.cs @@ -1,5 +1,6 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Helpers; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; @@ -17,11 +18,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F130_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F130_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } public async Task ExecuteAsync(TB3761 input, Action? result = null) @@ -32,6 +34,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); List datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List> list = GenerateFinalResult(2, datas, "正向无功电能示值", input.AFN_FC.AFN, input.DT.Fn); + if (list.Count > 0) + { + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(list[0].DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + list.ForEach(item => + { + item.ProjectId = ammeterInfo.ProjectID; + item.DeviceId = ammeterInfo.MeterId; + item.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + item.DeviceAddress = ammeterInfo.AmmerterAddress; + }); + } + } UnitDataAnalysis>> unitDataAnalysis = new UnitDataAnalysis>> { Code = input.A.Code!, @@ -39,13 +56,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH Fn = input.DT.Fn, Pn = input.DA.Pn, Data = list, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F131_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F131_Analysis.cs index 9b57ea1..2fc30e0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F131_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F131_Analysis.cs @@ -1,5 +1,6 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Helpers; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; @@ -18,11 +19,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F131_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F131_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } public async Task ExecuteAsync(TB3761 input, Action? result = null) @@ -33,6 +35,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); List datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List> list = GenerateFinalResult(2, datas, "反向有功总电能示值", input.AFN_FC.AFN, input.DT.Fn); + if (list.Count > 0) + { + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(list[0].DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + list.ForEach(item => + { + item.ProjectId = ammeterInfo.ProjectID; + item.DeviceId = ammeterInfo.MeterId; + item.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + item.DeviceAddress = ammeterInfo.AmmerterAddress; + }); + } + } UnitDataAnalysis>> unitDataAnalysis = new UnitDataAnalysis>> { Code = input.A.Code!, @@ -40,13 +57,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH Fn = input.DT.Fn, Pn = input.DA.Pn, Data = list, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F132_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F132_Analysis.cs index 70db824..1b420f6 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F132_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F132_Analysis.cs @@ -1,6 +1,7 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Helpers; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; @@ -19,11 +20,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F132_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F132_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } @@ -36,6 +38,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH List datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; List> list = GenerateFinalResult(2, datas, "反向无功电能示值", dataType); + if (list.Count > 0) + { + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(list[0].DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + list.ForEach(item => + { + item.ProjectId = ammeterInfo.ProjectID; + item.DeviceId = ammeterInfo.MeterId; + item.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + item.DeviceAddress = ammeterInfo.AmmerterAddress; + }); + } + } UnitDataAnalysis>> unitDataAnalysis = new UnitDataAnalysis>> { Code = input.A.Code!, @@ -43,13 +60,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH Fn = input.DT.Fn , Pn = input.DA.Pn, Data = list, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F145_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F145_Analysis.cs index ecbaef0..485e75e 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F145_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F145_Analysis.cs @@ -1,12 +1,14 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Helpers; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; +using System.Collections.Generic; using System.Diagnostics.Metrics; namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH @@ -18,11 +20,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F145_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F145_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } @@ -36,6 +39,17 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; AnalysisBaseDto data = GenerateFinalResult(datas, "当月正向有功最大需量及发生时间", dataType); + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.MeterId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.AmmerterAddress; + + } + UnitDataAnalysis> unitDataAnalysis = new UnitDataAnalysis> { Code = input.A.Code!, @@ -43,13 +57,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F149_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F149_Analysis.cs index 671e625..8464ba9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F149_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F149_Analysis.cs @@ -57,7 +57,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH MSA=input.A.A3!.D1_D7!, PSEQ=input.SEQ.PSEQ, Data = data, - HexMessage=input.BaseHexMessage.HexMessageString, + ReceivedHexMessage=input.BaseHexMessage.HexMessageString, MessageId=input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F188_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F188_Analysis.cs index e48cdc4..d4850d5 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F188_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F188_Analysis.cs @@ -1,9 +1,11 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Helpers; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; using YamlDotNet.Core.Tokens; @@ -18,11 +20,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F188_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F188_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } public async Task ExecuteAsync(TB3761 input, Action? result = null) @@ -36,6 +39,16 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH ArgumentNullException.ThrowIfNull(input.DT.Fn); string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; AnalysisBaseDto data = GenerateFinalResult(input.UnitData.HexMessageList, dataType); + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.MeterId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.AmmerterAddress; + + } UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code!, @@ -43,13 +56,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(dto); + await _dataStorage.SaveDataToIotDbAsync(dto); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F25_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F25_Analysis.cs index 4c754e3..90f3c6f 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F25_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F25_Analysis.cs @@ -1,9 +1,11 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Helpers; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData; using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; @@ -19,11 +21,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F25_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F25_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } public List DataType { get; set; } = new List() { "YGGL", "YGGL_A", "YGGL_B", "YGGL_C", "WGGL", "WGGL_A", "WGGL_B", "WGGL_C", "GLYS", "GLYS_A", "GLYS_B", "GLYS_C", "DY_A", "DY_B", "DY_C", "DL_A", "DL_B", "DL_C", "LXDL", "SZGL", "SZGL_A", "SZGL_B", "SZGL_C" }; @@ -62,6 +65,22 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH dto.FiledDesc = remarks[i - 1]; list.Add(dto); } + if (list.Count > 0) + { + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(list[0].DataType.ToString(), "15"); + if (ammeterInfo != null) + { + list.ForEach(item => + { + item.ProjectId = ammeterInfo.ProjectID; + item.DeviceId = ammeterInfo.MeterId; + item.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + item.DeviceAddress = ammeterInfo.AmmerterAddress; + }); + } + } + UnitDataAnalysis>> unitDataAnalysis = new UnitDataAnalysis>> { Code = input.A.Code!, @@ -69,13 +88,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH Fn = input.DT.Fn, Pn = input.DA.Pn, Data = list, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs index 5bac5c7..45e2ba9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F2_Analysis.cs @@ -8,6 +8,8 @@ using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; using static System.Runtime.InteropServices.JavaScript.JSType; using System.Diagnostics.Metrics; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData; +using JiShe.CollectBus.IotSystems.Ammeters; namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH { @@ -18,11 +20,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F2_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F2_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } public async Task ExecuteAsync(TB3761 input, Action? result = null) @@ -35,6 +38,16 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; var data = await GenerateFinalResultAsync(input.UnitData.HexMessageList, dataType); + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.MeterId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.AmmerterAddress; + + } UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code!, @@ -42,13 +55,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(dto); + await _dataStorage.SaveDataToIotDbAsync(dto); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F33_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F33_Analysis.cs index cea1330..e1d4341 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F33_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F33_Analysis.cs @@ -1,10 +1,13 @@ using JiShe.CollectBus.Common.Enums; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData; using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; +using System; namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH { @@ -16,11 +19,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH private List DataUnitHexList { get; set; }=new List(); private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F33_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F33_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } @@ -34,20 +38,36 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH DataUnitHexList = input.UnitData.HexMessageList.GetRange(24, (5 * (rationgCount + 1)) + (4 * (rationgCount + 1)) * 3); GetDataUnitHexString(input.UnitData.HexMessageList, rationgCount); - UnitDataAnalysis unitDataAnalysis = new UnitDataAnalysis + var data = new AnalysisBaseDto() + { + FiledDesc = "当前正向有/无功电能示值、一/四象限无功电能示值", + DataValue = await AnalysisDataUnit(input.UnitData.HexMessageList, rationgCount) + }; + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.MeterId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.AmmerterAddress; + + } + UnitDataAnalysis> unitDataAnalysis = new UnitDataAnalysis> { Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data = await AnalysisDataUnit(input.UnitData.HexMessageList, rationgCount), - HexMessage = input.BaseHexMessage.HexMessageString, + Data = data, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F49_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F49_Analysis.cs index f4dd742..33a06b9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F49_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0CH/AFN12_F49_Analysis.cs @@ -1,9 +1,11 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Helpers; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData; using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; @@ -18,11 +20,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH { private readonly ILogger _logger; private readonly AnalysisStrategyContext _analysisStrategyContext; - - public AFN12_F49_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext) + private readonly DataStorage _dataStorage; + public AFN12_F49_Analysis(ILogger logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) { _logger = logger; _analysisStrategyContext = analysisStrategyContext; + _dataStorage = dataStorage; } public List DataType { get; set; } = new List() { "Uab_Ua", "Ub", "Ucb_Uc", "Ia", "Ib", "Ic" }; @@ -58,6 +61,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH dto.FiledDesc= remarks[i]; list.Add(dto); } + if (list.Count > 0) + { + // 查询电表信息 + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(list[0].DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + list.ForEach(item => + { + item.ProjectId = ammeterInfo.ProjectID; + item.DeviceId = ammeterInfo.MeterId; + item.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + item.DeviceAddress = ammeterInfo.AmmerterAddress; + }); + } + } UnitDataAnalysis>> unitDataAnalysis = new UnitDataAnalysis>> { Code = input.A.Code!, @@ -65,13 +83,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH Fn = input.DT.Fn, Pn = input.DA.Pn, Data= list, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.Second, TimeDensity = 0 }; result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F100_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F100_Analysis.cs index 3df913f..4f66190 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F100_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F100_Analysis.cs @@ -65,7 +65,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度,注意这里会兼容存储做判断 DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F101_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F101_Analysis.cs index f4d4c0a..db6b1ab 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F101_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F101_Analysis.cs @@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度,注意这里会兼容存储做判断 DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F102_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F102_Analysis.cs index 4e02149..19af1d5 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F102_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F102_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度,注意这里会兼容存储做判断 DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F103_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F103_Analysis.cs index 94faa02..c9c85ca 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F103_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F103_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度,注意这里会兼容存储做判断 DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F104_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F104_Analysis.cs index a76189a..ef8b3bd 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F104_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F104_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度,注意这里会兼容存储做判断 DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F105_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F105_Analysis.cs index 05fa701..cd0f340 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F105_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F105_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度,注意这里会兼容存储做判断 DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F106_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F106_Analysis.cs index ce50726..1c7fbdd 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F106_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F106_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度,注意这里会兼容存储做判断 DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F107_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F107_Analysis.cs index a07cce6..fb4495e 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F107_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F107_Analysis.cs @@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度,注意这里会兼容存储做判断 DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F108_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F108_Analysis.cs index 520970c..f5b8d24 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F108_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F108_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F11_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F11_Analysis.cs index 661dce8..698a180 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F11_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F11_Analysis.cs @@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F145_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F145_Analysis.cs index cff5120..97c2f64 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F145_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F145_Analysis.cs @@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F146_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F146_Analysis.cs index 28c8244..0f7ca95 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F146_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F146_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F147_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F147_Analysis.cs index 3fa0625..c5306b2 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F147_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F147_Analysis.cs @@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F148_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F148_Analysis.cs index 9c7346b..a155216 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F148_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F148_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F161_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F161_Analysis.cs index b46161d..57a84f0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F161_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F161_Analysis.cs @@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F162_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F162_Analysis.cs index c4d6ac4..7ac836e 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F162_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F162_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F163_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F163_Analysis.cs index 3fdee69..0dc4362 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F163_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F163_Analysis.cs @@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F164_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F164_Analysis.cs index 6ecc824..5e0c7a4 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F164_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F164_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F165_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F165_Analysis.cs index f52b8d1..315dc66 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F165_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F165_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F166_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F166_Analysis.cs index 12c012c..0b7d121 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F166_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F166_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F167_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F167_Analysis.cs index 2e76d9f..2487d84 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F167_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F167_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F168_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F168_Analysis.cs index 566b374..7b6dbab 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F168_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F168_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F177_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F177_Analysis.cs index d685851..25063a3 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F177_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F177_Analysis.cs @@ -60,7 +60,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F178_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F178_Analysis.cs index 20a9ccb..9b942a5 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F178_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F178_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F179_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F179_Analysis.cs index 10234b0..e6ce2b7 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F179_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F179_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F180_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F180_Analysis.cs index f896e59..e4d0f3c 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F180_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F180_Analysis.cs @@ -60,7 +60,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F181_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F181_Analysis.cs index 2e8ef47..2c4c58d 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F181_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F181_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F182_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F182_Analysis.cs index f21f425..b124158 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F182_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F182_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F183_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F183_Analysis.cs index 81a8710..6a6ce65 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F183_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F183_Analysis.cs @@ -60,7 +60,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F184_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F184_Analysis.cs index e2f6747..ed75e71 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F184_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F184_Analysis.cs @@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F189_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F189_Analysis.cs index 40fc28c..73068c7 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F189_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F189_Analysis.cs @@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F190_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F190_Analysis.cs index 2270784..62f8d44 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F190_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F190_Analysis.cs @@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F193_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F193_Analysis.cs index b7e920f..77df07e 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F193_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F193_Analysis.cs @@ -56,7 +56,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F195_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F195_Analysis.cs index ef5bc1f..a688d57 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F195_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F195_Analysis.cs @@ -56,7 +56,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Month, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F19_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F19_Analysis.cs index e8f200f..7984be2 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F19_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F19_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs index 5267153..1329f0f 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F3_Analysis.cs @@ -66,7 +66,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs index 1fb68ad..cc283f7 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F4_Analysis.cs @@ -65,7 +65,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Day, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F81_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F81_Analysis.cs index acf04cd..e6fd687 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F81_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F81_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F82_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F82_Analysis.cs index ce5d692..ab2d42f 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F82_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F82_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F83_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F83_Analysis.cs index a5ea520..d31ae3e 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F83_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F83_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F84_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F84_Analysis.cs index 648be75..2f350ca 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F84_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F84_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F85_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F85_Analysis.cs index 3fd2907..c4e8a74 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F85_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F85_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F86_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F86_Analysis.cs index 2dad0e8..e93e737 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F86_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F86_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F87_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F87_Analysis.cs index de93427..6f618a9 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F87_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F87_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F88_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F88_Analysis.cs index 3e24bb4..071fb0b 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F88_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F88_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F89_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F89_Analysis.cs index a89b0c7..e784710 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F89_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F89_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F90_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F90_Analysis.cs index 30f16b0..4cd618d 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F90_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F90_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F91_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F91_Analysis.cs index 1b5e012..760e405 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F91_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F91_Analysis.cs @@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F92_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F92_Analysis.cs index b3b41aa..a919b18 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F92_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F92_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F93_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F93_Analysis.cs index f6282a5..421f430 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F93_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F93_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F94_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F94_Analysis.cs index 6d6025f..fada7f7 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F94_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F94_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F95_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F95_Analysis.cs index d4174da..9ae2af2 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F95_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F95_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F97_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F97_Analysis.cs index 0e790dc..043dd67 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F97_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F97_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F98_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F98_Analysis.cs index d772796..11a97be 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F98_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F98_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F99_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F99_Analysis.cs index f22d2f1..ba3b9f5 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F99_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0DH/AFN13_F99_Analysis.cs @@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = density,//密度-间隔分钟数, DensityUnit = DensityUnit.Minute, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs index 39b36c8..d44d45f 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_0EH/AFN14_F1_Analysis.cs @@ -65,7 +65,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH Fn = input.DT.Fn, Pn = input.DA.Pn, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F101_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F101_Analysis.cs index 5f62f56..4d23dd0 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F101_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F101_Analysis.cs @@ -1,9 +1,12 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; +using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData; using JiShe.CollectBus.Protocol3761; using Microsoft.Extensions.Logging; +using System.Text; namespace GatherService.WattMeter.AnalysisData.AFN_10H { @@ -13,40 +16,47 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H public class AFN16_F101_Analysis : IAnalysisStrategy { private readonly ILogger _logger; - - public AFN16_F101_Analysis(ILogger logger) + private readonly DataStorage _dataStorage; + public AFN16_F101_Analysis(ILogger logger, DataStorage dataStorage) { _logger = logger; + _dataStorage = dataStorage; } - public Task ExecuteAsync(TB3761 input, Action? result = null) + public async Task ExecuteAsync(TB3761 input, Action? result = null) { try { ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); - UnitDataAnalysis dto = new UnitDataAnalysis + var data = new AnalysisBaseDto() + { + FiledDesc = "透读取SIM卡信息", + DataValue = AnalysisDataUnit(input.UnitData.HexMessageList) + }; + UnitDataAnalysis> dto = new UnitDataAnalysis> { Code = input.A.Code!, AFN = input.AFN_FC.AFN, Fn = input.DT.Fn, Pn = input.DA.Pn, - Data = AnalysisDataUnit(input.UnitData.HexMessageList), //SIM卡 - HexMessage = input.BaseHexMessage.HexMessageString, + Data = data, //SIM卡 + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, TimeDensity = -1 }; result?.Invoke(dto); - return Task.FromResult(true); + await _dataStorage.SaveDataToIotDbAsync(dto); + return await Task.FromResult(true); } catch (Exception ex) { _logger.LogError(ex, $"10_101解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); } - return Task.FromResult(false); + return await Task.FromResult(false); } private string AnalysisDataUnit(List hexMessageList) { diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F97_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F97_Analysis.cs index 7fa1d92..6a15d69 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F97_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F97_Analysis.cs @@ -59,14 +59,15 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, Data = data, - HexMessage = input.BaseHexMessage.HexMessageString, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, TimeDensity = 1,//密度-间隔, DensityUnit = DensityUnit.Hour, ReceivedTime = input.ReceivedTime }; - await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); + return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F98_Analysis.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F98_Analysis.cs index 5495942..dec2a3b 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F98_Analysis.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/AFN_10H/AFN16_F98_Analysis.cs @@ -1,6 +1,8 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; +using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.Protocol; +using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.T37612012.AnalysisData; @@ -33,17 +35,23 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); List datas = AnalysisDataUnit(input.UnitData.HexMessageList); - + + var data = new AnalysisBaseDto() + { + FiledDesc = "跳合闸", + DataValue = (datas[2].Equals("9C") || datas[2].Equals("94")) ? true : false + }; + // 查询电表信息 - //AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.MeterType.ToString(), "15"); - //if (ammeterInfo != null) - //{ - // data.ProjectId = ammeterInfo.ProjectID; - // data.MeterId = ammeterInfo.MeterId; - // data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; - // data.MeterAddress = ammeterInfo.AmmerterAddress; - //} - UnitDataAnalysis unitDataAnalysis = new UnitDataAnalysis + AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15"); + if (ammeterInfo != null) + { + data.ProjectId = ammeterInfo.ProjectID; + data.DeviceId = ammeterInfo.MeterId; + data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; + data.DeviceAddress = ammeterInfo.AmmerterAddress; + } + UnitDataAnalysis> unitDataAnalysis = new UnitDataAnalysis> { Code = input.A.Code!, AFN = input.AFN_FC.AFN, @@ -51,15 +59,15 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H Pn = input.DA.Pn, MSA = input.A.A3!.D1_D7!, PSEQ = input.SEQ.PSEQ, - Data = (datas[2].Equals("9C") || datas[2].Equals("94")) ? true : false, - HexMessage = input.BaseHexMessage.HexMessageString, + Data = data, + ReceivedHexMessage = input.BaseHexMessage.HexMessageString, MessageId = input.MessageId, ReceivedTime = input.ReceivedTime, DensityUnit = DensityUnit.None, TimeDensity = -1 }; - //await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); result?.Invoke(unitDataAnalysis); + await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis); return await Task.FromResult(true); } catch (Exception ex) diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/DataStorage.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/DataStorage.cs index d43276d..f7009bb 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/DataStorage.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/AnalysisData/DataStorage.cs @@ -10,11 +10,15 @@ using JiShe.CollectBus.IoTDB.Model; using JiShe.CollectBus.IoTDB.Options; using JiShe.CollectBus.IoTDB.Provider; using JiShe.CollectBus.IotSystems.Ammeters; +using JiShe.CollectBus.IotSystems.LogRecord; using JiShe.CollectBus.IotSystems.MeterReadingRecords; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using System.Diagnostics; using System.Diagnostics.Metrics; +using System.Threading.Channels; using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; using static FreeSql.Internal.GlobalFilter; @@ -28,12 +32,36 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData private readonly IIoTDbProvider _dbProvider; private readonly ServerApplicationOptions _applicationOptions; private readonly IoTDBRuntimeContext _runtimeContext; - public DataStorage(IIoTDbProvider dbProvider, IOptions applicationOptions, IGuidGenerator guidGenerator, IoTDBRuntimeContext runtimeContext) + private readonly ILogger _logger; + + public DataStorage(IIoTDbProvider dbProvider, IOptions applicationOptions, + IGuidGenerator guidGenerator, IoTDBRuntimeContext runtimeContext, ILogger logger) { _dbProvider= dbProvider; _applicationOptions = applicationOptions.Value; _guidGenerator= guidGenerator; _runtimeContext= runtimeContext; + _logger= logger; + } + + + + /// + /// 日志保存通道写入 + /// + /// + public async Task LogSaveWriterAsync(ChannelWriter channelWriter, dynamic dataItems) + { + await channelWriter.WriteAsync(dataItems); + } + + /// + /// 日志刷新通道写入 + /// + /// + public async Task LogRefreshSaveWriterAsync(ChannelWriter channelWriter, dynamic dataItems) + { + await channelWriter.WriteAsync(dataItems); } /// @@ -107,7 +135,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData // 更新 meter.Timestamps = taskData.PendingCopyReadTime.GetDateTimeOffset().ToUnixTimeNanoseconds(); taskData.IsReceived=true; - taskData.ReceivedMessageHexString= analysisBaseDto.HexMessage; + taskData.ReceivedMessageHexString= analysisBaseDto.ReceivedHexMessage; taskData.ReceivedMessageId= analysisBaseDto.MessageId ?? string.Empty; } else @@ -135,10 +163,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData ManualOrNot = false, Pn = analysisBaseDto.Pn, ReceivedMessageId = analysisBaseDto.MessageId?? string.Empty, - ReceivedMessageHexString = analysisBaseDto.HexMessage, + ReceivedMessageHexString = analysisBaseDto.ReceivedHexMessage, IsReceived = true, ReceivedRemark = data.ErrorCodeMsg ?? string.Empty, ScoreValue = $"{analysisBaseDto.Code}.{taskMark}".Md5Fun(), + ReceivedTime = analysisBaseDto.ReceivedTime, }; } @@ -158,12 +187,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData /// /// /// + /// /// public async Task SaveMultipleDataToIotDbAsync(UnitDataAnalysis>> analysisBaseDto) { var data = analysisBaseDto.Data!; List meterReadingTelemetryPacketInfos = new List(); - List< TreeModelSingleMeasuringEntity> treeModelSingleMeasuringEntities = new List>(); + List> treeModelSingleMeasuringEntities = new List>(); foreach (var item in data) { if(!item.TimeSpan.HasValue) @@ -211,7 +241,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData // 更新 meter.Timestamps = taskData.PendingCopyReadTime.GetDateTimeOffset().ToUnixTimeNanoseconds(); taskData.IsReceived = true; - taskData.ReceivedMessageHexString = analysisBaseDto.HexMessage; + taskData.ReceivedMessageHexString = analysisBaseDto.ReceivedHexMessage; taskData.ReceivedMessageId = analysisBaseDto.MessageId ?? string.Empty; } else @@ -239,20 +269,22 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData ManualOrNot = false, Pn = analysisBaseDto.Pn, ReceivedMessageId = analysisBaseDto.MessageId ?? string.Empty, - ReceivedMessageHexString = analysisBaseDto.HexMessage, + ReceivedMessageHexString = analysisBaseDto.ReceivedHexMessage, IsReceived = true, ReceivedRemark = item.ErrorCodeMsg ?? string.Empty, ScoreValue = $"{analysisBaseDto.Code}.{taskMark}".Md5Fun(), + ReceivedTime = analysisBaseDto.ReceivedTime, }; } meterReadingTelemetryPacketInfos.Add(taskData); - //如果无字段名,则不保存数据 + //如果无字段名,则不保存数据,如saveData=false 也不保存数据 if (!string.IsNullOrWhiteSpace(item.FiledName)) { treeModelSingleMeasuringEntities.Add(meter); } } // 批量保存数据 + _runtimeContext.UseTableSessionPool = true; // 使树模型池 await _dbProvider.BatchInsertAsync(meterReadingTelemetryPacketInfos); if (treeModelSingleMeasuringEntities.Count > 0) { @@ -273,6 +305,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData ArgumentNullException.ThrowIfNull(nameof(analysisBaseDto.Data)); ArgumentException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.FiledName)); ArgumentException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.DataValue)); + List> treeModelSingleMeasuringEntities = new List>(); + var data = analysisBaseDto.Data!; if (!data.TimeSpan.HasValue) data.TimeSpan = analysisBaseDto.ReceivedTime; @@ -299,7 +333,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData ProjectId = $"{data.ProjectId}", DataType = IOTDBDataTypeConst.Status, Timestamps = timestamps, - SingleMeasuring = (ConcentratorStatusFieldConst.FrameData, analysisBaseDto.HexMessage ?? string.Empty) + SingleMeasuring = (ConcentratorStatusFieldConst.FrameData, analysisBaseDto.ReceivedHexMessage ?? string.Empty) }; _runtimeContext.UseTableSessionPool = false; // 使树模型池 @@ -318,20 +352,40 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData }; _runtimeContext.UseTableSessionPool = false; // 使树模型池 await _dbProvider.InsertAsync(treeRecordingTimeData); - // 备注 - var treeRemarkData = new TreeModelSingleMeasuringEntity() + + // 新建 + string taskMark = CommonHelper.GetTaskMark(analysisBaseDto.AFN, analysisBaseDto.Fn, analysisBaseDto.Pn, analysisBaseDto.MSA, analysisBaseDto.PSEQ); + var currentTime = DateTime.Now; + var taskData = new MeterReadingTelemetryPacketInfo() { SystemName = _applicationOptions.SystemType, - DeviceId = $"{data.DeviceId}", - DeviceType = $"{data.DeviceType}", ProjectId = $"{data.ProjectId}", - DataType = IOTDBDataTypeConst.Status, - Timestamps = timestamps, - SingleMeasuring = (ConcentratorStatusFieldConst.Remark, data.FiledDesc ?? string.Empty) + DeviceType = $"{data.DeviceType}", + DeviceId = $"{data.DeviceId}", + Timestamps = DateTime.Now.GetDateTimeOffset().ToUnixTimeNanoseconds(), + DatabaseBusiID = data.DatabaseBusiID, + PendingCopyReadTime = data.TimeSpan!.Value.GetFormatTime(analysisBaseDto.DensityUnit, analysisBaseDto.TimeDensity), + CreationTime = currentTime, + MeterAddress = data.DeviceAddress, + AFN = analysisBaseDto.AFN, + Fn = analysisBaseDto.Fn, + Seq = analysisBaseDto.PSEQ, + MSA = analysisBaseDto.MSA, + ItemCode = data.DataType, + TaskMark = taskMark, + IsSend = false, + ManualOrNot = false, + Pn = analysisBaseDto.Pn, + ReceivedMessageId = analysisBaseDto.MessageId ?? string.Empty, + ReceivedMessageHexString = analysisBaseDto.ReceivedHexMessage, + IsReceived = true, + ReceivedRemark = data.ErrorCodeMsg ?? string.Empty, + ScoreValue = $"{analysisBaseDto.Code}.{taskMark}".Md5Fun(), + ReceivedTime=analysisBaseDto.ReceivedTime, }; - _runtimeContext.UseTableSessionPool = false; // 使树模型池 - await _dbProvider.InsertAsync(treeRemarkData); - + _runtimeContext.UseTableSessionPool = true; // 使表模型池 + await _dbProvider.InsertAsync(taskData); + return await Task.FromResult(true); } @@ -344,7 +398,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData public async Task SaveMultipleStatusToIotDbAsync(UnitDataAnalysis>> analysisBaseDto) { ArgumentNullException.ThrowIfNull(nameof(analysisBaseDto.Data)); - + List meterReadingTelemetryPacketInfos = new List(); + var data = analysisBaseDto.Data!; foreach (var item in data) { @@ -375,7 +430,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData ProjectId = $"{item.ProjectId}", DataType = IOTDBDataTypeConst.Status, Timestamps = timestamps, - SingleMeasuring = (ConcentratorStatusFieldConst.FrameData, analysisBaseDto.HexMessage ?? string.Empty) + SingleMeasuring = (ConcentratorStatusFieldConst.FrameData, analysisBaseDto.ReceivedHexMessage ?? string.Empty) }; _runtimeContext.UseTableSessionPool = false; // 使树模型池 @@ -393,21 +448,48 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData }; _runtimeContext.UseTableSessionPool = false; // 使树模型池 await _dbProvider.InsertAsync(treeRecordingTimeData); - // 备注 - var treeRemarkData = new TreeModelSingleMeasuringEntity() + + // 新建 + string taskMark = CommonHelper.GetTaskMark(analysisBaseDto.AFN, analysisBaseDto.Fn, analysisBaseDto.Pn, analysisBaseDto.MSA, analysisBaseDto.PSEQ); + var currentTime = DateTime.Now; + var taskData = new MeterReadingTelemetryPacketInfo() { SystemName = _applicationOptions.SystemType, - DeviceType = $"{item.DeviceType}", ProjectId = $"{item.ProjectId}", - DataType = IOTDBDataTypeConst.Status, - Timestamps = timestamps, - SingleMeasuring =(ConcentratorStatusFieldConst.Remark, item.FiledDesc ?? string.Empty) + DeviceType = $"{item.DeviceType}", + DeviceId = $"{item.DeviceId}", + Timestamps = DateTime.Now.GetDateTimeOffset().ToUnixTimeNanoseconds(), + DatabaseBusiID = item.DatabaseBusiID, + PendingCopyReadTime = item.TimeSpan!.Value.GetFormatTime(analysisBaseDto.DensityUnit, analysisBaseDto.TimeDensity), + CreationTime = currentTime, + MeterAddress = item.DeviceAddress, + AFN = analysisBaseDto.AFN, + Fn = analysisBaseDto.Fn, + Seq = analysisBaseDto.PSEQ, + MSA = analysisBaseDto.MSA, + ItemCode = item.DataType, + TaskMark = taskMark, + IsSend = false, + ManualOrNot = false, + Pn = analysisBaseDto.Pn, + ReceivedMessageId = analysisBaseDto.MessageId ?? string.Empty, + ReceivedMessageHexString = analysisBaseDto.ReceivedHexMessage, + IsReceived = true, + ReceivedRemark = item.ErrorCodeMsg ?? string.Empty, + ScoreValue = $"{analysisBaseDto.Code}.{taskMark}".Md5Fun(), + ReceivedTime = analysisBaseDto.ReceivedTime, }; - _runtimeContext.UseTableSessionPool = false; // 使树模型池 - await _dbProvider.InsertAsync(treeRemarkData); + meterReadingTelemetryPacketInfos.Add(taskData); + } + if (meterReadingTelemetryPacketInfos.Count > 0) + { + _runtimeContext.UseTableSessionPool = true; // 使表模型池 + await _dbProvider.BatchInsertAsync(meterReadingTelemetryPacketInfos); } return await Task.FromResult(true); } + + } } diff --git a/protocols/JiShe.CollectBus.Protocol.T37612012/CollectBusProtocolT37612012Module.cs b/protocols/JiShe.CollectBus.Protocol.T37612012/CollectBusProtocolT37612012Module.cs index d38b2ea..8f3cec4 100644 --- a/protocols/JiShe.CollectBus.Protocol.T37612012/CollectBusProtocolT37612012Module.cs +++ b/protocols/JiShe.CollectBus.Protocol.T37612012/CollectBusProtocolT37612012Module.cs @@ -1,5 +1,7 @@ using System.Reflection; +using System.Threading.Channels; using JiShe.CollectBus.Protocol.Interfaces; +using JiShe.CollectBus.Protocol.T37612012.AnalysisData; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp; diff --git a/services/JiShe.CollectBus.Application/CollectBusApplicationModule.cs b/services/JiShe.CollectBus.Application/CollectBusApplicationModule.cs index ed86fd7..1feb894 100644 --- a/services/JiShe.CollectBus.Application/CollectBusApplicationModule.cs +++ b/services/JiShe.CollectBus.Application/CollectBusApplicationModule.cs @@ -1,13 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Threading.Channels; -using System.Threading.Tasks; -using Cassandra.Mapping; +using Cassandra.Mapping; using JiShe.CollectBus.Cassandra; using JiShe.CollectBus.DataChannels; -using JiShe.CollectBus.DataMigration.Options; using JiShe.CollectBus.FreeRedis; using JiShe.CollectBus.FreeSql; using JiShe.CollectBus.Interceptors; @@ -16,9 +9,14 @@ using JiShe.CollectBus.IotSystems.MeterReadingRecords; using JiShe.CollectBus.Kafka; using JiShe.CollectBus.Mappers; using JiShe.CollectBus.Protocol; -using JiShe.CollectBus.Protocol.Contracts; using JiShe.CollectBus.ScheduledMeterReading; using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading.Channels; +using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application; using Volo.Abp.Autofac; @@ -83,6 +81,17 @@ public class CollectBusApplicationModule : AbpModule //下发任务通道构建 DataChannelManage.TaskDataChannel = Channel.CreateUnbounded>>(); + + // 日志存储通道构建 + DataChannelManage.LogSaveChannel = Channel.CreateUnbounded(); + + // 日志刷新通道构建 + DataChannelManage.LogRefreshChannel = Channel.CreateUnbounded(); + + // 启动通道任务 + var _dataChannelManage = context.ServiceProvider.GetRequiredService(); + _ = _dataChannelManage.LogSaveAsync(DataChannelManage.LogSaveChannel.Reader); + //默认初始化表计信息 var dbContext = context.ServiceProvider.GetRequiredService(); _= dbContext.InitAmmeterCacheData(); diff --git a/services/JiShe.CollectBus.Application/DataChannels/DataChannelManage.cs b/services/JiShe.CollectBus.Application/DataChannels/DataChannelManage.cs index 6a8eeed..6130a25 100644 --- a/services/JiShe.CollectBus.Application/DataChannels/DataChannelManage.cs +++ b/services/JiShe.CollectBus.Application/DataChannels/DataChannelManage.cs @@ -1,4 +1,5 @@ using JiShe.CollectBus.IotSystems.MeterReadingRecords; +using JiShe.CollectBus.Protocol.Dto; using System; using System.Collections.Generic; using System.Linq; @@ -14,5 +15,16 @@ namespace JiShe.CollectBus.DataChannels /// 下发任务通道 /// public static Channel>> TaskDataChannel; + + /// + /// 日志保存管道 + /// + public static Channel LogSaveChannel; + + /// + /// 日志刷新管道 + /// + public static Channel LogRefreshChannel; + } } diff --git a/services/JiShe.CollectBus.Application/DataChannels/DataChannelManageService.cs b/services/JiShe.CollectBus.Application/DataChannels/DataChannelManageService.cs index c24ad18..8a4862c 100644 --- a/services/JiShe.CollectBus.Application/DataChannels/DataChannelManageService.cs +++ b/services/JiShe.CollectBus.Application/DataChannels/DataChannelManageService.cs @@ -1,15 +1,24 @@ -using JiShe.CollectBus.Common; +using Amazon.Runtime.Internal.Transform; +using DnsClient.Protocol; +using JiShe.CollectBus.Common; using JiShe.CollectBus.Common.DeviceBalanceControl; using JiShe.CollectBus.IoTDB.Context; using JiShe.CollectBus.IoTDB.Interface; +using JiShe.CollectBus.IotSystems.LogRecord; using JiShe.CollectBus.IotSystems.MeterReadingRecords; using JiShe.CollectBus.Kafka.Internal; using JiShe.CollectBus.Kafka.Producer; +using JiShe.CollectBus.Protocol.Dto; +using JiShe.CollectBus.Protocol.Models; +using JiShe.CollectBus.Repository.LogRecord; +using Mapster; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.Diagnostics; +using System.Linq; using System.Threading; using System.Threading.Channels; using System.Threading.Tasks; @@ -28,6 +37,7 @@ namespace JiShe.CollectBus.DataChannels private readonly KafkaOptionConfig _kafkaOptions; private readonly ServerApplicationOptions _applicationOptions; private readonly IoTDBRuntimeContext _runtimeContext; + private readonly ILogRecordRepository _logRecordRepository; public DataChannelManageService( ILogger logger, @@ -35,7 +45,8 @@ namespace JiShe.CollectBus.DataChannels IoTDBRuntimeContext runtimeContext, IProducerService producerService, IOptions kafkaOptions, - IOptions applicationOptions) + IOptions applicationOptions, + ILogRecordRepository logRecordRepository) { _logger = logger; _dbProvider = dbProvider; @@ -44,6 +55,7 @@ namespace JiShe.CollectBus.DataChannels _kafkaOptions = kafkaOptions.Value; _applicationOptions = applicationOptions.Value; _runtimeContext.UseTableSessionPool = true; + _logRecordRepository= logRecordRepository; } /// @@ -54,9 +66,6 @@ namespace JiShe.CollectBus.DataChannels { await _telemetryPacketInfoWriter.WriteAsync(dataItems); } - - - /// /// 定时任务数据入库和Kafka推送通道 /// @@ -200,5 +209,127 @@ namespace JiShe.CollectBus.DataChannels } + + /// + /// 日志保存 + /// + /// + /// + public async Task LogSaveAsync(ChannelReader channelReader) + { + const int BatchSize = 1000; + const int EmptyWaitMilliseconds = 1000; + var timeout = TimeSpan.FromSeconds(2); + var timer = Stopwatch.StartNew(); + long timeoutMilliseconds = 0; + try + { + while (true) + { + var batch = new List(); + var canRead = channelReader.Count; + if (canRead <= 0) + { + if (timeoutMilliseconds > 0) + { + _logger.LogError($"{nameof(LogSaveAsync)} 通道处理数据耗时{timeoutMilliseconds}毫秒"); + } + timeoutMilliseconds = 0; + //无消息时短等待1秒 + await Task.Delay(EmptyWaitMilliseconds); + continue; + } + + timer.Restart(); + var startTime = DateTime.Now; + + try + { + // 异步批量读取数据 + while (batch != null && batch.Count < BatchSize && (DateTime.Now - startTime) < timeout) + { + try + { + if (channelReader.TryRead(out var dataItem)) + { + batch.Add(dataItem); + } + } + catch (Exception) + { + throw; + } + } + } + catch (Exception) + { + throw; + } + + if (batch == null || batch.Count == 0) + { + await Task.Delay(EmptyWaitMilliseconds); + continue; + } + try + { + + // 按小时分组 + var hourGroups = new Dictionary>(); + DateTime? dateTime = null; + List batchList = new List(); + int index = 1; + foreach (var item in batch) + { + var records = item.Adapt(); + + if (!records.ReceivedTime.HasValue) + records.ReceivedTime = DateTime.Now; + var curDateTime = new DateTime(records.ReceivedTime.Value.Year, records.ReceivedTime.Value.Month, records.ReceivedTime.Value.Hour, records.ReceivedTime.Value.Day, records.ReceivedTime.Value.Hour, 0, 0); + if (!dateTime.HasValue || curDateTime != dateTime) + { + dateTime = curDateTime; + if (batchList.Count > 0) + { + var immutableList = ImmutableList.CreateRange(batchList); + hourGroups.Add(dateTime.Value, immutableList.ToList()); + batchList.Clear(); + } + } + batchList.Add(records); + // 最后一批 + if(index== batch.Count) + { + var immutableList = ImmutableList.CreateRange(batchList); + hourGroups.Add(dateTime.Value, immutableList.ToList()); + batchList.Clear(); + } + index++; + } + foreach (var (time, records) in hourGroups) + { + // 批量写入数据库 + await _logRecordRepository.InsertManyAsync(records, time); + } + } + catch (Exception ex) + { + _logger.LogError(ex, "数据通道处理日志数据时发生异常"); + } + batch.Clear(); + timer.Stop(); + + timeoutMilliseconds = timeoutMilliseconds + timer.ElapsedMilliseconds; + + startTime = DateTime.Now; + } + } + catch (Exception ex) + { + _logger.LogCritical(ex, "日志处理发生致命错误"); + throw; + } + } + } } diff --git a/services/JiShe.CollectBus.Application/Workers/CreateToBeIssueTaskWorker.cs b/services/JiShe.CollectBus.Application/Workers/CreateToBeIssueTaskWorker.cs index 654abc4..d1de00a 100644 --- a/services/JiShe.CollectBus.Application/Workers/CreateToBeIssueTaskWorker.cs +++ b/services/JiShe.CollectBus.Application/Workers/CreateToBeIssueTaskWorker.cs @@ -1,43 +1,43 @@ -using System; -using System.Threading; -using System.Threading.Tasks; -using Hangfire; -using JiShe.CollectBus.Common.Consts; -using JiShe.CollectBus.ScheduledMeterReading; -using Microsoft.Extensions.Logging; -using Volo.Abp.BackgroundWorkers.Hangfire; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Uow; +//using System; +//using System.Threading; +//using System.Threading.Tasks; +//using Hangfire; +//using JiShe.CollectBus.Common.Consts; +//using JiShe.CollectBus.ScheduledMeterReading; +//using Microsoft.Extensions.Logging; +//using Volo.Abp.BackgroundWorkers.Hangfire; +//using Volo.Abp.DependencyInjection; +//using Volo.Abp.Uow; -namespace JiShe.CollectBus.Workers -{ - /// - /// 构建待处理的下发指令任务处理 - /// - public class CreateToBeIssueTaskWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker - { - private readonly ILogger _logger; - private readonly IScheduledMeterReadingService _scheduledMeterReadingService; +//namespace JiShe.CollectBus.Workers +//{ +// /// +// /// 构建待处理的下发指令任务处理 +// /// +// public class CreateToBeIssueTaskWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker +// { +// private readonly ILogger _logger; +// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; - /// - /// Initializes a new instance of the class. - /// - /// The logger. - /// 定时任务 - public CreateToBeIssueTaskWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) - { - _logger = logger; - RecurringJobId = nameof(CreateToBeIssueTaskWorker); - CronExpression = "0 0/1 * * * *"; - TimeZone = TimeZoneInfo.Local; - this._scheduledMeterReadingService = scheduledMeterReadingService; - } +// /// +// /// Initializes a new instance of the class. +// /// +// /// The logger. +// /// 定时任务 +// public CreateToBeIssueTaskWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) +// { +// _logger = logger; +// RecurringJobId = nameof(CreateToBeIssueTaskWorker); +// CronExpression = "0 0/1 * * * *"; +// TimeZone = TimeZoneInfo.Local; +// this._scheduledMeterReadingService = scheduledMeterReadingService; +// } - public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) - { - _logger.LogError($"{DateTime.Now}"); - // await _scheduledMeterReadingService.CreateToBeIssueTasks(); - } - } -} +// public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) +// { +// _logger.LogError($"{DateTime.Now}"); +// // await _scheduledMeterReadingService.CreateToBeIssueTasks(); +// } +// } +//} diff --git a/services/JiShe.CollectBus.Application/Workers/DataDetectionFifteenMinuteWorker.cs b/services/JiShe.CollectBus.Application/Workers/DataDetectionFifteenMinuteWorker.cs index 7e991ce..392c801 100644 --- a/services/JiShe.CollectBus.Application/Workers/DataDetectionFifteenMinuteWorker.cs +++ b/services/JiShe.CollectBus.Application/Workers/DataDetectionFifteenMinuteWorker.cs @@ -1,39 +1,39 @@ -using JiShe.CollectBus.ScheduledMeterReading; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Volo.Abp.BackgroundWorkers.Hangfire; -using Volo.Abp.DependencyInjection; +//using JiShe.CollectBus.ScheduledMeterReading; +//using Microsoft.Extensions.Logging; +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; +//using System.Threading; +//using System.Threading.Tasks; +//using Volo.Abp.BackgroundWorkers.Hangfire; +//using Volo.Abp.DependencyInjection; -namespace JiShe.CollectBus.Workers -{ - /// - /// 定时数据检测1小时一次 - /// - public class DataDetectionFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker - { +//namespace JiShe.CollectBus.Workers +//{ +// /// +// /// 定时数据检测1小时一次 +// /// +// public class DataDetectionFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker +// { - private readonly ILogger _logger; - private readonly IScheduledMeterReadingService _scheduledMeterReadingService; +// private readonly ILogger _logger; +// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; - public DataDetectionFifteenMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) - { - _logger = logger; - RecurringJobId = nameof(CreateToBeIssueTaskWorker); - CronExpression = "0 0 0/1 * * ?"; - TimeZone = TimeZoneInfo.Local; - this._scheduledMeterReadingService = scheduledMeterReadingService; - } +// public DataDetectionFifteenMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) +// { +// _logger = logger; +// RecurringJobId = nameof(CreateToBeIssueTaskWorker); +// CronExpression = "0 0 0/1 * * ?"; +// TimeZone = TimeZoneInfo.Local; +// this._scheduledMeterReadingService = scheduledMeterReadingService; +// } - public override Task DoWorkAsync(CancellationToken cancellationToken = default) - { - //throw new NotImplementedException(); - return Task.CompletedTask; - } - } -} +// public override Task DoWorkAsync(CancellationToken cancellationToken = default) +// { +// //throw new NotImplementedException(); +// return Task.CompletedTask; +// } +// } +//} diff --git a/services/JiShe.CollectBus.Application/Workers/EpiCollectWorker.cs b/services/JiShe.CollectBus.Application/Workers/EpiCollectWorker.cs index 925692e..037e2e2 100644 --- a/services/JiShe.CollectBus.Application/Workers/EpiCollectWorker.cs +++ b/services/JiShe.CollectBus.Application/Workers/EpiCollectWorker.cs @@ -1,39 +1,39 @@ -using System; -using System.Threading; -using System.Threading.Tasks; -using Hangfire; -using JiShe.CollectBus.Common.Attributes; -using Microsoft.Extensions.Logging; -using Volo.Abp.BackgroundWorkers.Hangfire; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Uow; +//using System; +//using System.Threading; +//using System.Threading.Tasks; +//using Hangfire; +//using JiShe.CollectBus.Common.Attributes; +//using Microsoft.Extensions.Logging; +//using Volo.Abp.BackgroundWorkers.Hangfire; +//using Volo.Abp.DependencyInjection; +//using Volo.Abp.Uow; -namespace JiShe.CollectBus.Workers -{ - public class EpiCollectWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker - { - private readonly ILogger _logger; +//namespace JiShe.CollectBus.Workers +//{ +// public class EpiCollectWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker +// { +// private readonly ILogger _logger; - /// - /// Initializes a new instance of the class. - /// - /// The logger. - public EpiCollectWorker(ILogger logger) - { - _logger = logger; - RecurringJobId = nameof(EpiCollectWorker); - CronExpression = Cron.Daily(); +// /// +// /// Initializes a new instance of the class. +// /// +// /// The logger. +// public EpiCollectWorker(ILogger logger) +// { +// _logger = logger; +// RecurringJobId = nameof(EpiCollectWorker); +// CronExpression = Cron.Daily(); - } +// } - public override Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) - { - using (var uow = LazyServiceProvider.LazyGetRequiredService().Begin()) - { - Logger.LogInformation("Executed MyLogWorker..!"); - return Task.CompletedTask; - } - } - } -} +// public override Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) +// { +// using (var uow = LazyServiceProvider.LazyGetRequiredService().Begin()) +// { +// Logger.LogInformation("Executed MyLogWorker..!"); +// return Task.CompletedTask; +// } +// } +// } +//} diff --git a/services/JiShe.CollectBus.Application/Workers/SubscriberFifteenMinuteWorker.cs b/services/JiShe.CollectBus.Application/Workers/SubscriberFifteenMinuteWorker.cs index 005d46b..a7ca7c9 100644 --- a/services/JiShe.CollectBus.Application/Workers/SubscriberFifteenMinuteWorker.cs +++ b/services/JiShe.CollectBus.Application/Workers/SubscriberFifteenMinuteWorker.cs @@ -1,48 +1,48 @@ -using System; -using System.Threading; -using System.Threading.Tasks; -using Hangfire; -using JiShe.CollectBus.ScheduledMeterReading; -using Microsoft.Extensions.Logging; -using Volo.Abp.BackgroundWorkers.Hangfire; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Uow; +//using System; +//using System.Threading; +//using System.Threading.Tasks; +//using Hangfire; +//using JiShe.CollectBus.ScheduledMeterReading; +//using Microsoft.Extensions.Logging; +//using Volo.Abp.BackgroundWorkers.Hangfire; +//using Volo.Abp.DependencyInjection; +//using Volo.Abp.Uow; -namespace JiShe.CollectBus.Workers -{ - /// - /// 15分钟采集数据 - /// - public class SubscriberFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker - { - private readonly ILogger _logger; - private readonly IScheduledMeterReadingService _scheduledMeterReadingService; +//namespace JiShe.CollectBus.Workers +//{ +// /// +// /// 15分钟采集数据 +// /// +// public class SubscriberFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker +// { +// private readonly ILogger _logger; +// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; - /// - /// Initializes a new instance of the class. - /// - /// The logger. - /// 定时任务 - public SubscriberFifteenMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) - { - _logger = logger; - RecurringJobId = nameof(SubscriberFifteenMinuteWorker); - CronExpression = "0 0/15 * * * *"; - TimeZone = TimeZoneInfo.Local; - this._scheduledMeterReadingService = scheduledMeterReadingService; - } +// /// +// /// Initializes a new instance of the class. +// /// +// /// The logger. +// /// 定时任务 +// public SubscriberFifteenMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) +// { +// _logger = logger; +// RecurringJobId = nameof(SubscriberFifteenMinuteWorker); +// CronExpression = "0 0/15 * * * *"; +// TimeZone = TimeZoneInfo.Local; +// this._scheduledMeterReadingService = scheduledMeterReadingService; +// } - public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) - { - //await _scheduledMeterReadingService.AmmeterScheduledMeterFifteenMinuteReading(); - //await _scheduledMeterReadingService.WatermeterScheduledMeterFifteenMinuteReading(); +// public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) +// { +// //await _scheduledMeterReadingService.AmmeterScheduledMeterFifteenMinuteReading(); +// //await _scheduledMeterReadingService.WatermeterScheduledMeterFifteenMinuteReading(); - //using (var uow = LazyServiceProvider.LazyGetRequiredService().Begin()) - //{ - // Logger.LogInformation("Executed MyLogWorker..!"); - // return Task.CompletedTask; - //} - } - } -} +// //using (var uow = LazyServiceProvider.LazyGetRequiredService().Begin()) +// //{ +// // Logger.LogInformation("Executed MyLogWorker..!"); +// // return Task.CompletedTask; +// //} +// } +// } +//} diff --git a/services/JiShe.CollectBus.Application/Workers/SubscriberFiveMinuteWorker.cs b/services/JiShe.CollectBus.Application/Workers/SubscriberFiveMinuteWorker.cs index fbd3668..119421e 100644 --- a/services/JiShe.CollectBus.Application/Workers/SubscriberFiveMinuteWorker.cs +++ b/services/JiShe.CollectBus.Application/Workers/SubscriberFiveMinuteWorker.cs @@ -1,42 +1,42 @@ -using System; -using System.Threading; -using System.Threading.Tasks; -using Hangfire; -using JiShe.CollectBus.ScheduledMeterReading; -using Microsoft.Extensions.Logging; -using Volo.Abp.BackgroundWorkers.Hangfire; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Uow; +//using System; +//using System.Threading; +//using System.Threading.Tasks; +//using Hangfire; +//using JiShe.CollectBus.ScheduledMeterReading; +//using Microsoft.Extensions.Logging; +//using Volo.Abp.BackgroundWorkers.Hangfire; +//using Volo.Abp.DependencyInjection; +//using Volo.Abp.Uow; -namespace JiShe.CollectBus.Workers -{ - /// - /// 5分钟采集数据 - /// - public class SubscriberFiveMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker - { - private readonly ILogger _logger; - private readonly IScheduledMeterReadingService _scheduledMeterReadingService; +//namespace JiShe.CollectBus.Workers +//{ +// /// +// /// 5分钟采集数据 +// /// +// public class SubscriberFiveMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker +// { +// private readonly ILogger _logger; +// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; - /// - /// Initializes a new instance of the class. - /// - /// The logger. - /// 定时任务 - public SubscriberFiveMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) - { - _logger = logger; - RecurringJobId = nameof(SubscriberFiveMinuteWorker); - CronExpression = "0 0/5 * * * *"; - TimeZone = TimeZoneInfo.Local; - this._scheduledMeterReadingService = scheduledMeterReadingService; - } +// /// +// /// Initializes a new instance of the class. +// /// +// /// The logger. +// /// 定时任务 +// public SubscriberFiveMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) +// { +// _logger = logger; +// RecurringJobId = nameof(SubscriberFiveMinuteWorker); +// CronExpression = "0 0/5 * * * *"; +// TimeZone = TimeZoneInfo.Local; +// this._scheduledMeterReadingService = scheduledMeterReadingService; +// } - public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) - { - //await _scheduledMeterReadingService.AmmeterScheduledMeterFiveMinuteReading(); - //await _scheduledMeterReadingService.WatermeterScheduledMeterFiveMinuteReading(); - } - } -} +// public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) +// { +// //await _scheduledMeterReadingService.AmmeterScheduledMeterFiveMinuteReading(); +// //await _scheduledMeterReadingService.WatermeterScheduledMeterFiveMinuteReading(); +// } +// } +//} diff --git a/services/JiShe.CollectBus.Application/Workers/SubscriberOneMinuteWorker.cs b/services/JiShe.CollectBus.Application/Workers/SubscriberOneMinuteWorker.cs index e9e0240..419a681 100644 --- a/services/JiShe.CollectBus.Application/Workers/SubscriberOneMinuteWorker.cs +++ b/services/JiShe.CollectBus.Application/Workers/SubscriberOneMinuteWorker.cs @@ -1,44 +1,44 @@ -using System; -using System.Threading; -using System.Threading.Tasks; -using Hangfire; -using JiShe.CollectBus.ScheduledMeterReading; -using Microsoft.Extensions.Logging; -using Volo.Abp.BackgroundWorkers.Hangfire; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Uow; +//using System; +//using System.Threading; +//using System.Threading.Tasks; +//using Hangfire; +//using JiShe.CollectBus.ScheduledMeterReading; +//using Microsoft.Extensions.Logging; +//using Volo.Abp.BackgroundWorkers.Hangfire; +//using Volo.Abp.DependencyInjection; +//using Volo.Abp.Uow; -namespace JiShe.CollectBus.Workers -{ - /// - /// 1分钟采集数据 - /// - public class SubscriberOneMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker - { - private readonly ILogger _logger; - private readonly IScheduledMeterReadingService _scheduledMeterReadingService; +//namespace JiShe.CollectBus.Workers +//{ +// /// +// /// 1分钟采集数据 +// /// +// public class SubscriberOneMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker +// { +// private readonly ILogger _logger; +// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; - /// - /// Initializes a new instance of the class. - /// - /// The logger. - /// 定时任务 - public SubscriberOneMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) - { - _logger = logger; - RecurringJobId = nameof(SubscriberOneMinuteWorker); - CronExpression = "0 0/1 * * * *"; - TimeZone = TimeZoneInfo.Local; - this._scheduledMeterReadingService = scheduledMeterReadingService; - } +// /// +// /// Initializes a new instance of the class. +// /// +// /// The logger. +// /// 定时任务 +// public SubscriberOneMinuteWorker(ILogger logger, IScheduledMeterReadingService scheduledMeterReadingService) +// { +// _logger = logger; +// RecurringJobId = nameof(SubscriberOneMinuteWorker); +// CronExpression = "0 0/1 * * * *"; +// TimeZone = TimeZoneInfo.Local; +// this._scheduledMeterReadingService = scheduledMeterReadingService; +// } - public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) - { - //await _scheduledMeterReadingService.AmmeterScheduledMeterOneMinuteReading(); +// public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) +// { +// //await _scheduledMeterReadingService.AmmeterScheduledMeterOneMinuteReading(); - //await _scheduledMeterReadingService.WatermeterScheduledMeterOneMinuteReading(); +// //await _scheduledMeterReadingService.WatermeterScheduledMeterOneMinuteReading(); - } - } -} +// } +// } +//} diff --git a/services/JiShe.CollectBus.Domain/IotSystems/LogRecord/LogRecords.cs b/services/JiShe.CollectBus.Domain/IotSystems/LogRecord/LogRecords.cs new file mode 100644 index 0000000..2a18a02 --- /dev/null +++ b/services/JiShe.CollectBus.Domain/IotSystems/LogRecord/LogRecords.cs @@ -0,0 +1,99 @@ +using JiShe.CollectBus.Common.Enums; +using MongoDB.Bson.Serialization.Attributes; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Entities; + +namespace JiShe.CollectBus.IotSystems.LogRecord +{ + /// + /// 日志记录集合 + /// + public class LogRecords : AggregateRoot + { + /// + /// 集中器地址 + /// + public string Code { get; set; } = null!; + + /// + /// AFN功能码 + /// + public int AFN { get; set; } + + /// + /// 信息点 + /// + public int Pn { get; set; } + + /// + /// 信息类 + /// + public int Fn { get; set; } + + /// + /// 主站地址 MSA + /// + public int MSA { get; set; } + + /// + /// 响应帧序号 + /// + public int PSEQ { get; set; } + + /// + /// 响应帧 + /// + public string? ReceivedHexMessage { get; set; } = null; + + /// + /// 发送帧 + /// + public string? SendHexMessage { get; set; } = null; + + /// + /// 消息ID + /// + public string? MessageId { get; set; } + + /// + /// 消息时间 + /// + [BsonDateTimeOptions(Kind = DateTimeKind.Local)] + public DateTime? ReceivedTime { get; set; } + + /// + /// 采集密度 + /// + public int TimeDensity { get; set; } + + /// + /// 采集密度单位 + /// + public DensityUnit DensityUnit { get; set; } = DensityUnit.None; + + /// + /// 项目ID + /// + public int ProjectId { get; set; } + + /// + /// 集中器ID + /// + public int FocusId { get; set; } + + /// + /// 数据 + /// + //public object? Data { get; set;} + + /// + /// 创建时间 + /// + [BsonDateTimeOptions(Kind = DateTimeKind.Local)] + public DateTime CreationTime { get; set; }=DateTime.Now; + } +} diff --git a/services/JiShe.CollectBus.Domain/JiShe.CollectBus.Domain.csproj b/services/JiShe.CollectBus.Domain/JiShe.CollectBus.Domain.csproj index f8880ec..e69f3b6 100644 --- a/services/JiShe.CollectBus.Domain/JiShe.CollectBus.Domain.csproj +++ b/services/JiShe.CollectBus.Domain/JiShe.CollectBus.Domain.csproj @@ -26,11 +26,11 @@ - + + diff --git a/services/JiShe.CollectBus.Domain/Protocol3761/Dto/AFN10_F66_AnalysisDto.cs b/services/JiShe.CollectBus.Domain/Protocol3761/Dto/AFN10_F66_AnalysisDto.cs index c3c8306..8a5853a 100644 --- a/services/JiShe.CollectBus.Domain/Protocol3761/Dto/AFN10_F66_AnalysisDto.cs +++ b/services/JiShe.CollectBus.Domain/Protocol3761/Dto/AFN10_F66_AnalysisDto.cs @@ -29,10 +29,6 @@ namespace JiShe.CollectBus.Protocol.Contracts.Protocol.Dto /// public int CurveRatio { get; set; } - /// - /// 任务号 - /// - public int Pn { get; set; } public List Details { get; set; } = new List(); } diff --git a/services/JiShe.CollectBus.Domain/Protocol3761/Dto/UnitDataAnalysis.cs b/services/JiShe.CollectBus.Domain/Protocol3761/Dto/UnitDataAnalysis.cs index 476a0db..d338693 100644 --- a/services/JiShe.CollectBus.Domain/Protocol3761/Dto/UnitDataAnalysis.cs +++ b/services/JiShe.CollectBus.Domain/Protocol3761/Dto/UnitDataAnalysis.cs @@ -1,5 +1,6 @@ using JiShe.CollectBus.Common.Enums; using System; +using System.Collections.Generic; namespace JiShe.CollectBus.Protocol.Dto { @@ -38,7 +39,7 @@ namespace JiShe.CollectBus.Protocol.Dto /// /// 响应帧 /// - public string? HexMessage { get; set; } = null; + public string? ReceivedHexMessage { get; set; } = null; /// /// 消息ID @@ -59,7 +60,6 @@ namespace JiShe.CollectBus.Protocol.Dto /// 采集密度单位 /// public DensityUnit DensityUnit { get; set; }= DensityUnit.Minute; - } public class UnitDataAnalysis: UnitDataAnalysis diff --git a/shared/JiShe.CollectBus.Common/Consts/T37612012PacketItemCodeConst.cs b/shared/JiShe.CollectBus.Common/Consts/T37612012PacketItemCodeConst.cs index 1d93ff8..35c457e 100644 --- a/shared/JiShe.CollectBus.Common/Consts/T37612012PacketItemCodeConst.cs +++ b/shared/JiShe.CollectBus.Common/Consts/T37612012PacketItemCodeConst.cs @@ -169,10 +169,6 @@ namespace JiShe.CollectBus.Common.Consts /// public const string FrameData = "FrameData"; - /// - /// 备注 - /// - public const string Remark="Remark"; } #endregion } diff --git a/shared/JiShe.CollectBus.Common/Enums/TableTimeStrategyEnum.cs b/shared/JiShe.CollectBus.Common/Enums/TableTimeStrategyEnum.cs new file mode 100644 index 0000000..db065af --- /dev/null +++ b/shared/JiShe.CollectBus.Common/Enums/TableTimeStrategyEnum.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JiShe.CollectBus.Common.Enums +{ + /// + /// 分表策略枚举 + /// + public enum TableTimeStrategyEnum + { + /// + /// 按分钟分表 + /// + MinuteShardingStrategy = 0, + + /// + /// 按小时分表 + /// + HourShardingStrategy = 1, + /// + /// 按天分表 + /// + DayShardingStrategy = 2, + /// + /// 按月分表 + /// + MonthShardingStrategy = 3, + /// + /// 按年分表 + /// + YearShardingStrategy = 4 + } +} diff --git a/shared/JiShe.CollectBus.Common/Extensions/DateTimeExtensions.cs b/shared/JiShe.CollectBus.Common/Extensions/DateTimeExtensions.cs index d7e12e3..3254edc 100644 --- a/shared/JiShe.CollectBus.Common/Extensions/DateTimeExtensions.cs +++ b/shared/JiShe.CollectBus.Common/Extensions/DateTimeExtensions.cs @@ -1,4 +1,5 @@ -using System; +using JiShe.CollectBus.Common.Enums; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; @@ -173,13 +174,24 @@ namespace JiShe.CollectBus.Common.Extensions /// /// /// - public static string GetDataTableShardingStrategy(this DateTime dateTime) + public static string GetDataTableShardingStrategy(this DateTime dateTime, TableTimeStrategyEnum tableStrategy) { -#if DEBUG - return $"{dateTime:yyyyMMddHHmm}"; -#else - return $"{dateTime:yyyyMMddHH}"; -#endif + switch (tableStrategy) + { + case TableTimeStrategyEnum.MinuteShardingStrategy: + return $"{dateTime:yyyyMMddHHmm}"; + case TableTimeStrategyEnum.HourShardingStrategy: + return $"{dateTime:yyyyMMddHH}"; + case TableTimeStrategyEnum.DayShardingStrategy: + return $"{dateTime:yyyyMMdd}"; + case TableTimeStrategyEnum.MonthShardingStrategy: + return $"{dateTime:yyyyMM}"; + case TableTimeStrategyEnum.YearShardingStrategy: + return $"{dateTime:yyyy}"; + default: + return $""; // 默认不分表 + + } } diff --git a/web/JiShe.CollectBus.Host/CollectBusHostModule.Configure.cs b/web/JiShe.CollectBus.Host/CollectBusHostModule.Configure.cs index e6f1e7e..696307c 100644 --- a/web/JiShe.CollectBus.Host/CollectBusHostModule.Configure.cs +++ b/web/JiShe.CollectBus.Host/CollectBusHostModule.Configure.cs @@ -37,7 +37,7 @@ namespace JiShe.CollectBus.Host Db = context.Services.GetConfiguration().GetValue("Redis:HangfireDB") }; - Configure(options => { options.IsJobExecutionEnabled = true; }); + Configure(options => { options.IsJobExecutionEnabled = false; }); context.Services.AddHangfire(config => { diff --git a/web/JiShe.CollectBus.Host/Pages/Monitor.cshtml b/web/JiShe.CollectBus.Host/Pages/Monitor.cshtml index 9509b08..9c23d54 100644 --- a/web/JiShe.CollectBus.Host/Pages/Monitor.cshtml +++ b/web/JiShe.CollectBus.Host/Pages/Monitor.cshtml @@ -16,6 +16,7 @@ 后端服务 + diff --git a/web/JiShe.CollectBus.Host/appsettings.json b/web/JiShe.CollectBus.Host/appsettings.json index 43f1723..89c0175 100644 --- a/web/JiShe.CollectBus.Host/appsettings.json +++ b/web/JiShe.CollectBus.Host/appsettings.json @@ -44,7 +44,7 @@ "Configuration": "192.168.1.9:6380,password=1q2w3e!@#,syncTimeout=30000,abortConnect=false,connectTimeout=30000,allowAdmin=true", "MaxPoolSize": "50", "DefaultDB": "14", - "HangfireDB": "13" + "HangfireDB": "9" }, "Jwt": { "Audience": "JiShe.CollectBus", @@ -53,7 +53,7 @@ "ExpirationTime": 2 }, "HealthChecks": { - "IsEnable": true, + "IsEnable": false, "HealthCheckDatabaseName": "HealthChecks", "EvaluationTimeInSeconds": 10, "MinimumSecondsBetweenFailureNotifications": 60 @@ -141,7 +141,7 @@ } }, "ServerApplicationOptions": { - "ServerTagName": "JiSheCollectBus4", + "ServerTagName": "JiSheCollectBus99", "SystemType": "Energy", "FirstCollectionTime": "2025-04-28 15:07:00", "AutomaticVerificationTime": "16:07:00",