This commit is contained in:
郭睿 2024-12-06 16:50:46 +08:00
parent 4644bccbb3
commit de790170f0
4 changed files with 40 additions and 15 deletions

View File

@ -26,6 +26,7 @@ using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto;
using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto.HistoryData; using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto.HistoryData;
using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto.SearchCondition; using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto.SearchCondition;
using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionSettingDto; using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionSettingDto;
using YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport;
using YunDa.SOMS.Entities.GeneralInformation; using YunDa.SOMS.Entities.GeneralInformation;
namespace YunDa.ISAS.Application.GeneralInformation namespace YunDa.ISAS.Application.GeneralInformation
@ -46,7 +47,7 @@ namespace YunDa.ISAS.Application.GeneralInformation
private readonly IRepository<ImProtectDevice,string> _imProtectDeviceRepository; private readonly IRepository<ImProtectDevice,string> _imProtectDeviceRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IUnitOfWorkManager _unitOfWorkManager;
IRedisRepository<List<NameIntValueProperty>, string> _deviceBoardStatesRedis; IRedisRepository<DeviceBoardStates, string> _deviceBoardStatesRedis;
string deviceIORedisKey = "deviceIO"; string deviceIORedisKey = "deviceIO";
IRedisRepository<IOState, string> _deviceIOsRedis; IRedisRepository<IOState, string> _deviceIOsRedis;
@ -70,7 +71,7 @@ namespace YunDa.ISAS.Application.GeneralInformation
IRepository<BoardCardInfo, Guid> boardCardInfoRepository, IRepository<BoardCardInfo, Guid> boardCardInfoRepository,
IRepository<BoardCardHistory, Guid> boardCardHistoryRepository, IRepository<BoardCardHistory, Guid> boardCardHistoryRepository,
IRepository<ManufacturerInfo, Guid> manufacturerInfoRepository, IRepository<ManufacturerInfo, Guid> manufacturerInfoRepository,
IRedisRepository<List<NameIntValueProperty>, string> deviceBoardStatesRedis, IRedisRepository<DeviceBoardStates, string> deviceBoardStatesRedis,
IRedisRepository<IOState, string> deviceIOsRedis, IRedisRepository<IOState, string> deviceIOsRedis,
IRepository<ProtectionDeviceType, Guid> protectionDeviceTypeRepository, IRepository<ProtectionDeviceType, Guid> protectionDeviceTypeRepository,
ISessionAppService sessionAppService ISessionAppService sessionAppService
@ -361,7 +362,7 @@ namespace YunDa.ISAS.Application.GeneralInformation
{ {
var state = await _deviceBoardStatesRedis.HashSetGetAllAsync(deviceBoardStatesRedisKey, protectionDeviceInfo.DeviceAddress.ToString()); 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; rst.Flag = true;
} }
} }

View File

@ -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<NameIntValueProperty> States { get; set; }
[MessagePackFormatter(typeof(DateTimeAsUnixTimeFormatter))]
public DateTime Time { get; set; }
}
}

View File

@ -102,6 +102,9 @@ namespace YunDa.ISAS.Redis
IocManager.Register<IRedisRepository<BCodeAndNTP, string>, RedisRepository<BCodeAndNTP, string>>(); IocManager.Register<IRedisRepository<BCodeAndNTP, string>, RedisRepository<BCodeAndNTP, string>>();
IocManager.Register<IRedisRepository<List<NameIntValueProperty>, string>, RedisRepository<List<NameIntValueProperty>, string>>(); IocManager.Register<IRedisRepository<List<NameIntValueProperty>, string>, RedisRepository<List<NameIntValueProperty>, string>>();
IocManager.Register<IRedisRepository<List<NameValueProperty>, string>, RedisRepository<List<NameValueProperty>, string>>(); IocManager.Register<IRedisRepository<List<NameValueProperty>, string>, RedisRepository<List<NameValueProperty>, string>>();
IocManager.Register<IRedisRepository<DeviceBoardStates, string>, RedisRepository<DeviceBoardStates, string>>();
} }
} }
} }

