From bb0099bc9833226426a72dde97c85977b57fb394 Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Thu, 13 Mar 2025 10:51:16 +0800 Subject: [PATCH] =?UTF-8?q?1=E5=88=86=E9=92=9F=E9=87=87=E9=9B=86=E7=94=B5?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E6=95=B0=E6=8D=AE=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Workers/IScheduledMeterReadingService.cs | 41 ++++- .../Workers/IWorkerSubscriberAppService.cs | 29 ++- .../BasicScheduledMeterReadingService.cs | 173 ++++++++++++++---- ...nergySystemScheduledMeterReadingService.cs | 6 +- .../Workers/WorkerSubscriberAppService.cs | 132 +++++++++++-- .../Consts/FreeRedisConst.cs | 19 +- .../CollectBusHostModule.Configure.cs | 2 +- .../ProtocolConst.cs | 19 +- 8 files changed, 355 insertions(+), 66 deletions(-) diff --git a/src/JiShe.CollectBus.Application.Contracts/Workers/IScheduledMeterReadingService.cs b/src/JiShe.CollectBus.Application.Contracts/Workers/IScheduledMeterReadingService.cs index 7591f3e..bd1a090 100644 --- a/src/JiShe.CollectBus.Application.Contracts/Workers/IScheduledMeterReadingService.cs +++ b/src/JiShe.CollectBus.Application.Contracts/Workers/IScheduledMeterReadingService.cs @@ -15,13 +15,15 @@ namespace JiShe.CollectBus.Workers /// public interface IScheduledMeterReadingService : IApplicationService { + + #region 电表采集处理 /// /// 获取电表信息 /// /// 采集端Code /// Task> GetAmmeterInfoList(string gatherCode = ""); - + /// /// 初始化电表缓存数据 /// @@ -29,6 +31,28 @@ namespace JiShe.CollectBus.Workers /// Task InitAmmeterCacheData(string gatherCode = ""); + /// + /// 1分钟采集电表数据 + /// + /// + Task AmmeterScheduledMeterOneMinuteReading(); + + /// + /// 5分钟采集电表数据 + /// + /// + Task AmmeterScheduledMeterFiveMinuteReading(); + + /// + /// 15分钟采集电表数据 + /// + /// + Task AmmeterScheduledMeterFifteenMinuteReading(); + + #endregion + + + #region 水表采集处理 /// /// 获取水表信息 /// @@ -44,21 +68,24 @@ namespace JiShe.CollectBus.Workers Task InitWatermeterCacheData(string gatherCode = ""); /// - /// 1分钟采集电表数据 + /// 1分钟采集水表数据 /// /// - Task ScheduledMeterOneMinuteReading(); + Task WatermeterScheduledMeterOneMinuteReading(); /// - /// 5分钟采集电表数据 + /// 5分钟采集水表数据 /// /// - Task ScheduledMeterFiveMinuteReading(); + Task WatermeterScheduledMeterFiveMinuteReading(); /// - /// 15分钟采集电表数据 + /// 15分钟采集水表数据 /// /// - Task ScheduledMeterFifteenMinuteReading(); + Task WatermeterScheduledMeterFifteenMinuteReading(); + #endregion + + } } diff --git a/src/JiShe.CollectBus.Application.Contracts/Workers/IWorkerSubscriberAppService.cs b/src/JiShe.CollectBus.Application.Contracts/Workers/IWorkerSubscriberAppService.cs index c7442de..dede8c4 100644 --- a/src/JiShe.CollectBus.Application.Contracts/Workers/IWorkerSubscriberAppService.cs +++ b/src/JiShe.CollectBus.Application.Contracts/Workers/IWorkerSubscriberAppService.cs @@ -10,22 +10,45 @@ namespace JiShe.CollectBus.Subscribers /// public interface IWorkerSubscriberAppService : IApplicationService { + + #region 电表消息采集 /// /// 1分钟采集电表数据下行消息消费订阅 /// /// - Task ScheduledMeterOneMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); + Task AmmeterScheduledMeterOneMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); /// /// 5分钟采集电表数据下行消息消费订阅 /// /// - Task ScheduledMeterFiveMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); + Task AmmeterScheduledMeterFiveMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); /// /// 15分钟采集电表数据下行消息消费订阅 /// /// - Task ScheduledMeterFifteenMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); + Task AmmeterScheduledMeterFifteenMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); + #endregion + + #region 水表消息采集 + /// + /// 1分钟采集水表数据下行消息消费订阅 + /// + /// + Task WatermeterScheduledMeterOneMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); + + /// + /// 5分钟采集水表数据下行消息消费订阅 + /// + /// + Task WatermeterScheduledMeterFiveMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); + + /// + /// 15分钟采集水表数据下行消息消费订阅 + /// + /// + Task WatermeterScheduledMeterFifteenMinuteReadingIssuedEvent(IssuedEventMessage issuedEventMessage); + #endregion } } diff --git a/src/JiShe.CollectBus.Application/Workers/BasicScheduledMeterReadingService.cs b/src/JiShe.CollectBus.Application/Workers/BasicScheduledMeterReadingService.cs index 51b6652..e5494a1 100644 --- a/src/JiShe.CollectBus.Application/Workers/BasicScheduledMeterReadingService.cs +++ b/src/JiShe.CollectBus.Application/Workers/BasicScheduledMeterReadingService.cs @@ -2,6 +2,7 @@ using JiShe.CollectBus.Ammeters; using JiShe.CollectBus.Common.Consts; using JiShe.CollectBus.Watermeter; +using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; @@ -17,11 +18,19 @@ namespace JiShe.CollectBus.Workers /// public abstract class BasicScheduledMeterReadingService : CollectBusAppService, IScheduledMeterReadingService { + private readonly ILogger _logger; + public BasicScheduledMeterReadingService(ILogger logger) + { + _logger = logger; + } + /// /// 系统类型 /// public abstract string SystemType { get; } + #region 电表采集处理 + /// /// 获取电表信息 /// @@ -45,32 +54,115 @@ namespace JiShe.CollectBus.Workers throw new NullReferenceException($"{nameof(InitWatermeterCacheData)} 初始化电表缓存数据时,电表数据为空"); } - //将表计信息根据集中器分组 - var meterInfoGroup = meterInfos.GroupBy(x => x.FocusAddress).ToList(); - foreach (var item in meterInfoGroup) + //根据采集频率分组 + var meterInfoGroupByTimeDensity = meterInfos.GroupBy(d => d.TimeDensity); + foreach (var itemTimeDensity in meterInfoGroupByTimeDensity) { - if (string.IsNullOrWhiteSpace(item.Key)) + //将表计信息根据集中器分组 + var meterInfoGroup = itemTimeDensity.GroupBy(x => x.FocusAddress).ToList(); + foreach (var item in meterInfoGroup) { - continue; - } + if (string.IsNullOrWhiteSpace(item.Key)) + { + continue; + } - var redisCacheKey = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy)}{item.Key}"; - Dictionary keyValuePairs = new Dictionary(); - foreach (var subItem in item) - { + var redisCacheKey = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, itemTimeDensity.Key)}{item.Key}"; + Dictionary keyValuePairs = new Dictionary(); + foreach (var subItem in item) + { - keyValuePairs.TryAdd($"{subItem.ID}", subItem); + keyValuePairs.TryAdd($"{subItem.ID}", subItem); + } + await FreeRedisProvider.FreeRedis.HSetAsync(redisCacheKey, keyValuePairs); } - await FreeRedisProvider.FreeRedis.HSetAsync(redisCacheKey, keyValuePairs); } + + _logger.LogInformation($"{nameof(InitAmmeterCacheData)} 初始化电表缓存数据完成"); } + /// + /// 1分钟采集电表数据 + /// + /// + public virtual async Task AmmeterScheduledMeterOneMinuteReading() + { + //获取缓存中的电表信息 + var redisKeyList = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, 1)}*"; + var oneMinutekeyList = await FreeRedisProvider.FreeRedis.KeysAsync(redisKeyList); + if (oneMinutekeyList == null || oneMinutekeyList.Length <=0) + { + _logger.LogError($"{nameof(WatermeterScheduledMeterOneMinuteReading)} 1分钟采集电表数据处理时没有获取到缓存信息,-102"); + return; + } + + //通过lua脚本一次性获取所有缓存内容 + var luaScript = @" + local results = {} + for i, key in ipairs(KEYS) do + local data = redis.call('HGETALL', key) + results[i] = {key, data} + end + return results"; + var oneMinuteAmmerterResult = FreeRedisProvider.FreeRedis.Eval(luaScript, oneMinutekeyList); // 传递 KEYS + if (oneMinuteAmmerterResult == null) + { + _logger.LogError($"{nameof(WatermeterScheduledMeterOneMinuteReading)} 1分钟采集电表数据处理时没有获取到缓存信息,-102"); + return; + } + + // 解析结果(结果为嵌套数组) + var parsedResults = new Dictionary>(); + if (oneMinuteAmmerterResult is object[] arr) + { + foreach (object[] item in arr) + { + string key = (string)item[0]; + object[] fieldsAndValues = (object[])item[1]; + + var dict = new Dictionary(); + for (int i = 0; i < fieldsAndValues.Length; i += 2) + { + string field = (string)fieldsAndValues[i]; + string value = (string)fieldsAndValues[i + 1]; + dict[field] = value; + } + parsedResults[key] = dict; + } + } + + _logger.LogInformation($"{nameof(WatermeterScheduledMeterOneMinuteReading)} 1分钟采集电表数据处理完成"); + + } + + /// + /// 5分钟采集电表数据 + /// + /// + public virtual Task AmmeterScheduledMeterFiveMinuteReading() + { + throw new NotImplementedException($"{nameof(AmmeterScheduledMeterFiveMinuteReading)}请根据不同系统类型进行实现"); + } + + /// + /// 15分钟采集电表数据 + /// + /// + public virtual Task AmmeterScheduledMeterFifteenMinuteReading() + { + throw new NotImplementedException($"{nameof(AmmeterScheduledMeterFifteenMinuteReading)}请根据不同系统类型进行实现"); + } + #endregion + + + #region 水表采集处理 + /// /// 获取水表信息 /// /// 采集端Code /// - public virtual async Task> GetWatermeterInfoList(string gatherCode = "") + public virtual Task> GetWatermeterInfoList(string gatherCode = "") { throw new NotImplementedException($"{nameof(GetWatermeterInfoList)}请根据不同系统类型进行实现"); } @@ -85,55 +177,66 @@ namespace JiShe.CollectBus.Workers var meterInfos = await GetWatermeterInfoList(gatherCode); if (meterInfos == null || meterInfos.Count <= 0) { - throw new NullReferenceException($"{nameof(InitWatermeterCacheData)} 初始化水表缓存数据时,水表数据为空"); + throw new NullReferenceException($"{nameof(InitWatermeterCacheData)} 初始化水表缓存数据时,水表数据为空"); } - - //将表计信息根据集中器分组 - var meterInfoGroup = meterInfos.GroupBy(x => x.FocusAddress).ToList(); - foreach (var item in meterInfoGroup) + //根据采集频率分组 + var meterInfoGroupByTimeDensity = meterInfos.GroupBy(d => d.TimeDensity); + foreach (var itemTimeDensity in meterInfoGroupByTimeDensity) { - if (string.IsNullOrWhiteSpace(item.Key)) + //将表计信息根据集中器分组 + var meterInfoGroup = itemTimeDensity.GroupBy(x => x.FocusAddress).ToList(); + foreach (var item in meterInfoGroup) { - continue; - } + if (string.IsNullOrWhiteSpace(item.Key)) + { + continue; + } - var redisCacheKey = $"{string.Format(FreeRedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy)}{item.Key}"; - Dictionary keyValuePairs = new Dictionary(); - foreach (var subItem in item) - { + var redisCacheKey = $"{string.Format(FreeRedisConst.CacheWatermeterInfoKey, SystemTypeConst.Energy, itemTimeDensity.Key)}{item.Key}"; + Dictionary keyValuePairs = new Dictionary(); + foreach (var subItem in item) + { - keyValuePairs.TryAdd($"{subItem.ID}", subItem); + keyValuePairs.TryAdd($"{subItem.ID}", subItem); + } + await FreeRedisProvider.FreeRedis.HSetAsync(redisCacheKey, keyValuePairs); } - await FreeRedisProvider.FreeRedis.HSetAsync(redisCacheKey, keyValuePairs); } + _logger.LogInformation($"{nameof(InitAmmeterCacheData)} 初始化水表缓存数据完成"); } /// - /// 1分钟采集电表数据 + /// 1分钟采集水表数据 /// /// - public virtual Task ScheduledMeterOneMinuteReading() + public virtual async Task WatermeterScheduledMeterOneMinuteReading() { - - throw new NotImplementedException($"{nameof(ScheduledMeterOneMinuteReading)}请根据不同系统类型进行实现"); + //获取缓存中的电表信息 + var redisKeyList = $"{string.Format(FreeRedisConst.CacheAmmeterInfoKey, SystemTypeConst.Energy, 1)}*"; + var oneMinuteList = await FreeRedisProvider.FreeRedis.KeysAsync(redisKeyList); + + _logger.LogInformation($"{nameof(WatermeterScheduledMeterOneMinuteReading)} 1分钟采集水表数据处理完成"); } /// /// 5分钟采集电表数据 /// /// - public virtual Task ScheduledMeterFiveMinuteReading() + public virtual Task WatermeterScheduledMeterFiveMinuteReading() { - throw new NotImplementedException($"{nameof(ScheduledMeterFiveMinuteReading)}请根据不同系统类型进行实现"); + + throw new NotImplementedException($"{nameof(WatermeterScheduledMeterFiveMinuteReading)}请根据不同系统类型进行实现"); } /// /// 15分钟采集电表数据 /// /// - public virtual Task ScheduledMeterFifteenMinuteReading() + public virtual Task WatermeterScheduledMeterFifteenMinuteReading() { - throw new NotImplementedException($"{nameof(ScheduledMeterFifteenMinuteReading)}请根据不同系统类型进行实现"); + throw new NotImplementedException($"{nameof(WatermeterScheduledMeterFifteenMinuteReading)}请根据不同系统类型进行实现"); } + #endregion + } } diff --git a/src/JiShe.CollectBus.Application/Workers/EnergySystemScheduledMeterReadingService.cs b/src/JiShe.CollectBus.Application/Workers/EnergySystemScheduledMeterReadingService.cs index 1db9e4a..a5d5940 100644 --- a/src/JiShe.CollectBus.Application/Workers/EnergySystemScheduledMeterReadingService.cs +++ b/src/JiShe.CollectBus.Application/Workers/EnergySystemScheduledMeterReadingService.cs @@ -7,6 +7,7 @@ using JiShe.CollectBus.FreeSql; using JiShe.CollectBus.Watermeter; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; @@ -25,9 +26,12 @@ namespace JiShe.CollectBus.Workers public class EnergySystemScheduledMeterReadingService : BasicScheduledMeterReadingService { private readonly IRepository _deviceRepository; - public EnergySystemScheduledMeterReadingService(IRepository deviceRepository) + private readonly ILogger _logger; + + public EnergySystemScheduledMeterReadingService(IRepository deviceRepository, ILogger logger):base(logger) { this._deviceRepository = deviceRepository; + this._logger = logger; } public sealed override string SystemType => SystemTypeConst.Energy; diff --git a/src/JiShe.CollectBus.Application/Workers/WorkerSubscriberAppService.cs b/src/JiShe.CollectBus.Application/Workers/WorkerSubscriberAppService.cs index 6c7bfab..552f964 100644 --- a/src/JiShe.CollectBus.Application/Workers/WorkerSubscriberAppService.cs +++ b/src/JiShe.CollectBus.Application/Workers/WorkerSubscriberAppService.cs @@ -26,6 +26,7 @@ namespace JiShe.CollectBus.Subscribers private readonly ILogger _logger; private readonly ITcpService _tcpService; private readonly IServiceProvider _serviceProvider; + private readonly IRepository _deviceRepository; /// @@ -35,22 +36,27 @@ namespace JiShe.CollectBus.Subscribers /// The TCP service. /// The service provider. public WorkerSubscriberAppService(ILogger logger, - ITcpService tcpService, IServiceProvider serviceProvider) + ITcpService tcpService, + IRepository deviceRepository, + IServiceProvider serviceProvider) { _logger = logger; _tcpService = tcpService; - _serviceProvider = serviceProvider; + _serviceProvider = serviceProvider; + _deviceRepository = deviceRepository; } + + #region 电表消息采集 /// /// 一分钟定时抄读任务消息消费订阅 /// /// /// [HttpPost] - [Route("oneminute/issued-event")] - [CapSubscribe(ProtocolConst.SubscriberWorkerOneMinuteIssuedEventName)] - public async Task ScheduledMeterOneMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) + [Route("ammeter/oneminute/issued-event")] + [CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerOneMinuteIssuedEventName)] + public async Task AmmeterScheduledMeterOneMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) { _logger.LogInformation("1分钟采集电表数据下行消息消费队列开始处理"); var protocolPlugin = _serviceProvider.GetKeyedService("StandardProtocolPlugin"); @@ -60,7 +66,12 @@ namespace JiShe.CollectBus.Subscribers } else { - await _tcpService.SendAsync(receivedMessage.ClientId, receivedMessage.Message); + var device = await _deviceRepository.FindAsync(a => a.Number == receivedMessage.DeviceNo); + if (device != null) + { + await _tcpService.SendAsync(device.ClientId, receivedMessage.Message); + + } } } @@ -70,9 +81,9 @@ namespace JiShe.CollectBus.Subscribers /// /// [HttpPost] - [Route("fiveminute/issued-event")] - [CapSubscribe(ProtocolConst.SubscriberWorkerOneMinuteIssuedEventName)] - public async Task ScheduledMeterFiveMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) + [Route("ammeter/fiveminute/issued-event")] + [CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerOneMinuteIssuedEventName)] + public async Task AmmeterScheduledMeterFiveMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) { _logger.LogInformation("5分钟采集电表数据下行消息消费队列开始处理"); var protocolPlugin = _serviceProvider.GetKeyedService("StandardProtocolPlugin"); @@ -82,7 +93,12 @@ namespace JiShe.CollectBus.Subscribers } else { - await _tcpService.SendAsync(receivedMessage.ClientId, receivedMessage.Message); + var device = await _deviceRepository.FindAsync(a => a.Number == receivedMessage.DeviceNo); + if (device != null) + { + await _tcpService.SendAsync(device.ClientId, receivedMessage.Message); + + } } } @@ -92,9 +108,9 @@ namespace JiShe.CollectBus.Subscribers /// /// [HttpPost] - [Route("fifteenminute/issued-event")] - [CapSubscribe(ProtocolConst.SubscriberWorkerOneMinuteIssuedEventName)] - public async Task ScheduledMeterFifteenMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) + [Route("ammeter/fifteenminute/issued-event")] + [CapSubscribe(ProtocolConst.AmmeterSubscriberWorkerOneMinuteIssuedEventName)] + public async Task AmmeterScheduledMeterFifteenMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) { _logger.LogInformation("15分钟采集电表数据下行消息消费队列开始处理"); var protocolPlugin = _serviceProvider.GetKeyedService("StandardProtocolPlugin"); @@ -104,8 +120,96 @@ namespace JiShe.CollectBus.Subscribers } else { - await _tcpService.SendAsync(receivedMessage.ClientId, receivedMessage.Message); + var device = await _deviceRepository.FindAsync(a => a.Number == receivedMessage.DeviceNo); + if (device != null) + { + await _tcpService.SendAsync(device.ClientId, receivedMessage.Message); + + } } } + #endregion + + #region 水表消息采集 + /// + /// 一分钟定时抄读任务消息消费订阅 + /// + /// + /// + [HttpPost] + [Route("watermeter/oneminute/issued-event")] + [CapSubscribe(ProtocolConst.WatermeterSubscriberWorkerOneMinuteIssuedEventName)] + public async Task WatermeterScheduledMeterOneMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) + { + _logger.LogInformation("1分钟采集电表数据下行消息消费队列开始处理"); + var protocolPlugin = _serviceProvider.GetKeyedService("StandardProtocolPlugin"); + if (protocolPlugin == null) + { + _logger.LogError("【1分钟采集电表数据下行消息消费队列开始处理】协议不存在!"); + } + else + { + var device = await _deviceRepository.FindAsync(a => a.Number == receivedMessage.DeviceNo); + if (device != null) + { + await _tcpService.SendAsync(device.ClientId, receivedMessage.Message); + + } + } + } + + /// + /// 5分钟采集电表数据下行消息消费订阅 + /// + /// + /// + [HttpPost] + [Route("watermeter/fiveminute/issued-event")] + [CapSubscribe(ProtocolConst.WatermeterSubscriberWorkerOneMinuteIssuedEventName)] + public async Task WatermeterScheduledMeterFiveMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) + { + _logger.LogInformation("5分钟采集电表数据下行消息消费队列开始处理"); + var protocolPlugin = _serviceProvider.GetKeyedService("StandardProtocolPlugin"); + if (protocolPlugin == null) + { + _logger.LogError("【5分钟采集电表数据下行消息消费队列开始处理】协议不存在!"); + } + else + { + var device = await _deviceRepository.FindAsync(a => a.Number == receivedMessage.DeviceNo); + if (device != null) + { + await _tcpService.SendAsync(device.ClientId, receivedMessage.Message); + + } + } + } + + /// + /// 15分钟采集电表数据下行消息消费订阅 + /// + /// + /// + [HttpPost] + [Route("watermeter/fifteenminute/issued-event")] + [CapSubscribe(ProtocolConst.WatermeterSubscriberWorkerOneMinuteIssuedEventName)] + public async Task WatermeterScheduledMeterFifteenMinuteReadingIssuedEvent(IssuedEventMessage receivedMessage) + { + _logger.LogInformation("15分钟采集电表数据下行消息消费队列开始处理"); + var protocolPlugin = _serviceProvider.GetKeyedService("StandardProtocolPlugin"); + if (protocolPlugin == null) + { + _logger.LogError("【15分钟采集电表数据下行消息消费队列开始处理】协议不存在!"); + } + else + { + var device = await _deviceRepository.FindAsync(a => a.Number == receivedMessage.DeviceNo); + if (device != null) + { + await _tcpService.SendAsync(device.ClientId, receivedMessage.Message); + } + } + } + #endregion } } diff --git a/src/JiShe.CollectBus.Common/Consts/FreeRedisConst.cs b/src/JiShe.CollectBus.Common/Consts/FreeRedisConst.cs index ae37f9d..859e86e 100644 --- a/src/JiShe.CollectBus.Common/Consts/FreeRedisConst.cs +++ b/src/JiShe.CollectBus.Common/Consts/FreeRedisConst.cs @@ -13,14 +13,29 @@ namespace JiShe.CollectBus.Common.Consts /// public const string CacheBasicDirectoryKey = "CollectBus:"; + /// + /// 1分钟采集间隔 + /// + public const string OneMinuteAcquisitionTimeInterval = $"one"; + + /// + /// 5分钟采集间隔 + /// + public const string FiveMinuteAcquisitionTimeInterval = $"Five"; + + /// + /// 15分钟采集间隔 + /// + public const string FifteenMinuteAcquisitionTimeInterval = $"Fifteen"; + /// /// 缓存电表信息 /// - public const string CacheAmmeterInfoKey = $"{CacheBasicDirectoryKey}{"{0}"}:AmmeterInfo:"; + public const string CacheAmmeterInfoKey = $"{CacheBasicDirectoryKey}{"{0}"}:{"{1}"}:AmmeterInfo:"; /// /// 缓存水表信息 /// - public const string CacheWatermeterInfoKey = $"{CacheBasicDirectoryKey}{"{0}"}:WatermeterInfo:"; + public const string CacheWatermeterInfoKey = $"{CacheBasicDirectoryKey}{"{0}"}:{"{1}"}:WatermeterInfo:"; } } diff --git a/src/JiShe.CollectBus.Host/CollectBusHostModule.Configure.cs b/src/JiShe.CollectBus.Host/CollectBusHostModule.Configure.cs index 699ba43..afca265 100644 --- a/src/JiShe.CollectBus.Host/CollectBusHostModule.Configure.cs +++ b/src/JiShe.CollectBus.Host/CollectBusHostModule.Configure.cs @@ -222,7 +222,7 @@ namespace JiShe.CollectBus.Host { context.Services.AddTcpService(config => { - config.SetListenIPHosts(int.Parse(configuration["TCP:ClientPort"] ?? "32580")) + config.SetListenIPHosts(int.Parse(configuration["TCP:ClientPort"] ?? "10500")) //.SetTcpDataHandlingAdapter(()=>new StandardFixedHeaderDataHandlingAdapter()) .SetGetDefaultNewId(() => Guid.NewGuid().ToString())//定义ClinetId的生成策略 .ConfigurePlugins(a => diff --git a/src/JiShe.CollectBus.Protocol.Contracts/ProtocolConst.cs b/src/JiShe.CollectBus.Protocol.Contracts/ProtocolConst.cs index 431fc4c..ee2cddf 100644 --- a/src/JiShe.CollectBus.Protocol.Contracts/ProtocolConst.cs +++ b/src/JiShe.CollectBus.Protocol.Contracts/ProtocolConst.cs @@ -17,15 +17,28 @@ namespace JiShe.CollectBus.Protocol.Contracts /// /// 1分钟采集电表数据下行消息主题 /// - public const string SubscriberWorkerOneMinuteIssuedEventName = "issued.oneminute.event"; + public const string AmmeterSubscriberWorkerOneMinuteIssuedEventName = "issued.one.ammeter.event"; /// /// 5分钟采集电表数据下行消息主题 /// - public const string SubscriberWorkerFiveMinuteIssuedEventName = "issued.fiveminute.event"; + public const string AmmeterSubscriberWorkerFiveMinuteIssuedEventName = "issued.five.ammeter.event"; /// /// 15分钟采集电表数据下行消息主题 /// - public const string SubscriberWorkerFifteenMinuteIssuedEventName = "issued.fifteenminute.event"; + public const string AmmeterSubscriberWorkerFifteenMinuteIssuedEventName = "issued.fifteen.ammeter.event"; + + /// + /// 1分钟采集水表数据下行消息主题 + /// + public const string WatermeterSubscriberWorkerOneMinuteIssuedEventName = "issued.one.watermeter.event"; + /// + /// 5分钟采集水表数据下行消息主题 + /// + public const string WatermeterSubscriberWorkerFiveMinuteIssuedEventName = "issued.five.watermeter.event"; + /// + /// 15分钟采集水表数据下行消息主题 + /// + public const string WatermeterSubscriberWorkerFifteenMinuteIssuedEventName = "issued.fifteen.watermeter.event"; } }