using JiShe.CollectBus.Common.Consts; using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.IoTDB.Interface; using JiShe.CollectBus.IotSystems.MessageReceiveds; using JiShe.CollectBus.Kafka.Attributes; using JiShe.CollectBus.Kafka.Internal; using JiShe.CollectBus.Protocol.Contracts; using JiShe.CollectBus.Protocol.Contracts.Interfaces; using JiShe.CollectBus.Protocol.Contracts.Models; using JiShe.CollectBus.Repository.MeterReadingRecord; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using TouchSocket.Sockets; using Volo.Abp.Domain.Repositories; namespace JiShe.CollectBus.Subscribers { public class SubscriberAnalysisAppService : CollectBusAppService, ISubscriberAnalysisAppService, IKafkaSubscribe { private readonly ILogger _logger; private readonly ITcpService _tcpService; private readonly IServiceProvider _serviceProvider; private readonly IMeterReadingRecordRepository _meterReadingRecordsRepository; private readonly IIoTDbProvider _dbProvider; private readonly IProtocolService _protocolService; public SubscriberAnalysisAppService(ILogger logger, ITcpService tcpService, IServiceProvider serviceProvider, IIoTDbProvider dbProvider, IMeterReadingRecordRepository meterReadingRecordsRepository, IProtocolService protocolService) { _logger = logger; _tcpService = tcpService; _serviceProvider = serviceProvider; _meterReadingRecordsRepository = meterReadingRecordsRepository; _dbProvider = dbProvider; _protocolService = protocolService; } /// /// 解析AFN00H /// /// /// [KafkaSubscribe(ProtocolConst.SubscriberAFN00HReceivedEventNameTemp)] public async Task ReceivedAFN00Event(MessageProtocolAnalysis receivedMessage) { var protocolPlugin = await _protocolService.GetProtocolServiceAsync(receivedMessage.DeviceNo); if (protocolPlugin == null) { _logger.LogError("协议不存在!"); } else { if (receivedMessage.Data==null) { Logger.LogError($"数据解析失败:{receivedMessage.Serialize()}"); return SubscribeAck.Success(); } if (receivedMessage.Data.DT == null || receivedMessage.Data.AFN_FC == null) { Logger.LogError($"数据解析失败:{receivedMessage.Serialize()}"); return SubscribeAck.Success(); } string serverName = $"AFN{receivedMessage.Data.AFN_FC.AFN}_F{receivedMessage.Data.DT.Fn}_Analysis"; //var analysisStrategy = _serviceProvider.GetKeyedService($"AFN0_F1_Analysis"); //var data = await analysisStrategy.ExecuteAsync>(tB3761); var executor = _serviceProvider.GetRequiredService(); await executor.ExecuteAsync(serverName, receivedMessage.Data); } return SubscribeAck.Fail(); } } }