View File

@ -31,14 +31,11 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
FtpFile _ftpFile; FtpFile _ftpFile;
DotNettyTcpServer _dotNettyTcpServer; DotNettyTcpServer _dotNettyTcpServer;
private readonly RedisDataRepository _redisDataRepository; private readonly RedisDataRepository _redisDataRepository;
private readonly IRedisRepository<List<NameIntValueProperty>, string> _deviceBoardStatesRedis; private readonly IRedisRepository<DeviceBoardStates, string> _deviceBoardStatesRedis;
private readonly IRedisRepository<Dictionary<string, object>, string> _dicRedis;
public ProtectionDeviceRunInfoHandle( public ProtectionDeviceRunInfoHandle(
FtpFile ftpFile, FtpFile ftpFile,
DotNettyTcpServer dotNettyTcpServer, DotNettyTcpServer dotNettyTcpServer,
IRedisRepository<List<string>, string> redisRepository, IRedisRepository<DeviceBoardStates, string> redisRepository,
IRedisRepository<List<NameIntValueProperty>, string> deviceBoardStatesRedis,
IRedisRepository<Dictionary<string, object>, string> dicRedis,
WebApiRequest webApiRequest, WebApiRequest webApiRequest,
RedisDataRepository redisDataRepository RedisDataRepository redisDataRepository
) )
@ -48,8 +45,7 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
_dotNettyTcpServer = dotNettyTcpServer; _dotNettyTcpServer = dotNettyTcpServer;
_redisDataRepository = redisDataRepository; _redisDataRepository = redisDataRepository;
_dotNettyTcpServer.MessageReceived += OnMessageReceived; // 订阅事件 _dotNettyTcpServer.MessageReceived += OnMessageReceived; // 订阅事件
_deviceBoardStatesRedis = deviceBoardStatesRedis; _deviceBoardStatesRedis = redisRepository;
_dicRedis = dicRedis;
} }
//Dictionary<byte, DeviceInfo> _deviceRunStates = new Dictionary<byte, DeviceInfo>(); //Dictionary<byte, DeviceInfo> _deviceRunStates = new Dictionary<byte, DeviceInfo>();
@ -210,11 +206,15 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
boardStates[4].Value = bit2[2] ? 0 : 1; boardStates[4].Value = bit2[2] ? 0 : 1;
boardStates[5].Value = bit2[3] ? 0 : 1; boardStates[5].Value = bit2[3] ? 0 : 1;
boardStates[6].Value = bit2[4] ? 0 : 1; boardStates[6].Value = bit2[4] ? 0 : 1;
_deviceBoardStatesRedis.HashSetUpdateOneAsync(deviceBoardStatesRedisKey, address.ToString(), boardStates); DeviceBoardStates deviceBoardStates = new DeviceBoardStates()
Dictionary<string,object> keyValuePairs = boardStates.ToDictionary(t=>t.Name,t=>(object)t.Value); {
keyValuePairs.Add("EquipmentInfoId", device.EquipmentInfoId); EquipmentInfoId = device.EquipmentInfoId,
keyValuePairs.Add("EquipmentInfoName", device.EquipmentInfoName); EquipmentInfoName = device.EquipmentInfoName,
_dicRedis.PublishAsync(deviceBoardStatesRedisChannelKey, keyValuePairs); States = boardStates,
Time = DateTime.Now,
};
_deviceBoardStatesRedis.HashSetUpdateOneAsync(deviceBoardStatesRedisKey, address.ToString(), deviceBoardStates);
_deviceBoardStatesRedis.PublishAsync(deviceBoardStatesRedisChannelKey, deviceBoardStates);
} }
string deviceBoardStatesRedisKey = "deviceBoardStates"; string deviceBoardStatesRedisKey = "deviceBoardStates";
string deviceBoardStatesRedisChannelKey = "deviceBoardStatesChannel"; string deviceBoardStatesRedisChannelKey = "deviceBoardStatesChannel";