diff --git a/src/YunDa.Application/YunDa.ISAS.Application/GeneralInformation/ProtectionDevice/BoardCardDevice/BoardCardInfoAppService.cs b/src/YunDa.Application/YunDa.ISAS.Application/GeneralInformation/ProtectionDevice/BoardCardDevice/BoardCardInfoAppService.cs index 8d3bc1d..eb9be3c 100644 --- a/src/YunDa.Application/YunDa.ISAS.Application/GeneralInformation/ProtectionDevice/BoardCardDevice/BoardCardInfoAppService.cs +++ b/src/YunDa.Application/YunDa.ISAS.Application/GeneralInformation/ProtectionDevice/BoardCardDevice/BoardCardInfoAppService.cs @@ -26,6 +26,7 @@ using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto; using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto.HistoryData; using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto.SearchCondition; using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionSettingDto; +using YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport; using YunDa.SOMS.Entities.GeneralInformation; namespace YunDa.ISAS.Application.GeneralInformation @@ -46,7 +47,7 @@ namespace YunDa.ISAS.Application.GeneralInformation private readonly IRepository _imProtectDeviceRepository; private readonly IUnitOfWorkManager _unitOfWorkManager; - IRedisRepository, string> _deviceBoardStatesRedis; + IRedisRepository _deviceBoardStatesRedis; string deviceIORedisKey = "deviceIO"; IRedisRepository _deviceIOsRedis; @@ -70,7 +71,7 @@ namespace YunDa.ISAS.Application.GeneralInformation IRepository boardCardInfoRepository, IRepository boardCardHistoryRepository, IRepository manufacturerInfoRepository, - IRedisRepository, string> deviceBoardStatesRedis, + IRedisRepository deviceBoardStatesRedis, IRedisRepository deviceIOsRedis, IRepository protectionDeviceTypeRepository, ISessionAppService sessionAppService @@ -361,7 +362,7 @@ namespace YunDa.ISAS.Application.GeneralInformation { var state = await _deviceBoardStatesRedis.HashSetGetAllAsync(deviceBoardStatesRedisKey, protectionDeviceInfo.DeviceAddress.ToString()); - rst.ResultData = state.Select(t=>new DeviceRunState { Name = t.Name,State = t.Value}).ToList(); + rst.ResultData = state.States.Select(t=>new DeviceRunState { Name = t.Name,State = t.Value}).ToList(); rst.Flag = true; } } diff --git a/src/YunDa.Application/YunDa.ISAS.DataTransferObject/MainStationMaintenanceInfo/OperationReport/DeviceBoardStates.cs b/src/YunDa.Application/YunDa.ISAS.DataTransferObject/MainStationMaintenanceInfo/OperationReport/DeviceBoardStates.cs new file mode 100644 index 0000000..2be0522 --- /dev/null +++ b/src/YunDa.Application/YunDa.ISAS.DataTransferObject/MainStationMaintenanceInfo/OperationReport/DeviceBoardStates.cs @@ -0,0 +1,21 @@ +using MessagePack; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Permissions; +using System.Text; +using System.Threading.Tasks; +using YunDa.SOMS.DataTransferObject.CommonDto; + +namespace YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport +{ + [MessagePackObject(keyAsPropertyName: true)] + public class DeviceBoardStates + { + public Guid EquipmentInfoId { get; set; } + public string EquipmentInfoName { get; set; } + public List States { get; set; } + [MessagePackFormatter(typeof(DateTimeAsUnixTimeFormatter))] + public DateTime Time { get; set; } + } +} diff --git a/src/YunDa.Domain/YunDa.ISAS.Redis/ISASRedisModule.cs b/src/YunDa.Domain/YunDa.ISAS.Redis/ISASRedisModule.cs index db68448..4d41e8b 100644 --- a/src/YunDa.Domain/YunDa.ISAS.Redis/ISASRedisModule.cs +++ b/src/YunDa.Domain/YunDa.ISAS.Redis/ISASRedisModule.cs @@ -102,6 +102,9 @@ namespace YunDa.ISAS.Redis IocManager.Register, RedisRepository>(); IocManager.Register, string>, RedisRepository, string>>(); IocManager.Register, string>, RedisRepository, string>>(); + IocManager.Register, RedisRepository>(); + + } } } diff --git a/src/YunDa.Server/Yunda.ISAS.DataMonitoringServer/ProtectionDeviceHandle/ProtectionDeviceRunInfoHandle.cs b/src/YunDa.Server/Yunda.ISAS.DataMonitoringServer/ProtectionDeviceHandle/ProtectionDeviceRunInfoHandle.cs index 557338e..bf1d2a0 100644 --- a/src/YunDa.Server/Yunda.ISAS.DataMonitoringServer/ProtectionDeviceHandle/ProtectionDeviceRunInfoHandle.cs +++ b/src/YunDa.Server/Yunda.ISAS.DataMonitoringServer/ProtectionDeviceHandle/ProtectionDeviceRunInfoHandle.cs @@ -31,14 +31,11 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle FtpFile _ftpFile; DotNettyTcpServer _dotNettyTcpServer; private readonly RedisDataRepository _redisDataRepository; - private readonly IRedisRepository, string> _deviceBoardStatesRedis; - private readonly IRedisRepository, string> _dicRedis; + private readonly IRedisRepository _deviceBoardStatesRedis; public ProtectionDeviceRunInfoHandle( FtpFile ftpFile, DotNettyTcpServer dotNettyTcpServer, - IRedisRepository, string> redisRepository, - IRedisRepository, string> deviceBoardStatesRedis, - IRedisRepository, string> dicRedis, + IRedisRepository redisRepository, WebApiRequest webApiRequest, RedisDataRepository redisDataRepository ) @@ -48,8 +45,7 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle _dotNettyTcpServer = dotNettyTcpServer; _redisDataRepository = redisDataRepository; _dotNettyTcpServer.MessageReceived += OnMessageReceived; // 订阅事件 - _deviceBoardStatesRedis = deviceBoardStatesRedis; - _dicRedis = dicRedis; + _deviceBoardStatesRedis = redisRepository; } //Dictionary _deviceRunStates = new Dictionary(); @@ -210,11 +206,15 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle boardStates[4].Value = bit2[2] ? 0 : 1; boardStates[5].Value = bit2[3] ? 0 : 1; boardStates[6].Value = bit2[4] ? 0 : 1; - _deviceBoardStatesRedis.HashSetUpdateOneAsync(deviceBoardStatesRedisKey, address.ToString(), boardStates); - Dictionary keyValuePairs = boardStates.ToDictionary(t=>t.Name,t=>(object)t.Value); - keyValuePairs.Add("EquipmentInfoId", device.EquipmentInfoId); - keyValuePairs.Add("EquipmentInfoName", device.EquipmentInfoName); - _dicRedis.PublishAsync(deviceBoardStatesRedisChannelKey, keyValuePairs); + DeviceBoardStates deviceBoardStates = new DeviceBoardStates() + { + EquipmentInfoId = device.EquipmentInfoId, + EquipmentInfoName = device.EquipmentInfoName, + States = boardStates, + Time = DateTime.Now, + }; + _deviceBoardStatesRedis.HashSetUpdateOneAsync(deviceBoardStatesRedisKey, address.ToString(), deviceBoardStates); + _deviceBoardStatesRedis.PublishAsync(deviceBoardStatesRedisChannelKey, deviceBoardStates); } string deviceBoardStatesRedisKey = "deviceBoardStates"; string deviceBoardStatesRedisChannelKey = "deviceBoardStatesChannel";