1
This commit is contained in:
parent
43534d456f
commit
cdbb1bf474
@ -396,7 +396,7 @@ namespace YunDa.ISAS.Application.GeneralInformation
|
|||||||
{
|
{
|
||||||
eventDescription.AppendLine($"更改了设备的生产日期: {deviceBoardCard.ProductionDate} -> {input.ProductionDate}");
|
eventDescription.AppendLine($"更改了设备的生产日期: {deviceBoardCard.ProductionDate} -> {input.ProductionDate}");
|
||||||
}
|
}
|
||||||
boardHistory.EventDescription = eventDescription.ToString();
|
boardHistory.EventDescription = eventDescription.ToString().TrimEnd(',');
|
||||||
boardHistory.EventRecordType = EventRecordTypeEnum.Board;
|
boardHistory.EventRecordType = EventRecordTypeEnum.Board;
|
||||||
boardHistory.Remark = input.Remark;
|
boardHistory.Remark = input.Remark;
|
||||||
_boardCardHistoryRepository.Insert(boardHistory);
|
_boardCardHistoryRepository.Insert(boardHistory);
|
||||||
@ -807,7 +807,7 @@ namespace YunDa.ISAS.Application.GeneralInformation
|
|||||||
RecodeDate = DateTime.Now,
|
RecodeDate = DateTime.Now,
|
||||||
ContentJson = json,
|
ContentJson = json,
|
||||||
ContentNewJson = newJson,
|
ContentNewJson = newJson,
|
||||||
EventDescription = eventDescription.ToString(),
|
EventDescription = eventDescription.ToString().TrimEnd(','),
|
||||||
EventRecordType = eventRecordType,
|
EventRecordType = eventRecordType,
|
||||||
SeqNo = deviceBoards.Count > 0 ? deviceBoards.Max(t => t.SeqNo) + 1 : 1,
|
SeqNo = deviceBoards.Count > 0 ? deviceBoards.Max(t => t.SeqNo) + 1 : 1,
|
||||||
IsSend = false // 默认为未发送,您可以根据需要调整
|
IsSend = false // 默认为未发送,您可以根据需要调整
|
||||||
|
@ -394,7 +394,7 @@ namespace YunDa.ISAS.Application.GeneralInformation
|
|||||||
eventDescription.AppendLine($"更改了设备的生产日期: {protectionDevice.EquipmentInfo.ProductionDate} -> {input.ProductionDate}");
|
eventDescription.AppendLine($"更改了设备的生产日期: {protectionDevice.EquipmentInfo.ProductionDate} -> {input.ProductionDate}");
|
||||||
}
|
}
|
||||||
deviceHistory.Name = protectionDevice.Name;
|
deviceHistory.Name = protectionDevice.Name;
|
||||||
deviceHistory.EventDescription = eventDescription.ToString();
|
deviceHistory.EventDescription = eventDescription.ToString().TrimEnd(',');
|
||||||
deviceHistory.EventRecordType = EventRecordTypeEnum.Device;
|
deviceHistory.EventRecordType = EventRecordTypeEnum.Device;
|
||||||
deviceHistory.Remark = input.Remark;
|
deviceHistory.Remark = input.Remark;
|
||||||
_protectionDeviceHistoryRepository.Insert(deviceHistory);
|
_protectionDeviceHistoryRepository.Insert(deviceHistory);
|
||||||
@ -1271,6 +1271,7 @@ namespace YunDa.ISAS.Application.GeneralInformation
|
|||||||
}
|
}
|
||||||
return rst;
|
return rst;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 填充出厂编号
|
/// 填充出厂编号
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Abp.Application.Services;
|
using Abp.Application.Services;
|
||||||
|
using Abp.Auditing;
|
||||||
using Abp.Authorization;
|
using Abp.Authorization;
|
||||||
using Abp.Collections.Extensions;
|
using Abp.Collections.Extensions;
|
||||||
using Abp.Domain.Repositories;
|
using Abp.Domain.Repositories;
|
||||||
@ -9,10 +10,13 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ToolLibrary.LogHelper;
|
||||||
using YunDa.ISAS.Application.Core;
|
using YunDa.ISAS.Application.Core;
|
||||||
using YunDa.ISAS.Application.Core.Session;
|
using YunDa.ISAS.Application.Core.Session;
|
||||||
using YunDa.ISAS.Application.Core.SwaggerHelper;
|
using YunDa.ISAS.Application.Core.SwaggerHelper;
|
||||||
using YunDa.ISAS.DataTransferObject;
|
using YunDa.ISAS.DataTransferObject;
|
||||||
|
using YunDa.ISAS.Redis.Repositories;
|
||||||
|
using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto;
|
||||||
using YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport;
|
using YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport;
|
||||||
using YunDa.SOMS.Entities.GeneralInformation;
|
using YunDa.SOMS.Entities.GeneralInformation;
|
||||||
|
|
||||||
@ -25,16 +29,18 @@ namespace YunDa.ISAS.Application.GeneralInformation.ProtectionDevice
|
|||||||
|
|
||||||
private readonly IRepository<SecondaryCircuitProtectionDevice, Guid> _secondaryCircuitProtectionDeviceRepository;
|
private readonly IRepository<SecondaryCircuitProtectionDevice, Guid> _secondaryCircuitProtectionDeviceRepository;
|
||||||
|
|
||||||
|
private readonly IRedisRepository<ProtectionDeviceCommInfoOutput, string> _protectionDeviceCommInfoRedis;
|
||||||
public ProtecttionDeviceRedisAppService(ISessionAppService sessionAppService,
|
public ProtecttionDeviceRedisAppService(ISessionAppService sessionAppService,
|
||||||
IRepository<SecondaryCircuit, Guid> secondaryCircuitRepository,
|
IRepository<SecondaryCircuit, Guid> secondaryCircuitRepository,
|
||||||
IRepository<ProtectionDeviceInfo, Guid> protectionDeviceInfoRepository,
|
IRepository<ProtectionDeviceInfo, Guid> protectionDeviceInfoRepository,
|
||||||
|
IRedisRepository<ProtectionDeviceCommInfoOutput, string> protectionDeviceCommInfoRedis,
|
||||||
IRepository<SecondaryCircuitProtectionDevice, Guid> secondaryCircuitProtectionDeviceRepository
|
IRepository<SecondaryCircuitProtectionDevice, Guid> secondaryCircuitProtectionDeviceRepository
|
||||||
) : base(sessionAppService)
|
) : base(sessionAppService)
|
||||||
{
|
{
|
||||||
_protectionDeviceInfoRepository = protectionDeviceInfoRepository;
|
_protectionDeviceInfoRepository = protectionDeviceInfoRepository;
|
||||||
_secondaryCircuitRepository = secondaryCircuitRepository;
|
_secondaryCircuitRepository = secondaryCircuitRepository;
|
||||||
_secondaryCircuitProtectionDeviceRepository = secondaryCircuitProtectionDeviceRepository;
|
_secondaryCircuitProtectionDeviceRepository = secondaryCircuitProtectionDeviceRepository;
|
||||||
|
_protectionDeviceCommInfoRedis = protectionDeviceCommInfoRedis;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取装置自检信息
|
/// 获取装置自检信息
|
||||||
@ -198,6 +204,35 @@ namespace YunDa.ISAS.Application.GeneralInformation.ProtectionDevice
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return rst;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 查询保护装置在线情况
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="stationId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[AbpAllowAnonymous]
|
||||||
|
[HttpGet]
|
||||||
|
[DisableAuditing]
|
||||||
|
[ShowApi]
|
||||||
|
public async Task<RequestResult<List<ProtectionDeviceCommInfoOutput>>> GetProtectionDeviceCommInfoAsync(Guid stationId)
|
||||||
|
{
|
||||||
|
string protectionDeviceCommInfoRedisKey = "protectionDeviceCommInfo";
|
||||||
|
|
||||||
|
RequestResult<List<ProtectionDeviceCommInfoOutput>> rst = new RequestResult<List<ProtectionDeviceCommInfoOutput>>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var datas = await _protectionDeviceCommInfoRedis.HashSetGetAllAsync(protectionDeviceCommInfoRedisKey);
|
||||||
|
rst.ResultData = datas.ToList();
|
||||||
|
rst.Flag = true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
rst.Message = ex.Message;
|
||||||
|
|
||||||
|
Log4Helper.Error(this.GetType(), "查询保护装置在线情况", ex);
|
||||||
|
}
|
||||||
|
|
||||||
return rst;
|
return rst;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
using System;
|
using MessagePack;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto
|
namespace YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto
|
||||||
@ -9,6 +11,7 @@ namespace YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoD
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 保护装置通信地址
|
/// 保护装置通信地址
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[MessagePackObject(keyAsPropertyName: true)]
|
||||||
public class ProtectionDeviceCommInfoOutput
|
public class ProtectionDeviceCommInfoOutput
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -16,7 +19,6 @@ namespace YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoD
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid EquipmentInfoId { get; set; }
|
public Guid EquipmentInfoId { get; set; }
|
||||||
public string EquipmentInfoName { get; set; }
|
public string EquipmentInfoName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 保护装置id
|
/// 保护装置id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -37,6 +39,11 @@ namespace YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoD
|
|||||||
public string Sntp1 { get; set; }
|
public string Sntp1 { get; set; }
|
||||||
public string Sntp2 { get; set; }
|
public string Sntp2 { get; set; }
|
||||||
public bool IsZY { get; set; }
|
public bool IsZY { get; set; }
|
||||||
|
//[MessagePackFormatter(typeof(DateTimeAsUnixTimeFormatter))]
|
||||||
|
[IgnoreMember]
|
||||||
|
[JsonIgnore]
|
||||||
|
public DateTime LastComTime { get; set; }
|
||||||
|
public bool IsOnline { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15670,6 +15670,16 @@
|
|||||||
信号类型的枚举
|
信号类型的枚举
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.DeviceHistoryChange.DeviceProductionInfo">
|
||||||
|
<summary>
|
||||||
|
装置信息
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.DeviceHistoryChange.SoftwareVersionHistoryInfo">
|
||||||
|
<summary>
|
||||||
|
基线版本
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.DeviceOperationWarning.DeviceParameterInfo">
|
<member name="T:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.DeviceOperationWarning.DeviceParameterInfo">
|
||||||
<summary>
|
<summary>
|
||||||
设备参数信息
|
设备参数信息
|
||||||
@ -15700,6 +15710,11 @@
|
|||||||
板卡信息
|
板卡信息
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.DeviceTcpData.CommunicationParameters">
|
||||||
|
<summary>
|
||||||
|
通信参数
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport.AbnormalComponent">
|
<member name="T:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport.AbnormalComponent">
|
||||||
<summary>
|
<summary>
|
||||||
装置自检
|
装置自检
|
||||||
|
@ -103,6 +103,7 @@ namespace YunDa.ISAS.Redis
|
|||||||
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>>();
|
IocManager.Register<IRedisRepository<DeviceBoardStates, string>, RedisRepository<DeviceBoardStates, string>>();
|
||||||
|
IocManager.Register<IRedisRepository<ProtectionDeviceCommInfoOutput, string>, RedisRepository<ProtectionDeviceCommInfoOutput, string>>();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -65,14 +65,13 @@ namespace YunDa.ISAS.Redis.Repositories
|
|||||||
}
|
}
|
||||||
public async Task<long> PublishAsync(string channel,TEntity entity)
|
public async Task<long> PublishAsync(string channel,TEntity entity)
|
||||||
{
|
{
|
||||||
//string jsonMessage = JsonSerializer.Serialize(message);
|
|
||||||
var jsonMessage = GetSerializeObjectString(entity); //序列化
|
|
||||||
// 显式指定 RedisChannel
|
|
||||||
var redisChannel = new RedisChannel(channel, RedisChannel.PatternMode.Literal);
|
|
||||||
|
|
||||||
|
var jsonMessage = GetSerializeObjectString(entity); //序列化
|
||||||
|
var redisChannel = new RedisChannel(channel, RedisChannel.PatternMode.Literal);
|
||||||
// 发布消息
|
// 发布消息
|
||||||
return await _subscriber.PublishAsync(redisChannel, jsonMessage);
|
return await _subscriber.PublishAsync(redisChannel, jsonMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
public event Action<string, TEntity> OnMessageReceived;
|
public event Action<string, TEntity> OnMessageReceived;
|
||||||
// 订阅接口,支持模式匹配
|
// 订阅接口,支持模式匹配
|
||||||
public void Subscribe(string pattern)
|
public void Subscribe(string pattern)
|
||||||
|
@ -115,7 +115,6 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis
|
|||||||
|
|
||||||
await _protectionDeviceDataCenter.InitProtectionDeviceComms();
|
await _protectionDeviceDataCenter.InitProtectionDeviceComms();
|
||||||
await InitSecondaryCircuitLogicExpressionDic();
|
await InitSecondaryCircuitLogicExpressionDic();
|
||||||
_protectionDeviceDataCenter.InitDevices();
|
|
||||||
}
|
}
|
||||||
_dataCollectionTask.CollectionStart(settingModel, startWebsocket);//开启数据采集
|
_dataCollectionTask.CollectionStart(settingModel, startWebsocket);//开启数据采集
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ using ToolLibrary.LogHelper;
|
|||||||
using Yunda.ISAS.DataMonitoringServer.DataAnalysis;
|
using Yunda.ISAS.DataMonitoringServer.DataAnalysis;
|
||||||
using Yunda.SOMS.DataMonitoringServer.TcpSocket.Server;
|
using Yunda.SOMS.DataMonitoringServer.TcpSocket.Server;
|
||||||
using YunDa.ISAS.Redis.Repositories;
|
using YunDa.ISAS.Redis.Repositories;
|
||||||
|
using YunDa.SOMS.Commdb.Models;
|
||||||
using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto;
|
using YunDa.SOMS.DataTransferObject.GeneralInformation.ProtectionDeviceInfoDto;
|
||||||
namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
||||||
{
|
{
|
||||||
@ -25,6 +26,8 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
|||||||
ProtectionDeviceSelfCheckHandle _protectionDeviceSelfCheckHandle;
|
ProtectionDeviceSelfCheckHandle _protectionDeviceSelfCheckHandle;
|
||||||
ProtectionDeviceBCodeHandle _protectionDeviceBCodeHandle;
|
ProtectionDeviceBCodeHandle _protectionDeviceBCodeHandle;
|
||||||
IRedisRepository<int[], string> _deviceBoardStatesRedis;
|
IRedisRepository<int[], string> _deviceBoardStatesRedis;
|
||||||
|
IRedisRepository<ProtectionDeviceCommInfoOutput, string> _protectionDeviceCommInfoRedis;
|
||||||
|
|
||||||
DotNettyTcpServer _dotNettyTcpServer;
|
DotNettyTcpServer _dotNettyTcpServer;
|
||||||
string deviceBoardStatesRedisKey = "deviceBoardStates";
|
string deviceBoardStatesRedisKey = "deviceBoardStates";
|
||||||
ConcurrentBag<Process> _processes = new ConcurrentBag<Process>();
|
ConcurrentBag<Process> _processes = new ConcurrentBag<Process>();
|
||||||
@ -37,6 +40,7 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
|||||||
, ProtectionDeviceRunInfoHandle protectionDeviceRunInfoHandle
|
, ProtectionDeviceRunInfoHandle protectionDeviceRunInfoHandle
|
||||||
,ProtectionDeviceBCodeHandle protectionDeviceBCodeHandle
|
,ProtectionDeviceBCodeHandle protectionDeviceBCodeHandle
|
||||||
, IRedisRepository<int[], string> deviceBoardStatesRedis
|
, IRedisRepository<int[], string> deviceBoardStatesRedis
|
||||||
|
, IRedisRepository<ProtectionDeviceCommInfoOutput, string> protectionDeviceCommInfoRedis
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_webApiRequest = webApiRequest;
|
_webApiRequest = webApiRequest;
|
||||||
@ -47,44 +51,34 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
|||||||
_protectionDeviceRunInfoHandle = protectionDeviceRunInfoHandle;
|
_protectionDeviceRunInfoHandle = protectionDeviceRunInfoHandle;
|
||||||
_deviceBoardStatesRedis = deviceBoardStatesRedis;
|
_deviceBoardStatesRedis = deviceBoardStatesRedis;
|
||||||
_protectionDeviceSelfCheckHandle = protectionDeviceSelfCheckHandle;
|
_protectionDeviceSelfCheckHandle = protectionDeviceSelfCheckHandle;
|
||||||
}
|
_protectionDeviceCommInfoRedis = protectionDeviceCommInfoRedis;
|
||||||
public void InitDevices()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_devices = _webApiRequest.GetProtectionDeviceCommInfos("神池南");
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log4Helper.Error(this.GetType(), "初始化装置IO错误", ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public List<ProtectionDeviceCommInfoOutput> ProtectionDeviceComms { get; set; }
|
|
||||||
public async Task InitProtectionDeviceComms()
|
public async Task InitProtectionDeviceComms()
|
||||||
{
|
{
|
||||||
MonitoringEventBus.LogHandler("开始启动103客户端", "装置定值");
|
MonitoringEventBus.LogHandler("开始启动103客户端", "装置定值");
|
||||||
await Task.Run(async () =>
|
await Task.Run(async () =>
|
||||||
{
|
{
|
||||||
List<ProtectionDeviceCommInfoOutput> devices = _webApiRequest.GetProtectionDeviceCommInfos("神池南");
|
_devices = _webApiRequest.GetProtectionDeviceCommInfos("神池南");
|
||||||
if (devices == null)
|
if (_devices == null)
|
||||||
{
|
{
|
||||||
MonitoringEventBus.LogHandler("没有获取到装置数据", "获取信息");
|
MonitoringEventBus.LogHandler("没有获取到装置数据", "获取信息");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
_protectionDeviceDZDataHandle.Init(devices);
|
_protectionDeviceDZDataHandle.Init(_devices);
|
||||||
MonitoringEventBus.LogHandler($"共获取{devices.Count}条装置数据", "装置定值");
|
MonitoringEventBus.LogHandler($"共获取{_devices.Count}条装置数据", "装置定值");
|
||||||
string currentDirectory = AppDomain.CurrentDomain.BaseDirectory;
|
string currentDirectory = AppDomain.CurrentDomain.BaseDirectory;
|
||||||
string sourceDirectory = Path.Combine(currentDirectory, "DeviceComm");
|
string sourceDirectory = Path.Combine(currentDirectory, "DeviceComm");
|
||||||
string destDirectoryBase = Path.Combine(currentDirectory, "DeviceComms", "DeviceComm");
|
string destDirectoryBase = Path.Combine(currentDirectory, "DeviceComms", "DeviceComm");
|
||||||
|
|
||||||
|
|
||||||
// 定义一个并行处理每个设备的过程
|
// 定义一个并行处理每个设备的过程
|
||||||
Parallel.ForEach(devices, device =>
|
Parallel.ForEach(_devices, device =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -105,20 +99,36 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if(IsDeviceOnline(device.GatewayIP2))
|
||||||
|
{
|
||||||
|
string destDirectory = $"{destDirectoryBase}_{device.DeviceAddr}";
|
||||||
|
CopyDirectory(sourceDirectory, destDirectory);
|
||||||
|
string configFilePath = Path.Combine(destDirectory, "cfg", "scmgateway.ini");
|
||||||
|
ModifyDeviceAddrInConfig(configFilePath, device.GatewayIP2, device.DeviceAddr);
|
||||||
|
string exePath = Path.Combine(destDirectory, "scmgateway.exe");
|
||||||
|
var process = StartExe(exePath);
|
||||||
|
if (process != null)
|
||||||
|
{
|
||||||
|
MonitoringEventBus.LogHandler($"装置地址:{device.DeviceAddr},ip:{device.GatewayIP2} 启动成功", "装置定值");
|
||||||
|
_processes.Add(process);
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MonitoringEventBus.LogHandler($"装置地址:{device.DeviceAddr},ip:{device.GatewayIP1} {(online ? "在线" : "离线")}", "装置定值");
|
device.IsOnline = false;
|
||||||
|
MonitoringEventBus.LogHandler($"装置地址:{device.DeviceAddr},ip1:{device.GatewayIP1},ip2:{device.GatewayIP2} {(online ? "在线" : "离线")}", "装置状态");
|
||||||
}
|
}
|
||||||
|
device.IsOnline = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
||||||
MonitoringEventBus.LogHandler($"{ex.Message}", "错误信息");
|
MonitoringEventBus.LogHandler($"{ex.Message}", "错误信息");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
string protectionDeviceCommInfoRedisKey = "protectionDeviceCommInfo";
|
||||||
|
_protectionDeviceCommInfoRedis.HashSetUpdateManyAsync(protectionDeviceCommInfoRedisKey, _devices.Select(t => t.DeviceAddr.ToString()).ToList(), _devices);
|
||||||
MonitoringEventBus.LogHandler("开始启动TCP服务端", "装置定值");
|
MonitoringEventBus.LogHandler("开始启动TCP服务端", "装置定值");
|
||||||
await _dotNettyTcpServer.RunServerAsync();
|
await _dotNettyTcpServer.RunServerAsync();
|
||||||
});
|
});
|
||||||
|
@ -32,11 +32,14 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
|||||||
DotNettyTcpServer _dotNettyTcpServer;
|
DotNettyTcpServer _dotNettyTcpServer;
|
||||||
private readonly RedisDataRepository _redisDataRepository;
|
private readonly RedisDataRepository _redisDataRepository;
|
||||||
private readonly IRedisRepository<DeviceBoardStates, string> _deviceBoardStatesRedis;
|
private readonly IRedisRepository<DeviceBoardStates, string> _deviceBoardStatesRedis;
|
||||||
|
IRedisRepository<ProtectionDeviceCommInfoOutput, string> _protectionDeviceCommInfoRedis;
|
||||||
|
|
||||||
public ProtectionDeviceRunInfoHandle(
|
public ProtectionDeviceRunInfoHandle(
|
||||||
FtpFile ftpFile,
|
FtpFile ftpFile,
|
||||||
DotNettyTcpServer dotNettyTcpServer,
|
DotNettyTcpServer dotNettyTcpServer,
|
||||||
IRedisRepository<DeviceBoardStates, string> redisRepository,
|
IRedisRepository<DeviceBoardStates, string> redisRepository,
|
||||||
WebApiRequest webApiRequest,
|
WebApiRequest webApiRequest,
|
||||||
|
IRedisRepository<ProtectionDeviceCommInfoOutput, string> protectionDeviceCommInfoRedis,
|
||||||
RedisDataRepository redisDataRepository
|
RedisDataRepository redisDataRepository
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -46,12 +49,16 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
|||||||
_redisDataRepository = redisDataRepository;
|
_redisDataRepository = redisDataRepository;
|
||||||
_dotNettyTcpServer.MessageReceived += OnMessageReceived; // 订阅事件
|
_dotNettyTcpServer.MessageReceived += OnMessageReceived; // 订阅事件
|
||||||
_deviceBoardStatesRedis = redisRepository;
|
_deviceBoardStatesRedis = redisRepository;
|
||||||
|
_protectionDeviceCommInfoRedis = protectionDeviceCommInfoRedis;
|
||||||
}
|
}
|
||||||
//Dictionary<byte, DeviceInfo> _deviceRunStates = new Dictionary<byte, DeviceInfo>();
|
//Dictionary<byte, DeviceInfo> _deviceRunStates = new Dictionary<byte, DeviceInfo>();
|
||||||
//private ConcurrentDictionary<byte, int> _communicationStateCounts = new();
|
//private ConcurrentDictionary<byte, int> _communicationStateCounts = new();
|
||||||
|
|
||||||
int _commCount = 0;
|
int _commCount = 0;
|
||||||
private void OnMessageReceived(byte address, byte[] message, byte functionType)
|
string protectionDeviceCommInfoRedisKey = "protectionDeviceCommInfo";
|
||||||
|
string protectionDeviceCommInfoRedisChannel = "protectionDeviceCommInfosChannel";
|
||||||
|
|
||||||
|
private async void OnMessageReceived(byte address, byte[] message, byte functionType)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -79,6 +86,13 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
device.LastComTime = DateTime.Now;
|
||||||
|
if (!device.IsOnline)
|
||||||
|
{
|
||||||
|
await _protectionDeviceCommInfoRedis.HashSetUpdateOneAsync(protectionDeviceCommInfoRedisKey, device.DeviceAddr.ToString(), device);
|
||||||
|
await _protectionDeviceCommInfoRedis.PublishAsync(protectionDeviceCommInfoRedisChannel, device);
|
||||||
|
}
|
||||||
|
device.IsOnline = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
_commCount++;
|
_commCount++;
|
||||||
@ -88,6 +102,15 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
foreach (var item in ProtectionDeviceDataCenter._devices)
|
||||||
|
{
|
||||||
|
if (DateTime.Now - item.LastComTime>TimeSpan.FromSeconds(30)&& item.IsOnline)
|
||||||
|
{
|
||||||
|
item.IsOnline = false;
|
||||||
|
await _protectionDeviceCommInfoRedis.HashSetUpdateOneAsync(protectionDeviceCommInfoRedisKey, item.DeviceAddr.ToString(), item);
|
||||||
|
await _protectionDeviceCommInfoRedis.PublishAsync(protectionDeviceCommInfoRedisChannel, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user