Compare commits

..

No commits in common. "3ca548ef9638dd57b8764b04d0ad2fd45ba7d016" and "cf9bf6c210687638d0872fb0c3b40ca43d75f3f0" have entirely different histories.

110 changed files with 509 additions and 1548 deletions

View File

@ -157,7 +157,7 @@ public class AdminClientService : IAdminClientService, IDisposable, ISingletonDe
adminClientConfig.SecurityProtocol = SecurityProtocol.SaslPlaintext; adminClientConfig.SecurityProtocol = SecurityProtocol.SaslPlaintext;
adminClientConfig.SaslMechanism = SaslMechanism.Plain; adminClientConfig.SaslMechanism = SaslMechanism.Plain;
adminClientConfig.SaslUsername = _kafkaOptionConfig.SaslUserName; adminClientConfig.SaslUsername = _kafkaOptionConfig.SaslUserName;
adminClientConfig.SaslPassword = _kafkaOptionConfig.SaslPassword; adminClientConfig.SaslPassword = _kafkaOptionConfig.SaslUserName;
} }
return new AdminClientBuilder(adminClientConfig).Build(); return new AdminClientBuilder(adminClientConfig).Build();
} }

View File

@ -21,10 +21,6 @@ namespace JiShe.CollectBus.Kafka
public static class KafkaSubscribeExtensions 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) public static void UseInitKafkaTopic(this IServiceProvider provider)
{ {
//初始化主题信息 //初始化主题信息
@ -50,12 +46,12 @@ namespace JiShe.CollectBus.Kafka
lifetime.ApplicationStarted.Register(() => lifetime.ApplicationStarted.Register(() =>
{ {
var logger = provider.GetRequiredService<ILogger<CollectBusKafkaModule>>(); var logger = provider.GetRequiredService<ILogger<CollectBusKafkaModule>>();
//var threadCount = 0; var threadCount = 0;
//var topicCount = 0; var topicCount = 0;
var assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location); var assemblyPath = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location);
if (string.IsNullOrWhiteSpace(assemblyPath)) if (string.IsNullOrWhiteSpace(assemblyPath))
{ {
logger.LogWarning($"kafka订阅未能找到程序路径"); logger.LogInformation($"kafka订阅未能找到程序路径");
return; return;
} }
var dllFiles = Directory.GetFiles(assemblyPath, "*.dll"); var dllFiles = Directory.GetFiles(assemblyPath, "*.dll");
@ -73,35 +69,21 @@ namespace JiShe.CollectBus.Kafka
if (subscribeTypes.Count == 0) if (subscribeTypes.Count == 0)
continue; continue;
// 并行处理 foreach (var subscribeType in subscribeTypes)
Parallel.ForEach(subscribeTypes, subscribeType =>
{ {
var subscribes = provider.GetServices(subscribeType).ToList(); var subscribes = provider.GetServices(subscribeType).ToList();
Parallel.ForEach(subscribes,subscribe => subscribes.ForEach(subscribe =>
{ {
if (subscribe != null) if (subscribe != null)
{ {
Tuple<int, int> tuple = BuildKafkaSubscribe(subscribe, provider, logger, kafkaOptions.Value); Tuple<int, int> tuple = BuildKafkaSubscribe(subscribe, provider, logger, kafkaOptions.Value);
//threadCount += tuple.Item1; threadCount += tuple.Item1;
//topicCount += tuple.Item2; topicCount += tuple.Item2;
} }
}); });
}); }
//foreach (var subscribeType in subscribeTypes)
//{
// var subscribes = provider.GetServices(subscribeType).ToList();
// subscribes.ForEach(subscribe =>
// {
// if (subscribe != null)
// {
// Tuple<int, int> tuple = BuildKafkaSubscribe(subscribe, provider, logger, kafkaOptions.Value);
// threadCount += tuple.Item1;
// topicCount += tuple.Item2;
// }
// });
//}
} }
logger.LogWarning($"kafka订阅主题:{_topicSubscribeCount}数,共启动:{_threadCount}线程"); logger.LogInformation($"kafka订阅主题:{topicCount}数,共启动:{threadCount}线程");
}); });
} }
@ -153,50 +135,22 @@ namespace JiShe.CollectBus.Kafka
//var configuration = provider.GetRequiredService<IConfiguration>(); //var configuration = provider.GetRequiredService<IConfiguration>();
int threadCount = 0; int threadCount = 0;
Parallel.ForEach(subscribedMethods, sub => foreach (var sub in subscribedMethods)
{ {
Interlocked.Increment(ref _topicSubscribeCount); int partitionCount = sub.Attribute!.TaskCount==-1?3: sub.Attribute!.TaskCount;// kafkaOptionConfig.NumPartitions;
int partitionCount = sub.Attribute!.TaskCount == -1 ? 3 : sub.Attribute!.TaskCount;// kafkaOptionConfig.NumPartitions;
var adminClientService = provider.GetRequiredService<IAdminClientService>(); var adminClientService = provider.GetRequiredService<IAdminClientService>();
int topicCount = adminClientService.GetTopicPartitionsNum(sub.Attribute!.Topic); 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 = partitionCount > topicCount ? topicCount : partitionCount;
//partitionCount = sub.Attribute!.TaskCount == -1 ? adminClientService.GetTopicPartitionsNum(sub.Attribute!.Topic) : sub.Attribute!.TaskCount; //partitionCount = sub.Attribute!.TaskCount == -1 ? adminClientService.GetTopicPartitionsNum(sub.Attribute!.Topic) : sub.Attribute!.TaskCount;
if (partitionCount <= 0) if (partitionCount <= 0)
partitionCount = 1; partitionCount = 1;
Parallel.For(0,partitionCount, async (partition) => for (int i = 0; i < partitionCount; i++)
{ {
Interlocked.Increment(ref _threadCount); //if (sub.Attribute!.Topic == ProtocolConst.SubscriberLoginReceivedEventName)
//Task.Run(() => StartConsumerAsync(provider, sub.Attribute!, sub.Method, subscribe, logger)); Task.Run(() => StartConsumerAsync(provider, sub.Attribute!, sub.Method, subscribe, logger));
//threadCount++; 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<IAdminClientService>();
// 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); return Tuple.Create(threadCount, subscribedMethods.Length);
} }
@ -209,8 +163,6 @@ namespace JiShe.CollectBus.Kafka
if (attr.EnableBatch) if (attr.EnableBatch)
{ {
Interlocked.Increment(ref _threadStartCount);
logger.LogInformation($"kafka开启线程消费:{_threadStartCount}");
await consumerService.SubscribeBatchAsync<dynamic>(attr.Topic, async (message) => await consumerService.SubscribeBatchAsync<dynamic>(attr.Topic, async (message) =>
{ {
try try
@ -231,8 +183,6 @@ namespace JiShe.CollectBus.Kafka
} }
else else
{ {
Interlocked.Increment(ref _threadStartCount);
logger.LogInformation($"kafka开启线程消费:{_threadStartCount}");
await consumerService.SubscribeAsync<dynamic>(attr.Topic, async (message) => await consumerService.SubscribeAsync<dynamic>(attr.Topic, async (message) =>
{ {
try try

View File

@ -13,7 +13,6 @@ using JiShe.CollectBus.IotSystems.MessageIssueds;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.MongoDB; using Volo.Abp.MongoDB;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using JiShe.CollectBus.IotSystems.LogRecord;
namespace JiShe.CollectBus.MongoDB; namespace JiShe.CollectBus.MongoDB;
@ -34,6 +33,7 @@ public class CollectBusMongoDbContext : AbpMongoDbContext, ICollectBusMongoDbCon
public IMongoCollection<MessageIssued> MessageIssueds => Collection<MessageIssued>(); public IMongoCollection<MessageIssued> MessageIssueds => Collection<MessageIssued>();
protected override void CreateModel(IMongoModelBuilder modelBuilder) protected override void CreateModel(IMongoModelBuilder modelBuilder)
{ {
//modelBuilder.Entity<MeterReadingRecords>(builder => //modelBuilder.Entity<MeterReadingRecords>(builder =>

View File

@ -1,7 +1,5 @@
using JiShe.CollectBus.IotSystems.LogRecord; using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using JiShe.CollectBus.Repository; using JiShe.CollectBus.Repository;
using JiShe.CollectBus.Repository.LogRecord;
using JiShe.CollectBus.Repository.MeterReadingRecord; using JiShe.CollectBus.Repository.MeterReadingRecord;
using JiShe.CollectBus.ShardingStrategy; using JiShe.CollectBus.ShardingStrategy;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -37,14 +35,10 @@ public class CollectBusMongoDbModule : AbpModule
typeof(IShardingStrategy<>), typeof(IShardingStrategy<>),
typeof(DayShardingStrategy<>)); typeof(DayShardingStrategy<>));
context.Services.AddTransient(typeof(HourShardingStrategy<>));
//// 分表策略仓储 替换默认仓储 //// 分表策略仓储 替换默认仓储
//options.AddRepository<MeterReadingRecords, MeterReadingRecordRepository>(); //options.AddRepository<MeterReadingRecords, MeterReadingRecordRepository>();
options.AddRepository<LogRecords, LogRecordRepository>();
}); });
context.Services.AddAlwaysDisableUnitOfWorkTransaction(); context.Services.AddAlwaysDisableUnitOfWorkTransaction();
Configure<AbpUnitOfWorkDefaultOptions>(options => Configure<AbpUnitOfWorkDefaultOptions>(options =>
{ {

View File

@ -1,57 +0,0 @@
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<LogRecords, Guid>
{
/// <summary>
/// 批量插入
/// </summary>
/// <param name="entities"></param>
/// <param name="dateTime"></param>
/// <returns></returns>
Task InsertManyAsync(List<LogRecords> entities,
DateTime? dateTime);
/// <summary>
/// 单个插入
/// </summary>
/// <param name="entity"></param>
/// <param name="dateTime"></param>
/// <returns></returns>
Task<LogRecords> InsertAsync(LogRecords entity, DateTime? dateTime);
/// <summary>
/// 单条更新
/// </summary>
/// <param name="filter">过滤条件示例Builders<LogRecords>.Filter.Eq(x => x.Id, filter.Id)</param>
/// <param name="update">包含待更新的内容示例Builders<LogRecords>.Update.Set(x => x.SendHexMessage, SendHexMessage).Set(x => x.MessageId, MessageId)</param>
/// <param name="entity">数据实体,用于获取对应的分片库</param>
/// <returns></returns>
Task<LogRecords> UpdateOneAsync(FilterDefinition<LogRecords> filter, UpdateDefinition<LogRecords> update, LogRecords entity);
/// <summary>
/// 单个获取
/// </summary>
/// <param name="entity"></param>
/// <param name="dateTime"></param>
/// <returns></returns>
Task<LogRecords> FirOrDefaultAsync(LogRecords entity, DateTime dateTime);
/// <summary>
/// 多集合数据查询
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
Task<List<LogRecords>> ParallelQueryAsync(DateTime startTime, DateTime endTime);
}
}

View File

@ -1,166 +0,0 @@
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<CollectBusMongoDbContext, LogRecords, Guid>, ILogRecordRepository
{
private readonly HourShardingStrategy<LogRecords> _hourShardingStrategy;
private readonly IMongoDbContextProvider<CollectBusMongoDbContext> _dbContextProvider;
public LogRecordRepository(
IMongoDbContextProvider<CollectBusMongoDbContext> dbContextProvider,
HourShardingStrategy<LogRecords> hourShardingStrategy
)
: base(dbContextProvider)
{
_dbContextProvider = dbContextProvider;
_hourShardingStrategy = hourShardingStrategy;
}
/// <summary>
/// 批量插入
/// </summary>
/// <param name="entities"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public override async Task<IEnumerable<LogRecords>> InsertManyAsync(IEnumerable<LogRecords> entities, bool autoSave = false, CancellationToken cancellationToken = default(CancellationToken))
{
var collection = await GetShardedCollection(DateTime.Now);
await collection.InsertManyAsync(entities);
return entities;
}
/// <summary>
/// 批量插入
/// </summary>
/// <param name="entities"></param>
/// <param name="dateTime"></param>
/// <returns></returns>
public async Task InsertManyAsync(List<LogRecords> entities, DateTime? dateTime)
{
var collection = await GetShardedCollection(dateTime);
await collection.InsertManyAsync(entities);
}
/// <summary>
/// 单条插入
/// </summary>
/// <param name="entity"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public override async Task<LogRecords> InsertAsync(LogRecords entity, bool autoSave = false, CancellationToken cancellationToken = default(CancellationToken))
{
var collection = await GetShardedCollection(DateTime.Now);
await collection.InsertOneAsync(entity);
return entity;
}
/// <summary>
/// 单条插入
/// </summary>
/// <param name="entity"></param>
/// <param name="dateTime"></param>
/// <returns></returns>
public async Task<LogRecords> InsertAsync(LogRecords entity, DateTime? dateTime)
{
var collection = await GetShardedCollection(dateTime);
await collection.InsertOneAsync(entity);
return entity;
}
/// <summary>
/// 单条更新
/// </summary>
/// <param name="filter">过滤条件示例Builders<LogRecords>.Filter.Eq(x => x.Id, filter.Id)</param>
/// <param name="update">包含待更新的内容示例Builders<LogRecords>.Update.Set(x => x.SendHexMessage, SendHexMessage).Set(x => x.MessageId, MessageId)</param>
/// <param name="entity">数据实体,用于获取对应的分片库</param>
/// <returns></returns>
public async Task<LogRecords> UpdateOneAsync(FilterDefinition<LogRecords> filter, UpdateDefinition<LogRecords> update, LogRecords entity)
{
var collection = await GetShardedCollection(entity.CreationTime);
await collection.UpdateOneAsync(filter, update);
return entity;
}
/// <summary>
/// 单个获取
/// </summary>
/// <param name="entity"></param>
/// <param name="dateTime"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<LogRecords> 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();
}
/// <summary>
/// 多集合数据查询
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public async Task<List<LogRecords>> 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<LogRecords>(name);
var filter = Builders<LogRecords>.Filter.And(
Builders<LogRecords>.Filter.Gte(x => x.CreationTime, startTime),
Builders<LogRecords>.Filter.Lte(x => x.CreationTime, endTime)
);
return await collection.Find(filter).ToListAsync();
});
var results = await Task.WhenAll(tasks);
return results.SelectMany(r => r).ToList();
}
/// <summary>
/// 获得分片集合
/// </summary>
/// <returns></returns>
private async Task<IMongoCollection<LogRecords>> 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<LogRecords>(collectionName);
}
}
}

View File

@ -1,5 +1,4 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Extensions;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -23,7 +22,7 @@ namespace JiShe.CollectBus.ShardingStrategy
public string GetCollectionName(DateTime dateTime) public string GetCollectionName(DateTime dateTime)
{ {
var baseName = typeof(TEntity).Name; var baseName = typeof(TEntity).Name;
return $"{baseName}_{dateTime.GetDataTableShardingStrategy(TableTimeStrategyEnum.DayShardingStrategy)}"; return $"{baseName}_{dateTime.GetDataTableShardingStrategy()}";
} }
/// <summary> /// <summary>
@ -33,7 +32,7 @@ namespace JiShe.CollectBus.ShardingStrategy
public string GetCurrentCollectionName() public string GetCurrentCollectionName()
{ {
var baseName = typeof(TEntity).Name; var baseName = typeof(TEntity).Name;
return $"{baseName}_{DateTime.Now.GetDataTableShardingStrategy(TableTimeStrategyEnum.DayShardingStrategy)}"; return $"{baseName}_{DateTime.Now.GetDataTableShardingStrategy()}";
} }
/// <summary> /// <summary>
@ -51,7 +50,7 @@ namespace JiShe.CollectBus.ShardingStrategy
while (current <= end) while (current <= end)
{ {
months.Add($"{baseName}_{current.GetDataTableShardingStrategy(TableTimeStrategyEnum.DayShardingStrategy)}"); months.Add($"{baseName}_{current.GetDataTableShardingStrategy()}");
current = current.AddMonths(1); current = current.AddMonths(1);
} }

View File

@ -1,58 +0,0 @@
using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
namespace JiShe.CollectBus.ShardingStrategy
{
/// <summary>
/// 按小时分表
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public class HourShardingStrategy<TEntity>
{
/// <summary>
/// 获取指定时间对应的集合名
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public string GetCollectionName(DateTime dateTime)
{
var baseName = typeof(TEntity).Name;
return $"{baseName}_{dateTime.GetDataTableShardingStrategy(TableTimeStrategyEnum.HourShardingStrategy)}";
}
/// <summary>
/// 获取当前时间对应的集合名
/// </summary>
/// <returns></returns>
public string GetCurrentCollectionName()
{
var baseName = typeof(TEntity).Name;
return $"{baseName}_{DateTime.Now.GetDataTableShardingStrategy(TableTimeStrategyEnum.HourShardingStrategy)}";
}
/// <summary>
/// 用于查询时确定目标集合
/// </summary>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public IEnumerable<string> GetQueryCollectionNames(DateTime? startTime, DateTime? endTime)
{
var list = new List<string>();
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();
}
}
}

View File

@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JiShe.CollectBus.ShardingStrategy
{
public interface IHourShardingStrategy<TEntity> : IShardingStrategy<TEntity>
{
}
}

View File

@ -1,6 +1,4 @@
using JiShe.CollectBus.Common.Enums; 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.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
@ -14,57 +12,39 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H
public class AFN0_F1_Analysis: IAnalysisStrategy<TB3761> public class AFN0_F1_Analysis: IAnalysisStrategy<TB3761>
{ {
private readonly ILogger<AFN0_F1_Analysis> _logger; private readonly ILogger<AFN0_F1_Analysis> _logger;
private readonly DataStorage _dataStorage;
public AFN0_F1_Analysis(ILogger<AFN0_F1_Analysis> logger, DataStorage dataStorage) public AFN0_F1_Analysis(ILogger<AFN0_F1_Analysis> logger)
{ {
_logger = logger; _logger = logger;
_dataStorage= dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{ {
try try
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.A.Code); ArgumentNullException.ThrowIfNull(input.A.Code);
var data = new AnalysisBaseDto<bool?>() UnitDataAnalysis<bool> dto = new UnitDataAnalysis<bool>
{
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<AnalysisBaseDto<bool?>> dto = new UnitDataAnalysis<AnalysisBaseDto<bool?>>
{ {
Code = input.A.Code, Code = input.A.Code,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = true,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
TimeDensity = -1 TimeDensity = -1
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync<bool?>(dto); return Task.FromResult(true);
return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, $"00_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); _logger.LogError(ex, $"00_1解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}");
} }
return await Task.FromResult(false); return Task.FromResult(false);
} }
} }

View File

@ -1,6 +1,4 @@
using JiShe.CollectBus.Common.Enums; 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.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
@ -14,41 +12,25 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H
public class AFN0_F2_Analysis : IAnalysisStrategy<TB3761> public class AFN0_F2_Analysis : IAnalysisStrategy<TB3761>
{ {
private readonly ILogger<AFN0_F2_Analysis> _logger; private readonly ILogger<AFN0_F2_Analysis> _logger;
private readonly DataStorage _dataStorage;
public AFN0_F2_Analysis(ILogger<AFN0_F2_Analysis> logger, DataStorage dataStorage) public AFN0_F2_Analysis(ILogger<AFN0_F2_Analysis> logger)
{ {
_logger = logger; _logger = logger;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{ {
try try
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.A.Code); ArgumentNullException.ThrowIfNull(input.A.Code);
var data = new AnalysisBaseDto<bool?>() UnitDataAnalysis<bool> dto = new UnitDataAnalysis<bool>
{
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<AnalysisBaseDto<bool?>> dto = new UnitDataAnalysis<AnalysisBaseDto<bool?>>
{ {
Code = input.A.Code, Code = input.A.Code,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = false,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime =input.ReceivedTime, ReceivedTime =input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
@ -58,14 +40,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H
#if DEBUG #if DEBUG
_logger.LogWarning($"全部否认:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString}"); _logger.LogWarning($"全部否认:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString}");
#endif #endif
await _dataStorage.SaveDataToIotDbAsync<bool?>(dto); return Task.FromResult(true);
return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, $"00_2解析失败:{input.A.Code}-{input.DT.Fn}-{input.BaseHexMessage.HexMessageString},{ex.Message}"); _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);
} }

View File

@ -3,8 +3,16 @@ using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_00H;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; 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 namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
{ {
@ -50,7 +58,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,

View File

@ -5,6 +5,11 @@ using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; 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 namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
{ {
@ -50,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,

View File

@ -5,6 +5,11 @@ using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; 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 namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
{ {
@ -50,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_02H
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,

View File

@ -1,11 +1,9 @@
using System.Text; using System.Text;
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -18,60 +16,41 @@ namespace JiShe.CollectBus.Protocol.AnalysisData.AFN_09H
{ {
private readonly ILogger<AFN9_F1_Analysis> _logger; private readonly ILogger<AFN9_F1_Analysis> _logger;
private readonly DataStorage _dataStorage; public AFN9_F1_Analysis(ILogger<AFN9_F1_Analysis> logger)
public AFN9_F1_Analysis(ILogger<AFN9_F1_Analysis> logger, DataStorage dataStorage)
{ {
_logger = logger; _logger = logger;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{ {
try try
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList);
var version = AnalysisDataUnit(input.UnitData.HexMessageList); var data = AnalysisDataUnit(input.UnitData.HexMessageList);
version.AreaCode = input.A.Code?.Substring(0, 4); data.AreaCode = input.A.Code?.Substring(0, 4);
version.Address = input.A.Code?.Substring(4, 5); data.Address = input.A.Code?.Substring(4, 5);
var data = new AnalysisBaseDto<AFN9_F1_AnalysisDto?>() UnitDataAnalysis<AFN9_F1_AnalysisDto> dto = new UnitDataAnalysis<AFN9_F1_AnalysisDto>
{
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<AnalysisBaseDto<AFN9_F1_AnalysisDto?>> dto = new UnitDataAnalysis<AnalysisBaseDto<AFN9_F1_AnalysisDto?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
TimeDensity = -1 TimeDensity = -1
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync(dto); return Task.FromResult(true);
return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, $"09_1解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); _logger.LogError(ex, $"09_1解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}");
} }
return await Task.FromResult(false); return Task.FromResult(false);
} }
private AFN9_F1_AnalysisDto AnalysisDataUnit(List<string> hexMessageList) private AFN9_F1_AnalysisDto AnalysisDataUnit(List<string> hexMessageList)

View File

@ -1,8 +1,6 @@
using System.Text; using System.Text;
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; 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.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
@ -16,57 +14,39 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_09H
public class AFN9_F9_Analysis : IAnalysisStrategy<TB3761> public class AFN9_F9_Analysis : IAnalysisStrategy<TB3761>
{ {
private readonly ILogger<AFN9_F9_Analysis> _logger; private readonly ILogger<AFN9_F9_Analysis> _logger;
private readonly DataStorage _dataStorage;
public AFN9_F9_Analysis(ILogger<AFN9_F9_Analysis> logger, DataStorage dataStorage) public AFN9_F9_Analysis(ILogger<AFN9_F9_Analysis> logger)
{ {
_logger = logger; _logger = logger;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{ {
try try
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList);
var data = new AnalysisBaseDto<string?>() UnitDataAnalysis<string> dto = new UnitDataAnalysis<string>
{
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<AnalysisBaseDto<string?>> dto = new UnitDataAnalysis<AnalysisBaseDto<string?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, //SIM卡 Data = Encoding.ASCII.GetString(string.Join("", input.UnitData.HexMessageList.Skip(30).Take(20).ToList()).HexToByte()).Replace("\0", ""), //SIM卡
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
TimeDensity = -1 TimeDensity = -1
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync(dto); return Task.FromResult(true);
return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, $"00_1解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); _logger.LogError(ex, $"00_1解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}");
} }
return await Task.FromResult(false); return Task.FromResult(false);
} }
} }
} }

View File

@ -1,6 +1,5 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
@ -16,61 +15,42 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH
{ {
private readonly ILogger<AFN10_F10_Analysis> _logger; private readonly ILogger<AFN10_F10_Analysis> _logger;
private readonly DataStorage _dataStorage; public AFN10_F10_Analysis(ILogger<AFN10_F10_Analysis> logger)
public AFN10_F10_Analysis(ILogger<AFN10_F10_Analysis> logger, DataStorage dataStorage)
{ {
_logger = logger; _logger = logger;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{ {
try try
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList);
Tuple<int, List<AFN10F10Entity>> tuple = AFN10F10EntityAnalysis(input.UnitData.HexMessageList); Tuple<int, List<AFN10F10Entity>> tuple = AFN10F10EntityAnalysis(input.UnitData.HexMessageList);
UnitDataAnalysis<AFN10_F10_AnalysisDto> dto = new UnitDataAnalysis<AFN10_F10_AnalysisDto>
var data = new AnalysisBaseDto<AFN10_F10_AnalysisDto?>()
{
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<AnalysisBaseDto<AFN10_F10_AnalysisDto?>> dto = new UnitDataAnalysis<AnalysisBaseDto<AFN10_F10_AnalysisDto?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = new AFN10_F10_AnalysisDto()
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, {
AFN10F10Entitys = tuple.Item2,
ConfigNum = tuple.Item1
},
HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
TimeDensity = -1 TimeDensity = -1
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync<AFN10_F10_AnalysisDto?>(dto); return Task.FromResult(true);
return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, $"0A_10解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); _logger.LogError(ex, $"0A_10解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}");
} }
return await Task.FromResult(false); return Task.FromResult(false);
} }
public Tuple<int, List<AFN10F10Entity>> AFN10F10EntityAnalysis(List<string> hexMessageList) public Tuple<int, List<AFN10F10Entity>> AFN10F10EntityAnalysis(List<string> hexMessageList)

View File

@ -1,13 +1,11 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH
{ {
@ -18,12 +16,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH
{ {
private readonly ILogger<AFN10_F66_Analysis> _logger; private readonly ILogger<AFN10_F66_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN10_F66_Analysis(ILogger<AFN10_F66_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN10_F66_Analysis(ILogger<AFN10_F66_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext= analysisStrategyContext;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
@ -32,38 +29,22 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList);
var data = await GenerateFinalResult(input.UnitData.HexMessageList);
var data = new AnalysisBaseDto<AFN10_F66_AnalysisDto?>() data.Pn = input.DA.Pn;
{ UnitDataAnalysis<AFN10_F66_AnalysisDto> dto = new UnitDataAnalysis<AFN10_F66_AnalysisDto>
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<AnalysisBaseDto<AFN10_F66_AnalysisDto?>> dto = new UnitDataAnalysis<AnalysisBaseDto<AFN10_F66_AnalysisDto?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
TimeDensity = -1 TimeDensity = -1
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync<AFN10_F66_AnalysisDto?>(dto);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,6 +1,4 @@
using JiShe.CollectBus.Common.Enums; 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.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
@ -14,57 +12,39 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0AH
public class AFN10_F68_Analysis : IAnalysisStrategy<TB3761> public class AFN10_F68_Analysis : IAnalysisStrategy<TB3761>
{ {
private readonly ILogger<AFN10_F68_Analysis> _logger; private readonly ILogger<AFN10_F68_Analysis> _logger;
private readonly DataStorage _dataStorage;
public AFN10_F68_Analysis(ILogger<AFN10_F68_Analysis> logger, DataStorage dataStorage) public AFN10_F68_Analysis(ILogger<AFN10_F68_Analysis> logger)
{ {
_logger = logger; _logger = logger;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{ {
try try
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList);
var data = new AnalysisBaseDto<bool?>() UnitDataAnalysis<bool> dto = new UnitDataAnalysis<bool>
{
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<AnalysisBaseDto<bool?>> dto = new UnitDataAnalysis<AnalysisBaseDto<bool?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = input.UnitData.HexMessageList[4].Equals("55"),
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
TimeDensity = -1 TimeDensity = -1
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync<bool?>(dto); return Task.FromResult(true);
return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, $"0A_68解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); _logger.LogError(ex, $"0A_68解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}");
} }
return await Task.FromResult(false); return Task.FromResult(false);
} }
} }
} }

View File

@ -1,14 +1,12 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.IoTDB.Interface; using JiShe.CollectBus.IoTDB.Interface;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
{ {
@ -19,12 +17,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
{ {
private readonly ILogger<AFN12_F129_Analysis> _logger; private readonly ILogger<AFN12_F129_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage; private readonly IIoTDbProvider _dbProvider;
public AFN12_F129_Analysis(ILogger<AFN12_F129_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage)
public AFN12_F129_Analysis(ILogger<AFN12_F129_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, IIoTDbProvider dbProvider)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage; _dbProvider= dbProvider;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
@ -42,7 +41,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
Pn = input.DA.Pn, Pn = input.DA.Pn,
MSA = input.A.A3.D1_D7, MSA = input.A.A3.D1_D7,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
@ -50,24 +49,8 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
}; };
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "正向有功电能示值", input.AFN_FC.AFN, input.DT.Fn); List<AnalysisBaseDto<decimal?>> 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; unitDataAnalysis.Data= list;
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,6 +1,5 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
@ -18,12 +17,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
private readonly ILogger<AFN12_F130_Analysis> _logger; private readonly ILogger<AFN12_F130_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F130_Analysis(ILogger<AFN12_F130_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F130_Analysis(ILogger<AFN12_F130_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
@ -34,21 +32,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "正向无功电能示值", input.AFN_FC.AFN, input.DT.Fn); List<AnalysisBaseDto<decimal?>> 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<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
@ -56,14 +39,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = list, Data = list,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,6 +1,5 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
@ -19,12 +18,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
{ {
private readonly ILogger<AFN12_F131_Analysis> _logger; private readonly ILogger<AFN12_F131_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F131_Analysis(ILogger<AFN12_F131_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F131_Analysis(ILogger<AFN12_F131_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
@ -35,21 +33,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData?.HexMessageList);
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "反向有功总电能示值", input.AFN_FC.AFN, input.DT.Fn); List<AnalysisBaseDto<decimal?>> 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<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
@ -57,14 +40,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = list, Data = list,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,7 +1,6 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
@ -20,12 +19,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
private readonly ILogger<AFN12_F132_Analysis> _logger; private readonly ILogger<AFN12_F132_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F132_Analysis(ILogger<AFN12_F132_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F132_Analysis(ILogger<AFN12_F132_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
@ -38,21 +36,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList); List<string> datas = await AnalysisDataUnitAsync(input.UnitData.HexMessageList);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
List<AnalysisBaseDto<decimal?>> list = GenerateFinalResult(2, datas, "反向无功电能示值", dataType); List<AnalysisBaseDto<decimal?>> 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<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
@ -60,14 +43,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
Fn = input.DT.Fn , Fn = input.DT.Fn ,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = list, Data = list,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,14 +1,12 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Diagnostics.Metrics; using System.Diagnostics.Metrics;
namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
@ -20,12 +18,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
{ {
private readonly ILogger<AFN12_F145_Analysis> _logger; private readonly ILogger<AFN12_F145_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F145_Analysis(ILogger<AFN12_F145_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F145_Analysis(ILogger<AFN12_F145_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
@ -39,17 +36,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal?> data = GenerateFinalResult(datas, "当月正向有功最大需量及发生时间", dataType); AnalysisBaseDto<decimal?> 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<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>> UnitDataAnalysis<AnalysisBaseDto<decimal?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
@ -57,14 +43,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0CH
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -57,7 +57,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
MSA=input.A.A3!.D1_D7!, MSA=input.A.A3!.D1_D7!,
PSEQ=input.SEQ.PSEQ, PSEQ=input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage=input.BaseHexMessage.HexMessageString, HexMessage=input.BaseHexMessage.HexMessageString,
MessageId=input.MessageId, MessageId=input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,

View File

@ -1,11 +1,9 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using YamlDotNet.Core.Tokens; using YamlDotNet.Core.Tokens;
@ -20,12 +18,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
private readonly ILogger<AFN12_F188_Analysis> _logger; private readonly ILogger<AFN12_F188_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F188_Analysis(ILogger<AFN12_F188_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F188_Analysis(ILogger<AFN12_F188_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
@ -39,16 +36,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
ArgumentNullException.ThrowIfNull(input.DT.Fn); ArgumentNullException.ThrowIfNull(input.DT.Fn);
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
AnalysisBaseDto<decimal?> data = GenerateFinalResult(input.UnitData.HexMessageList, dataType); AnalysisBaseDto<decimal?> 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<AnalysisBaseDto<decimal?>> dto = new UnitDataAnalysis<AnalysisBaseDto<decimal?>> UnitDataAnalysis<AnalysisBaseDto<decimal?>> dto = new UnitDataAnalysis<AnalysisBaseDto<decimal?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
@ -56,14 +43,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync(dto);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,11 +1,9 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -21,12 +19,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{ {
private readonly ILogger<AFN12_F25_Analysis> _logger; private readonly ILogger<AFN12_F25_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F25_Analysis(ILogger<AFN12_F25_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F25_Analysis(ILogger<AFN12_F25_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
public List<string> DataType { get; set; } = new List<string>() { "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" }; public List<string> DataType { get; set; } = new List<string>() { "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" };
@ -65,22 +62,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
dto.FiledDesc = remarks[i - 1]; dto.FiledDesc = remarks[i - 1];
list.Add(dto); 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<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
@ -88,14 +69,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = list, Data = list,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -8,8 +8,6 @@ using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using static System.Runtime.InteropServices.JavaScript.JSType; using static System.Runtime.InteropServices.JavaScript.JSType;
using System.Diagnostics.Metrics; using System.Diagnostics.Metrics;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
using JiShe.CollectBus.IotSystems.Ammeters;
namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{ {
@ -20,12 +18,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{ {
private readonly ILogger<AFN12_F2_Analysis> _logger; private readonly ILogger<AFN12_F2_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F2_Analysis(ILogger<AFN12_F2_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F2_Analysis(ILogger<AFN12_F2_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
@ -38,16 +35,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}"; string dataType = $"{input.AFN_FC.AFN.HexToDecStr().PadLeft(2, '0')}_{input.DT.Fn}";
var data = await GenerateFinalResultAsync(input.UnitData.HexMessageList, dataType); 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<AnalysisBaseDto<string>> dto = new UnitDataAnalysis<AnalysisBaseDto<string>> UnitDataAnalysis<AnalysisBaseDto<string>> dto = new UnitDataAnalysis<AnalysisBaseDto<string>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
@ -55,14 +42,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync(dto);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,13 +1,10 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System;
namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{ {
@ -19,12 +16,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
private List<string> DataUnitHexList { get; set; }=new List<string>(); private List<string> DataUnitHexList { get; set; }=new List<string>();
private readonly ILogger<AFN12_F33_Analysis> _logger; private readonly ILogger<AFN12_F33_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F33_Analysis(ILogger<AFN12_F33_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F33_Analysis(ILogger<AFN12_F33_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
@ -38,36 +34,20 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
DataUnitHexList = input.UnitData.HexMessageList.GetRange(24, (5 * (rationgCount + 1)) + (4 * (rationgCount + 1)) * 3); DataUnitHexList = input.UnitData.HexMessageList.GetRange(24, (5 * (rationgCount + 1)) + (4 * (rationgCount + 1)) * 3);
GetDataUnitHexString(input.UnitData.HexMessageList, rationgCount); GetDataUnitHexString(input.UnitData.HexMessageList, rationgCount);
var data = new AnalysisBaseDto<AFN12_F33_AnalysisDto?>() UnitDataAnalysis<AFN12_F33_AnalysisDto> unitDataAnalysis = new UnitDataAnalysis<AFN12_F33_AnalysisDto>
{
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<AnalysisBaseDto<AFN12_F33_AnalysisDto?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<AFN12_F33_AnalysisDto?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = await AnalysisDataUnit(input.UnitData.HexMessageList, rationgCount),
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,11 +1,9 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Helpers;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
using JiShe.CollectBus.Protocol.T37612012.Appendix; using JiShe.CollectBus.Protocol.T37612012.Appendix;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -20,12 +18,11 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
{ {
private readonly ILogger<AFN12_F49_Analysis> _logger; private readonly ILogger<AFN12_F49_Analysis> _logger;
private readonly AnalysisStrategyContext _analysisStrategyContext; private readonly AnalysisStrategyContext _analysisStrategyContext;
private readonly DataStorage _dataStorage;
public AFN12_F49_Analysis(ILogger<AFN12_F49_Analysis> logger, AnalysisStrategyContext analysisStrategyContext, DataStorage dataStorage) public AFN12_F49_Analysis(ILogger<AFN12_F49_Analysis> logger, AnalysisStrategyContext analysisStrategyContext)
{ {
_logger = logger; _logger = logger;
_analysisStrategyContext = analysisStrategyContext; _analysisStrategyContext = analysisStrategyContext;
_dataStorage = dataStorage;
} }
public List<string> DataType { get; set; } = new List<string>() { "Uab_Ua", "Ub", "Ucb_Uc", "Ia", "Ib", "Ic" }; public List<string> DataType { get; set; } = new List<string>() { "Uab_Ua", "Ub", "Ucb_Uc", "Ia", "Ib", "Ic" };
@ -61,21 +58,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
dto.FiledDesc= remarks[i]; dto.FiledDesc= remarks[i];
list.Add(dto); 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<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>> unitDataAnalysis = new UnitDataAnalysis<List<AnalysisBaseDto<decimal?>>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
@ -83,14 +65,13 @@ namespace JiShe.CollectBus.Protocol.T37612012.AFN_0CH
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data= list, Data= list,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.Second, DensityUnit = DensityUnit.Second,
TimeDensity = 0 TimeDensity = 0
}; };
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveMultipleDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -65,7 +65,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度,注意这里会兼容存储做判断 TimeDensity = density,//密度,注意这里会兼容存储做判断
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度,注意这里会兼容存储做判断 TimeDensity = density,//密度,注意这里会兼容存储做判断
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度,注意这里会兼容存储做判断 TimeDensity = density,//密度,注意这里会兼容存储做判断
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度,注意这里会兼容存储做判断 TimeDensity = density,//密度,注意这里会兼容存储做判断
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度,注意这里会兼容存储做判断 TimeDensity = density,//密度,注意这里会兼容存储做判断
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度,注意这里会兼容存储做判断 TimeDensity = density,//密度,注意这里会兼容存储做判断
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度,注意这里会兼容存储做判断 TimeDensity = density,//密度,注意这里会兼容存储做判断
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度,注意这里会兼容存储做判断 TimeDensity = density,//密度,注意这里会兼容存储做判断
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -60,7 +60,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -60,7 +60,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -60,7 +60,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -61,7 +61,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -62,7 +62,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -55,7 +55,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -56,7 +56,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -56,7 +56,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Month, DensityUnit = DensityUnit.Month,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -66,7 +66,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -65,7 +65,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Day, DensityUnit = DensityUnit.Day,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -63,7 +63,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -64,7 +64,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0DH
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = density,//密度-间隔分钟数, TimeDensity = density,//密度-间隔分钟数,
DensityUnit = DensityUnit.Minute, DensityUnit = DensityUnit.Minute,

View File

@ -65,7 +65,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_0EH
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,

View File

@ -1,12 +1,9 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
using JiShe.CollectBus.Protocol3761; using JiShe.CollectBus.Protocol3761;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Text;
namespace GatherService.WattMeter.AnalysisData.AFN_10H namespace GatherService.WattMeter.AnalysisData.AFN_10H
{ {
@ -16,47 +13,40 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H
public class AFN16_F101_Analysis : IAnalysisStrategy<TB3761> public class AFN16_F101_Analysis : IAnalysisStrategy<TB3761>
{ {
private readonly ILogger<AFN16_F101_Analysis> _logger; private readonly ILogger<AFN16_F101_Analysis> _logger;
private readonly DataStorage _dataStorage;
public AFN16_F101_Analysis(ILogger<AFN16_F101_Analysis> logger, DataStorage dataStorage) public AFN16_F101_Analysis(ILogger<AFN16_F101_Analysis> logger)
{ {
_logger = logger; _logger = logger;
_dataStorage = dataStorage;
} }
public async Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null) public Task<bool> ExecuteAsync(TB3761 input, Action<dynamic>? result = null)
{ {
try try
{ {
ArgumentNullException.ThrowIfNull(input); ArgumentNullException.ThrowIfNull(input);
ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList); ArgumentNullException.ThrowIfNull(input.UnitData.HexMessageList);
var data = new AnalysisBaseDto<string?>() UnitDataAnalysis<string> dto = new UnitDataAnalysis<string>
{
FiledDesc = "透读取SIM卡信息",
DataValue = AnalysisDataUnit(input.UnitData.HexMessageList)
};
UnitDataAnalysis<AnalysisBaseDto<string?>> dto = new UnitDataAnalysis<AnalysisBaseDto<string?>>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
Fn = input.DT.Fn, Fn = input.DT.Fn,
Pn = input.DA.Pn, Pn = input.DA.Pn,
Data = data, //SIM卡 Data = AnalysisDataUnit(input.UnitData.HexMessageList), //SIM卡
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
TimeDensity = -1 TimeDensity = -1
}; };
result?.Invoke(dto); result?.Invoke(dto);
await _dataStorage.SaveDataToIotDbAsync<string?>(dto); return Task.FromResult(true);
return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, $"10_101解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}"); _logger.LogError(ex, $"10_101解析失败:{input.A?.Code}-{input.DT?.Fn ?? 0}-{input?.BaseHexMessage?.HexMessageString},{ex.Message}");
} }
return await Task.FromResult(false); return Task.FromResult(false);
} }
private string AnalysisDataUnit(List<string> hexMessageList) private string AnalysisDataUnit(List<string> hexMessageList)
{ {

View File

@ -59,15 +59,14 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData.AFN_10H
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = data,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
TimeDensity = 1,//密度-间隔, TimeDensity = 1,//密度-间隔,
DensityUnit = DensityUnit.Hour, DensityUnit = DensityUnit.Hour,
ReceivedTime = input.ReceivedTime ReceivedTime = input.ReceivedTime
}; };
result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis); await _dataStorage.SaveDataToIotDbAsync<decimal?>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -1,8 +1,6 @@
using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Enums;
using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Extensions;
using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.Protocol; using JiShe.CollectBus.Protocol;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData; using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
@ -36,22 +34,16 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H
List<string> datas = AnalysisDataUnit(input.UnitData.HexMessageList); List<string> datas = AnalysisDataUnit(input.UnitData.HexMessageList);
var data = new AnalysisBaseDto<bool?>()
{
FiledDesc = "跳合闸",
DataValue = (datas[2].Equals("9C") || datas[2].Equals("94")) ? true : false
};
// 查询电表信息 // 查询电表信息
AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.DeviceType.ToString(), "15"); //AmmeterInfo ammeterInfo = await _dataStorage.GetMeterInfoAsync(data.MeterType.ToString(), "15");
if (ammeterInfo != null) //if (ammeterInfo != null)
{ //{
data.ProjectId = ammeterInfo.ProjectID; // data.ProjectId = ammeterInfo.ProjectID;
data.DeviceId = ammeterInfo.MeterId; // data.MeterId = ammeterInfo.MeterId;
data.DatabaseBusiID = ammeterInfo.DatabaseBusiID; // data.DatabaseBusiID = ammeterInfo.DatabaseBusiID;
data.DeviceAddress = ammeterInfo.AmmerterAddress; // data.MeterAddress = ammeterInfo.AmmerterAddress;
} //}
UnitDataAnalysis<AnalysisBaseDto<bool?>> unitDataAnalysis = new UnitDataAnalysis<AnalysisBaseDto<bool?>> UnitDataAnalysis<bool> unitDataAnalysis = new UnitDataAnalysis<bool>
{ {
Code = input.A.Code!, Code = input.A.Code!,
AFN = input.AFN_FC.AFN, AFN = input.AFN_FC.AFN,
@ -59,15 +51,15 @@ namespace GatherService.WattMeter.AnalysisData.AFN_10H
Pn = input.DA.Pn, Pn = input.DA.Pn,
MSA = input.A.A3!.D1_D7!, MSA = input.A.A3!.D1_D7!,
PSEQ = input.SEQ.PSEQ, PSEQ = input.SEQ.PSEQ,
Data = data, Data = (datas[2].Equals("9C") || datas[2].Equals("94")) ? true : false,
ReceivedHexMessage = input.BaseHexMessage.HexMessageString, HexMessage = input.BaseHexMessage.HexMessageString,
MessageId = input.MessageId, MessageId = input.MessageId,
ReceivedTime = input.ReceivedTime, ReceivedTime = input.ReceivedTime,
DensityUnit = DensityUnit.None, DensityUnit = DensityUnit.None,
TimeDensity = -1 TimeDensity = -1
}; };
//await _dataStorage.SaveDataToIotDbAsync<decimal>(unitDataAnalysis);
result?.Invoke(unitDataAnalysis); result?.Invoke(unitDataAnalysis);
await _dataStorage.SaveDataToIotDbAsync(unitDataAnalysis);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -10,15 +10,11 @@ using JiShe.CollectBus.IoTDB.Model;
using JiShe.CollectBus.IoTDB.Options; using JiShe.CollectBus.IoTDB.Options;
using JiShe.CollectBus.IoTDB.Provider; using JiShe.CollectBus.IoTDB.Provider;
using JiShe.CollectBus.IotSystems.Ammeters; using JiShe.CollectBus.IotSystems.Ammeters;
using JiShe.CollectBus.IotSystems.LogRecord;
using JiShe.CollectBus.IotSystems.MeterReadingRecords; using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto; using JiShe.CollectBus.Protocol.Contracts.Protocol.Dto;
using JiShe.CollectBus.Protocol.Dto; using JiShe.CollectBus.Protocol.Dto;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using System.Diagnostics;
using System.Diagnostics.Metrics; using System.Diagnostics.Metrics;
using System.Threading.Channels;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids; using Volo.Abp.Guids;
using static FreeSql.Internal.GlobalFilter; using static FreeSql.Internal.GlobalFilter;
@ -32,36 +28,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
private readonly IIoTDbProvider _dbProvider; private readonly IIoTDbProvider _dbProvider;
private readonly ServerApplicationOptions _applicationOptions; private readonly ServerApplicationOptions _applicationOptions;
private readonly IoTDBRuntimeContext _runtimeContext; private readonly IoTDBRuntimeContext _runtimeContext;
private readonly ILogger<DataStorage> _logger; public DataStorage(IIoTDbProvider dbProvider, IOptions<ServerApplicationOptions> applicationOptions, IGuidGenerator guidGenerator, IoTDBRuntimeContext runtimeContext)
public DataStorage(IIoTDbProvider dbProvider, IOptions<ServerApplicationOptions> applicationOptions,
IGuidGenerator guidGenerator, IoTDBRuntimeContext runtimeContext, ILogger<DataStorage> logger)
{ {
_dbProvider= dbProvider; _dbProvider= dbProvider;
_applicationOptions = applicationOptions.Value; _applicationOptions = applicationOptions.Value;
_guidGenerator= guidGenerator; _guidGenerator= guidGenerator;
_runtimeContext= runtimeContext; _runtimeContext= runtimeContext;
_logger= logger;
}
/// <summary>
/// 日志保存通道写入
/// </summary>
/// <returns></returns>
public async Task LogSaveWriterAsync(ChannelWriter<object> channelWriter, dynamic dataItems)
{
await channelWriter.WriteAsync(dataItems);
}
/// <summary>
/// 日志刷新通道写入
/// </summary>
/// <returns></returns>
public async Task LogRefreshSaveWriterAsync(ChannelWriter<object> channelWriter, dynamic dataItems)
{
await channelWriter.WriteAsync(dataItems);
} }
/// <summary> /// <summary>
@ -135,7 +107,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
// 更新 // 更新
meter.Timestamps = taskData.PendingCopyReadTime.GetDateTimeOffset().ToUnixTimeNanoseconds(); meter.Timestamps = taskData.PendingCopyReadTime.GetDateTimeOffset().ToUnixTimeNanoseconds();
taskData.IsReceived=true; taskData.IsReceived=true;
taskData.ReceivedMessageHexString= analysisBaseDto.ReceivedHexMessage; taskData.ReceivedMessageHexString= analysisBaseDto.HexMessage;
taskData.ReceivedMessageId= analysisBaseDto.MessageId ?? string.Empty; taskData.ReceivedMessageId= analysisBaseDto.MessageId ?? string.Empty;
} }
else else
@ -163,11 +135,10 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
ManualOrNot = false, ManualOrNot = false,
Pn = analysisBaseDto.Pn, Pn = analysisBaseDto.Pn,
ReceivedMessageId = analysisBaseDto.MessageId?? string.Empty, ReceivedMessageId = analysisBaseDto.MessageId?? string.Empty,
ReceivedMessageHexString = analysisBaseDto.ReceivedHexMessage, ReceivedMessageHexString = analysisBaseDto.HexMessage,
IsReceived = true, IsReceived = true,
ReceivedRemark = data.ErrorCodeMsg ?? string.Empty, ReceivedRemark = data.ErrorCodeMsg ?? string.Empty,
ScoreValue = $"{analysisBaseDto.Code}.{taskMark}".Md5Fun(), ScoreValue = $"{analysisBaseDto.Code}.{taskMark}".Md5Fun(),
ReceivedTime = analysisBaseDto.ReceivedTime,
}; };
} }
@ -187,13 +158,12 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
/// </summary> /// </summary>
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
/// <param name="analysisBaseDto"></param> /// <param name="analysisBaseDto"></param>
/// <param name="saveData"></param>
/// <returns></returns> /// <returns></returns>
public async Task<bool> SaveMultipleDataToIotDbAsync<T>(UnitDataAnalysis<List<AnalysisBaseDto<T>>> analysisBaseDto) public async Task<bool> SaveMultipleDataToIotDbAsync<T>(UnitDataAnalysis<List<AnalysisBaseDto<T>>> analysisBaseDto)
{ {
var data = analysisBaseDto.Data!; var data = analysisBaseDto.Data!;
List<MeterReadingTelemetryPacketInfo> meterReadingTelemetryPacketInfos = new List<MeterReadingTelemetryPacketInfo>(); List<MeterReadingTelemetryPacketInfo> meterReadingTelemetryPacketInfos = new List<MeterReadingTelemetryPacketInfo>();
List<TreeModelSingleMeasuringEntity<T>> treeModelSingleMeasuringEntities = new List<TreeModelSingleMeasuringEntity<T>>(); List< TreeModelSingleMeasuringEntity<T>> treeModelSingleMeasuringEntities = new List<TreeModelSingleMeasuringEntity<T>>();
foreach (var item in data) foreach (var item in data)
{ {
if(!item.TimeSpan.HasValue) if(!item.TimeSpan.HasValue)
@ -241,7 +211,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
// 更新 // 更新
meter.Timestamps = taskData.PendingCopyReadTime.GetDateTimeOffset().ToUnixTimeNanoseconds(); meter.Timestamps = taskData.PendingCopyReadTime.GetDateTimeOffset().ToUnixTimeNanoseconds();
taskData.IsReceived = true; taskData.IsReceived = true;
taskData.ReceivedMessageHexString = analysisBaseDto.ReceivedHexMessage; taskData.ReceivedMessageHexString = analysisBaseDto.HexMessage;
taskData.ReceivedMessageId = analysisBaseDto.MessageId ?? string.Empty; taskData.ReceivedMessageId = analysisBaseDto.MessageId ?? string.Empty;
} }
else else
@ -269,22 +239,20 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
ManualOrNot = false, ManualOrNot = false,
Pn = analysisBaseDto.Pn, Pn = analysisBaseDto.Pn,
ReceivedMessageId = analysisBaseDto.MessageId ?? string.Empty, ReceivedMessageId = analysisBaseDto.MessageId ?? string.Empty,
ReceivedMessageHexString = analysisBaseDto.ReceivedHexMessage, ReceivedMessageHexString = analysisBaseDto.HexMessage,
IsReceived = true, IsReceived = true,
ReceivedRemark = item.ErrorCodeMsg ?? string.Empty, ReceivedRemark = item.ErrorCodeMsg ?? string.Empty,
ScoreValue = $"{analysisBaseDto.Code}.{taskMark}".Md5Fun(), ScoreValue = $"{analysisBaseDto.Code}.{taskMark}".Md5Fun(),
ReceivedTime = analysisBaseDto.ReceivedTime,
}; };
} }
meterReadingTelemetryPacketInfos.Add(taskData); meterReadingTelemetryPacketInfos.Add(taskData);
//如果无字段名,则不保存数据,如saveData=false 也不保存数据 //如果无字段名,则不保存数据
if (!string.IsNullOrWhiteSpace(item.FiledName)) if (!string.IsNullOrWhiteSpace(item.FiledName))
{ {
treeModelSingleMeasuringEntities.Add(meter); treeModelSingleMeasuringEntities.Add(meter);
} }
} }
// 批量保存数据 // 批量保存数据
_runtimeContext.UseTableSessionPool = true; // 使树模型池
await _dbProvider.BatchInsertAsync(meterReadingTelemetryPacketInfos); await _dbProvider.BatchInsertAsync(meterReadingTelemetryPacketInfos);
if (treeModelSingleMeasuringEntities.Count > 0) if (treeModelSingleMeasuringEntities.Count > 0)
{ {
@ -305,8 +273,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
ArgumentNullException.ThrowIfNull(nameof(analysisBaseDto.Data)); ArgumentNullException.ThrowIfNull(nameof(analysisBaseDto.Data));
ArgumentException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.FiledName)); ArgumentException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.FiledName));
ArgumentException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.DataValue)); ArgumentException.ThrowIfNullOrWhiteSpace(nameof(analysisBaseDto.Data.DataValue));
List<TreeModelSingleMeasuringEntity<T>> treeModelSingleMeasuringEntities = new List<TreeModelSingleMeasuringEntity<T>>();
var data = analysisBaseDto.Data!; var data = analysisBaseDto.Data!;
if (!data.TimeSpan.HasValue) if (!data.TimeSpan.HasValue)
data.TimeSpan = analysisBaseDto.ReceivedTime; data.TimeSpan = analysisBaseDto.ReceivedTime;
@ -333,7 +299,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
ProjectId = $"{data.ProjectId}", ProjectId = $"{data.ProjectId}",
DataType = IOTDBDataTypeConst.Status, DataType = IOTDBDataTypeConst.Status,
Timestamps = timestamps, Timestamps = timestamps,
SingleMeasuring = (ConcentratorStatusFieldConst.FrameData, analysisBaseDto.ReceivedHexMessage ?? string.Empty) SingleMeasuring = (ConcentratorStatusFieldConst.FrameData, analysisBaseDto.HexMessage ?? string.Empty)
}; };
_runtimeContext.UseTableSessionPool = false; // 使树模型池 _runtimeContext.UseTableSessionPool = false; // 使树模型池
@ -352,39 +318,19 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
}; };
_runtimeContext.UseTableSessionPool = false; // 使树模型池 _runtimeContext.UseTableSessionPool = false; // 使树模型池
await _dbProvider.InsertAsync(treeRecordingTimeData); await _dbProvider.InsertAsync(treeRecordingTimeData);
// 备注
// 新建 var treeRemarkData = new TreeModelSingleMeasuringEntity<string>()
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, SystemName = _applicationOptions.SystemType,
ProjectId = $"{data.ProjectId}",
DeviceType = $"{data.DeviceType}",
DeviceId = $"{data.DeviceId}", DeviceId = $"{data.DeviceId}",
Timestamps = DateTime.Now.GetDateTimeOffset().ToUnixTimeNanoseconds(), DeviceType = $"{data.DeviceType}",
DatabaseBusiID = data.DatabaseBusiID, ProjectId = $"{data.ProjectId}",
PendingCopyReadTime = data.TimeSpan!.Value.GetFormatTime(analysisBaseDto.DensityUnit, analysisBaseDto.TimeDensity), DataType = IOTDBDataTypeConst.Status,
CreationTime = currentTime, Timestamps = timestamps,
MeterAddress = data.DeviceAddress, SingleMeasuring = (ConcentratorStatusFieldConst.Remark, data.FiledDesc ?? string.Empty)
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 = true; // 使表模型池 _runtimeContext.UseTableSessionPool = false; // 使树模型池
await _dbProvider.InsertAsync(taskData); await _dbProvider.InsertAsync(treeRemarkData);
return await Task.FromResult(true); return await Task.FromResult(true);
} }
@ -398,7 +344,6 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
public async Task<bool> SaveMultipleStatusToIotDbAsync<T>(UnitDataAnalysis<List<AnalysisBaseDto<T>>> analysisBaseDto) public async Task<bool> SaveMultipleStatusToIotDbAsync<T>(UnitDataAnalysis<List<AnalysisBaseDto<T>>> analysisBaseDto)
{ {
ArgumentNullException.ThrowIfNull(nameof(analysisBaseDto.Data)); ArgumentNullException.ThrowIfNull(nameof(analysisBaseDto.Data));
List<MeterReadingTelemetryPacketInfo> meterReadingTelemetryPacketInfos = new List<MeterReadingTelemetryPacketInfo>();
var data = analysisBaseDto.Data!; var data = analysisBaseDto.Data!;
foreach (var item in data) foreach (var item in data)
@ -430,7 +375,7 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
ProjectId = $"{item.ProjectId}", ProjectId = $"{item.ProjectId}",
DataType = IOTDBDataTypeConst.Status, DataType = IOTDBDataTypeConst.Status,
Timestamps = timestamps, Timestamps = timestamps,
SingleMeasuring = (ConcentratorStatusFieldConst.FrameData, analysisBaseDto.ReceivedHexMessage ?? string.Empty) SingleMeasuring = (ConcentratorStatusFieldConst.FrameData, analysisBaseDto.HexMessage ?? string.Empty)
}; };
_runtimeContext.UseTableSessionPool = false; // 使树模型池 _runtimeContext.UseTableSessionPool = false; // 使树模型池
@ -448,48 +393,21 @@ namespace JiShe.CollectBus.Protocol.T37612012.AnalysisData
}; };
_runtimeContext.UseTableSessionPool = false; // 使树模型池 _runtimeContext.UseTableSessionPool = false; // 使树模型池
await _dbProvider.InsertAsync(treeRecordingTimeData); await _dbProvider.InsertAsync(treeRecordingTimeData);
// 备注
// 新建 var treeRemarkData = new TreeModelSingleMeasuringEntity<string>()
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, SystemName = _applicationOptions.SystemType,
ProjectId = $"{item.ProjectId}",
DeviceType = $"{item.DeviceType}", DeviceType = $"{item.DeviceType}",
DeviceId = $"{item.DeviceId}", ProjectId = $"{item.ProjectId}",
Timestamps = DateTime.Now.GetDateTimeOffset().ToUnixTimeNanoseconds(), DataType = IOTDBDataTypeConst.Status,
DatabaseBusiID = item.DatabaseBusiID, Timestamps = timestamps,
PendingCopyReadTime = item.TimeSpan!.Value.GetFormatTime(analysisBaseDto.DensityUnit, analysisBaseDto.TimeDensity), SingleMeasuring =(ConcentratorStatusFieldConst.Remark, item.FiledDesc ?? string.Empty)
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); return await Task.FromResult(true);
} }
} }
} }

View File

@ -1,7 +1,5 @@
using System.Reflection; using System.Reflection;
using System.Threading.Channels;
using JiShe.CollectBus.Protocol.Interfaces; using JiShe.CollectBus.Protocol.Interfaces;
using JiShe.CollectBus.Protocol.T37612012.AnalysisData;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Volo.Abp; using Volo.Abp;

View File

@ -1,6 +1,13 @@
using Cassandra.Mapping; using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Channels;
using System.Threading.Tasks;
using Cassandra.Mapping;
using JiShe.CollectBus.Cassandra; using JiShe.CollectBus.Cassandra;
using JiShe.CollectBus.DataChannels; using JiShe.CollectBus.DataChannels;
using JiShe.CollectBus.DataMigration.Options;
using JiShe.CollectBus.FreeRedis; using JiShe.CollectBus.FreeRedis;
using JiShe.CollectBus.FreeSql; using JiShe.CollectBus.FreeSql;
using JiShe.CollectBus.Interceptors; using JiShe.CollectBus.Interceptors;
@ -9,14 +16,9 @@ using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using JiShe.CollectBus.Kafka; using JiShe.CollectBus.Kafka;
using JiShe.CollectBus.Mappers; using JiShe.CollectBus.Mappers;
using JiShe.CollectBus.Protocol; using JiShe.CollectBus.Protocol;
using JiShe.CollectBus.Protocol.Contracts;
using JiShe.CollectBus.ScheduledMeterReading; using JiShe.CollectBus.ScheduledMeterReading;
using Microsoft.Extensions.DependencyInjection; 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;
using Volo.Abp.Application; using Volo.Abp.Application;
using Volo.Abp.Autofac; using Volo.Abp.Autofac;
@ -81,17 +83,6 @@ public class CollectBusApplicationModule : AbpModule
//下发任务通道构建 //下发任务通道构建
DataChannelManage.TaskDataChannel = Channel.CreateUnbounded<ValueTuple<string, List<MeterReadingTelemetryPacketInfo>>>(); DataChannelManage.TaskDataChannel = Channel.CreateUnbounded<ValueTuple<string, List<MeterReadingTelemetryPacketInfo>>>();
// 日志存储通道构建
DataChannelManage.LogSaveChannel = Channel.CreateUnbounded<object>();
// 日志刷新通道构建
DataChannelManage.LogRefreshChannel = Channel.CreateUnbounded<object>();
// 启动通道任务
var _dataChannelManage = context.ServiceProvider.GetRequiredService<DataChannelManageService>();
_ = _dataChannelManage.LogSaveAsync(DataChannelManage.LogSaveChannel.Reader);
//默认初始化表计信息 //默认初始化表计信息
var dbContext = context.ServiceProvider.GetRequiredService<EnergySystemScheduledMeterReadingService>(); var dbContext = context.ServiceProvider.GetRequiredService<EnergySystemScheduledMeterReadingService>();
_= dbContext.InitAmmeterCacheData(); _= dbContext.InitAmmeterCacheData();

View File

@ -1,5 +1,4 @@
using JiShe.CollectBus.IotSystems.MeterReadingRecords; using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using JiShe.CollectBus.Protocol.Dto;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -15,16 +14,5 @@ namespace JiShe.CollectBus.DataChannels
/// 下发任务通道 /// 下发任务通道
/// </summary> /// </summary>
public static Channel<ValueTuple<string, List<MeterReadingTelemetryPacketInfo>>> TaskDataChannel; public static Channel<ValueTuple<string, List<MeterReadingTelemetryPacketInfo>>> TaskDataChannel;
/// <summary>
/// 日志保存管道
/// </summary>
public static Channel<object> LogSaveChannel;
/// <summary>
/// 日志刷新管道
/// </summary>
public static Channel<object> LogRefreshChannel;
} }
} }

View File

@ -1,24 +1,15 @@
using Amazon.Runtime.Internal.Transform; using JiShe.CollectBus.Common;
using DnsClient.Protocol;
using JiShe.CollectBus.Common;
using JiShe.CollectBus.Common.DeviceBalanceControl; using JiShe.CollectBus.Common.DeviceBalanceControl;
using JiShe.CollectBus.IoTDB.Context; using JiShe.CollectBus.IoTDB.Context;
using JiShe.CollectBus.IoTDB.Interface; using JiShe.CollectBus.IoTDB.Interface;
using JiShe.CollectBus.IotSystems.LogRecord;
using JiShe.CollectBus.IotSystems.MeterReadingRecords; using JiShe.CollectBus.IotSystems.MeterReadingRecords;
using JiShe.CollectBus.Kafka.Internal; using JiShe.CollectBus.Kafka.Internal;
using JiShe.CollectBus.Kafka.Producer; 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.Logging;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics; using System.Diagnostics;
using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Channels; using System.Threading.Channels;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -37,7 +28,6 @@ namespace JiShe.CollectBus.DataChannels
private readonly KafkaOptionConfig _kafkaOptions; private readonly KafkaOptionConfig _kafkaOptions;
private readonly ServerApplicationOptions _applicationOptions; private readonly ServerApplicationOptions _applicationOptions;
private readonly IoTDBRuntimeContext _runtimeContext; private readonly IoTDBRuntimeContext _runtimeContext;
private readonly ILogRecordRepository _logRecordRepository;
public DataChannelManageService( public DataChannelManageService(
ILogger<DataChannelManageService> logger, ILogger<DataChannelManageService> logger,
@ -45,8 +35,7 @@ namespace JiShe.CollectBus.DataChannels
IoTDBRuntimeContext runtimeContext, IoTDBRuntimeContext runtimeContext,
IProducerService producerService, IProducerService producerService,
IOptions<KafkaOptionConfig> kafkaOptions, IOptions<KafkaOptionConfig> kafkaOptions,
IOptions<ServerApplicationOptions> applicationOptions, IOptions<ServerApplicationOptions> applicationOptions)
ILogRecordRepository logRecordRepository)
{ {
_logger = logger; _logger = logger;
_dbProvider = dbProvider; _dbProvider = dbProvider;
@ -55,7 +44,6 @@ namespace JiShe.CollectBus.DataChannels
_kafkaOptions = kafkaOptions.Value; _kafkaOptions = kafkaOptions.Value;
_applicationOptions = applicationOptions.Value; _applicationOptions = applicationOptions.Value;
_runtimeContext.UseTableSessionPool = true; _runtimeContext.UseTableSessionPool = true;
_logRecordRepository= logRecordRepository;
} }
/// <summary> /// <summary>
@ -66,6 +54,9 @@ namespace JiShe.CollectBus.DataChannels
{ {
await _telemetryPacketInfoWriter.WriteAsync(dataItems); await _telemetryPacketInfoWriter.WriteAsync(dataItems);
} }
/// <summary> /// <summary>
/// 定时任务数据入库和Kafka推送通道 /// 定时任务数据入库和Kafka推送通道
/// </summary> /// </summary>
@ -209,127 +200,5 @@ namespace JiShe.CollectBus.DataChannels
} }
/// <summary>
/// 日志保存
/// </summary>
/// <param name="channelReader"></param>
/// <returns></returns>
public async Task LogSaveAsync(ChannelReader<object> 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<object>();
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, List<LogRecords>>();
DateTime? dateTime = null;
List<LogRecords> batchList = new List<LogRecords>();
int index = 1;
foreach (var item in batch)
{
var records = item.Adapt<LogRecords>();
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;
}
}
} }
} }

View File

@ -1,43 +1,43 @@
//using System; using System;
//using System.Threading; using System.Threading;
//using System.Threading.Tasks; using System.Threading.Tasks;
//using Hangfire; using Hangfire;
//using JiShe.CollectBus.Common.Consts; using JiShe.CollectBus.Common.Consts;
//using JiShe.CollectBus.ScheduledMeterReading; using JiShe.CollectBus.ScheduledMeterReading;
//using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
//using Volo.Abp.BackgroundWorkers.Hangfire; using Volo.Abp.BackgroundWorkers.Hangfire;
//using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
//using Volo.Abp.Uow; using Volo.Abp.Uow;
//namespace JiShe.CollectBus.Workers namespace JiShe.CollectBus.Workers
//{ {
// /// <summary> /// <summary>
// /// 构建待处理的下发指令任务处理 /// 构建待处理的下发指令任务处理
// /// </summary> /// </summary>
// public class CreateToBeIssueTaskWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker public class CreateToBeIssueTaskWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker
// { {
// private readonly ILogger<CreateToBeIssueTaskWorker> _logger; private readonly ILogger<CreateToBeIssueTaskWorker> _logger;
// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; private readonly IScheduledMeterReadingService _scheduledMeterReadingService;
// /// <summary> /// <summary>
// /// Initializes a new instance of the <see cref="CreateToBeIssueTaskWorker"/> class. /// Initializes a new instance of the <see cref="CreateToBeIssueTaskWorker"/> class.
// /// </summary> /// </summary>
// /// <param name="logger">The logger.</param> /// <param name="logger">The logger.</param>
// /// <param name="scheduledMeterReadingService">定时任务</param> /// <param name="scheduledMeterReadingService">定时任务</param>
// public CreateToBeIssueTaskWorker(ILogger<CreateToBeIssueTaskWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService) public CreateToBeIssueTaskWorker(ILogger<CreateToBeIssueTaskWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService)
// { {
// _logger = logger; _logger = logger;
// RecurringJobId = nameof(CreateToBeIssueTaskWorker); RecurringJobId = nameof(CreateToBeIssueTaskWorker);
// CronExpression = "0 0/1 * * * *"; CronExpression = "0 0/1 * * * *";
// TimeZone = TimeZoneInfo.Local; TimeZone = TimeZoneInfo.Local;
// this._scheduledMeterReadingService = scheduledMeterReadingService; this._scheduledMeterReadingService = scheduledMeterReadingService;
// } }
// public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken())
// { {
// _logger.LogError($"{DateTime.Now}"); _logger.LogError($"{DateTime.Now}");
// // await _scheduledMeterReadingService.CreateToBeIssueTasks(); // await _scheduledMeterReadingService.CreateToBeIssueTasks();
// } }
// } }
//} }

View File

@ -1,39 +1,39 @@
//using JiShe.CollectBus.ScheduledMeterReading; using JiShe.CollectBus.ScheduledMeterReading;
//using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
//using System; using System;
//using System.Collections.Generic; using System.Collections.Generic;
//using System.Linq; using System.Linq;
//using System.Text; using System.Text;
//using System.Threading; using System.Threading;
//using System.Threading.Tasks; using System.Threading.Tasks;
//using Volo.Abp.BackgroundWorkers.Hangfire; using Volo.Abp.BackgroundWorkers.Hangfire;
//using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
//namespace JiShe.CollectBus.Workers namespace JiShe.CollectBus.Workers
//{ {
// /// <summary> /// <summary>
// /// 定时数据检测1小时一次 /// 定时数据检测1小时一次
// /// </summary> /// </summary>
// public class DataDetectionFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker public class DataDetectionFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker
// { {
// private readonly ILogger<CreateToBeIssueTaskWorker> _logger; private readonly ILogger<CreateToBeIssueTaskWorker> _logger;
// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; private readonly IScheduledMeterReadingService _scheduledMeterReadingService;
// public DataDetectionFifteenMinuteWorker(ILogger<CreateToBeIssueTaskWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService) public DataDetectionFifteenMinuteWorker(ILogger<CreateToBeIssueTaskWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService)
// { {
// _logger = logger; _logger = logger;
// RecurringJobId = nameof(CreateToBeIssueTaskWorker); RecurringJobId = nameof(CreateToBeIssueTaskWorker);
// CronExpression = "0 0 0/1 * * ?"; CronExpression = "0 0 0/1 * * ?";
// TimeZone = TimeZoneInfo.Local; TimeZone = TimeZoneInfo.Local;
// this._scheduledMeterReadingService = scheduledMeterReadingService; this._scheduledMeterReadingService = scheduledMeterReadingService;
// } }
// public override Task DoWorkAsync(CancellationToken cancellationToken = default) public override Task DoWorkAsync(CancellationToken cancellationToken = default)
// { {
// //throw new NotImplementedException(); //throw new NotImplementedException();
// return Task.CompletedTask; return Task.CompletedTask;
// } }
// } }
//} }

View File

@ -1,39 +1,39 @@
//using System; using System;
//using System.Threading; using System.Threading;
//using System.Threading.Tasks; using System.Threading.Tasks;
//using Hangfire; using Hangfire;
//using JiShe.CollectBus.Common.Attributes; using JiShe.CollectBus.Common.Attributes;
//using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
//using Volo.Abp.BackgroundWorkers.Hangfire; using Volo.Abp.BackgroundWorkers.Hangfire;
//using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
//using Volo.Abp.Uow; using Volo.Abp.Uow;
//namespace JiShe.CollectBus.Workers namespace JiShe.CollectBus.Workers
//{ {
// public class EpiCollectWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker public class EpiCollectWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker
// { {
// private readonly ILogger<EpiCollectWorker> _logger; private readonly ILogger<EpiCollectWorker> _logger;
// /// <summary> /// <summary>
// /// Initializes a new instance of the <see cref="EpiCollectWorker"/> class. /// Initializes a new instance of the <see cref="EpiCollectWorker"/> class.
// /// </summary> /// </summary>
// /// <param name="logger">The logger.</param> /// <param name="logger">The logger.</param>
// public EpiCollectWorker(ILogger<EpiCollectWorker> logger) public EpiCollectWorker(ILogger<EpiCollectWorker> logger)
// { {
// _logger = logger; _logger = logger;
// RecurringJobId = nameof(EpiCollectWorker); RecurringJobId = nameof(EpiCollectWorker);
// CronExpression = Cron.Daily(); CronExpression = Cron.Daily();
// } }
// public override Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) public override Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken())
// { {
// using (var uow = LazyServiceProvider.LazyGetRequiredService<IUnitOfWorkManager>().Begin()) using (var uow = LazyServiceProvider.LazyGetRequiredService<IUnitOfWorkManager>().Begin())
// { {
// Logger.LogInformation("Executed MyLogWorker..!"); Logger.LogInformation("Executed MyLogWorker..!");
// return Task.CompletedTask; return Task.CompletedTask;
// } }
// } }
// } }
//} }

View File

@ -1,48 +1,48 @@
//using System; using System;
//using System.Threading; using System.Threading;
//using System.Threading.Tasks; using System.Threading.Tasks;
//using Hangfire; using Hangfire;
//using JiShe.CollectBus.ScheduledMeterReading; using JiShe.CollectBus.ScheduledMeterReading;
//using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
//using Volo.Abp.BackgroundWorkers.Hangfire; using Volo.Abp.BackgroundWorkers.Hangfire;
//using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
//using Volo.Abp.Uow; using Volo.Abp.Uow;
//namespace JiShe.CollectBus.Workers namespace JiShe.CollectBus.Workers
//{ {
// /// <summary> /// <summary>
// /// 15分钟采集数据 /// 15分钟采集数据
// /// </summary> /// </summary>
// public class SubscriberFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker public class SubscriberFifteenMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency, ICollectWorker
// { {
// private readonly ILogger<SubscriberFifteenMinuteWorker> _logger; private readonly ILogger<SubscriberFifteenMinuteWorker> _logger;
// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; private readonly IScheduledMeterReadingService _scheduledMeterReadingService;
// /// <summary> /// <summary>
// /// Initializes a new instance of the <see cref="SubscriberFifteenMinuteWorker"/> class. /// Initializes a new instance of the <see cref="SubscriberFifteenMinuteWorker"/> class.
// /// </summary> /// </summary>
// /// <param name="logger">The logger.</param> /// <param name="logger">The logger.</param>
// /// <param name="scheduledMeterReadingService">定时任务</param> /// <param name="scheduledMeterReadingService">定时任务</param>
// public SubscriberFifteenMinuteWorker(ILogger<SubscriberFifteenMinuteWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService) public SubscriberFifteenMinuteWorker(ILogger<SubscriberFifteenMinuteWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService)
// { {
// _logger = logger; _logger = logger;
// RecurringJobId = nameof(SubscriberFifteenMinuteWorker); RecurringJobId = nameof(SubscriberFifteenMinuteWorker);
// CronExpression = "0 0/15 * * * *"; CronExpression = "0 0/15 * * * *";
// TimeZone = TimeZoneInfo.Local; TimeZone = TimeZoneInfo.Local;
// this._scheduledMeterReadingService = scheduledMeterReadingService; this._scheduledMeterReadingService = scheduledMeterReadingService;
// } }
// public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken())
// { {
// //await _scheduledMeterReadingService.AmmeterScheduledMeterFifteenMinuteReading(); //await _scheduledMeterReadingService.AmmeterScheduledMeterFifteenMinuteReading();
// //await _scheduledMeterReadingService.WatermeterScheduledMeterFifteenMinuteReading(); //await _scheduledMeterReadingService.WatermeterScheduledMeterFifteenMinuteReading();
// //using (var uow = LazyServiceProvider.LazyGetRequiredService<IUnitOfWorkManager>().Begin()) //using (var uow = LazyServiceProvider.LazyGetRequiredService<IUnitOfWorkManager>().Begin())
// //{ //{
// // Logger.LogInformation("Executed MyLogWorker..!"); // Logger.LogInformation("Executed MyLogWorker..!");
// // return Task.CompletedTask; // return Task.CompletedTask;
// //} //}
// } }
// } }
//} }

View File

@ -1,42 +1,42 @@
//using System; using System;
//using System.Threading; using System.Threading;
//using System.Threading.Tasks; using System.Threading.Tasks;
//using Hangfire; using Hangfire;
//using JiShe.CollectBus.ScheduledMeterReading; using JiShe.CollectBus.ScheduledMeterReading;
//using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
//using Volo.Abp.BackgroundWorkers.Hangfire; using Volo.Abp.BackgroundWorkers.Hangfire;
//using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
//using Volo.Abp.Uow; using Volo.Abp.Uow;
//namespace JiShe.CollectBus.Workers namespace JiShe.CollectBus.Workers
//{ {
// /// <summary> /// <summary>
// /// 5分钟采集数据 /// 5分钟采集数据
// /// </summary> /// </summary>
// public class SubscriberFiveMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker public class SubscriberFiveMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker
// { {
// private readonly ILogger<SubscriberFiveMinuteWorker> _logger; private readonly ILogger<SubscriberFiveMinuteWorker> _logger;
// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; private readonly IScheduledMeterReadingService _scheduledMeterReadingService;
// /// <summary> /// <summary>
// /// Initializes a new instance of the <see cref="SubscriberFiveMinuteWorker"/> class. /// Initializes a new instance of the <see cref="SubscriberFiveMinuteWorker"/> class.
// /// </summary> /// </summary>
// /// <param name="logger">The logger.</param> /// <param name="logger">The logger.</param>
// /// <param name="scheduledMeterReadingService">定时任务</param> /// <param name="scheduledMeterReadingService">定时任务</param>
// public SubscriberFiveMinuteWorker(ILogger<SubscriberFiveMinuteWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService) public SubscriberFiveMinuteWorker(ILogger<SubscriberFiveMinuteWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService)
// { {
// _logger = logger; _logger = logger;
// RecurringJobId = nameof(SubscriberFiveMinuteWorker); RecurringJobId = nameof(SubscriberFiveMinuteWorker);
// CronExpression = "0 0/5 * * * *"; CronExpression = "0 0/5 * * * *";
// TimeZone = TimeZoneInfo.Local; TimeZone = TimeZoneInfo.Local;
// this._scheduledMeterReadingService = scheduledMeterReadingService; this._scheduledMeterReadingService = scheduledMeterReadingService;
// } }
// public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken())
// { {
// //await _scheduledMeterReadingService.AmmeterScheduledMeterFiveMinuteReading(); //await _scheduledMeterReadingService.AmmeterScheduledMeterFiveMinuteReading();
// //await _scheduledMeterReadingService.WatermeterScheduledMeterFiveMinuteReading(); //await _scheduledMeterReadingService.WatermeterScheduledMeterFiveMinuteReading();
// } }
// } }
//} }

View File

@ -1,44 +1,44 @@
//using System; using System;
//using System.Threading; using System.Threading;
//using System.Threading.Tasks; using System.Threading.Tasks;
//using Hangfire; using Hangfire;
//using JiShe.CollectBus.ScheduledMeterReading; using JiShe.CollectBus.ScheduledMeterReading;
//using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
//using Volo.Abp.BackgroundWorkers.Hangfire; using Volo.Abp.BackgroundWorkers.Hangfire;
//using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
//using Volo.Abp.Uow; using Volo.Abp.Uow;
//namespace JiShe.CollectBus.Workers namespace JiShe.CollectBus.Workers
//{ {
// /// <summary> /// <summary>
// /// 1分钟采集数据 /// 1分钟采集数据
// /// </summary> /// </summary>
// public class SubscriberOneMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker public class SubscriberOneMinuteWorker : HangfireBackgroundWorkerBase, ITransientDependency,ICollectWorker
// { {
// private readonly ILogger<SubscriberOneMinuteWorker> _logger; private readonly ILogger<SubscriberOneMinuteWorker> _logger;
// private readonly IScheduledMeterReadingService _scheduledMeterReadingService; private readonly IScheduledMeterReadingService _scheduledMeterReadingService;
// /// <summary> /// <summary>
// /// Initializes a new instance of the <see cref="SubscriberOneMinuteWorker"/> class. /// Initializes a new instance of the <see cref="SubscriberOneMinuteWorker"/> class.
// /// </summary> /// </summary>
// /// <param name="logger">The logger.</param> /// <param name="logger">The logger.</param>
// /// <param name="scheduledMeterReadingService">定时任务</param> /// <param name="scheduledMeterReadingService">定时任务</param>
// public SubscriberOneMinuteWorker(ILogger<SubscriberOneMinuteWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService) public SubscriberOneMinuteWorker(ILogger<SubscriberOneMinuteWorker> logger, IScheduledMeterReadingService scheduledMeterReadingService)
// { {
// _logger = logger; _logger = logger;
// RecurringJobId = nameof(SubscriberOneMinuteWorker); RecurringJobId = nameof(SubscriberOneMinuteWorker);
// CronExpression = "0 0/1 * * * *"; CronExpression = "0 0/1 * * * *";
// TimeZone = TimeZoneInfo.Local; TimeZone = TimeZoneInfo.Local;
// this._scheduledMeterReadingService = scheduledMeterReadingService; this._scheduledMeterReadingService = scheduledMeterReadingService;
// } }
// public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken()) public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken())
// { {
// //await _scheduledMeterReadingService.AmmeterScheduledMeterOneMinuteReading(); //await _scheduledMeterReadingService.AmmeterScheduledMeterOneMinuteReading();
// //await _scheduledMeterReadingService.WatermeterScheduledMeterOneMinuteReading(); //await _scheduledMeterReadingService.WatermeterScheduledMeterOneMinuteReading();
// } }
// } }
//} }

Some files were not shown because too many files have changed in this diff Show More