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.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<ImProtectDevice,string> _imProtectDeviceRepository;
private readonly IUnitOfWorkManager _unitOfWorkManager;
IRedisRepository<List<NameIntValueProperty>, string> _deviceBoardStatesRedis;
IRedisRepository<DeviceBoardStates, string> _deviceBoardStatesRedis;
string deviceIORedisKey = "deviceIO";
IRedisRepository<IOState, string> _deviceIOsRedis;
@ -70,7 +71,7 @@ namespace YunDa.ISAS.Application.GeneralInformation
IRepository<BoardCardInfo, Guid> boardCardInfoRepository,
IRepository<BoardCardHistory, Guid> boardCardHistoryRepository,
IRepository<ManufacturerInfo, Guid> manufacturerInfoRepository,
IRedisRepository<List<NameIntValueProperty>, string> deviceBoardStatesRedis,
IRedisRepository<DeviceBoardStates, string> deviceBoardStatesRedis,
IRedisRepository<IOState, string> deviceIOsRedis,
IRepository<ProtectionDeviceType, Guid> 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;
}
}

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<List<NameIntValueProperty>, string>, RedisRepository<List<NameIntValueProperty>, 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;
DotNettyTcpServer _dotNettyTcpServer;
private readonly RedisDataRepository _redisDataRepository;
private readonly IRedisRepository<List<NameIntValueProperty>, string> _deviceBoardStatesRedis;
private readonly IRedisRepository<Dictionary<string, object>, string> _dicRedis;
private readonly IRedisRepository<DeviceBoardStates, string> _deviceBoardStatesRedis;
public ProtectionDeviceRunInfoHandle(
FtpFile ftpFile,
DotNettyTcpServer dotNettyTcpServer,
IRedisRepository<List<string>, string> redisRepository,
IRedisRepository<List<NameIntValueProperty>, string> deviceBoardStatesRedis,
IRedisRepository<Dictionary<string, object>, string> dicRedis,
IRedisRepository<DeviceBoardStates, string> 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<byte, DeviceInfo> _deviceRunStates = new Dictionary<byte, DeviceInfo>();
@ -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<string,object> 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";