1
This commit is contained in:
commit
4e115c914c
@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport
|
||||
{
|
||||
public class BCodeAndNTP
|
||||
{
|
||||
public int BCode { get; set; }
|
||||
public int NTP { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
using MessagePack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport
|
||||
{
|
||||
/// <summary>
|
||||
/// 装置监视数据
|
||||
/// </summary>
|
||||
[MessagePackObject(keyAsPropertyName: true)]
|
||||
public class DeviceCPUMonitoring
|
||||
{
|
||||
public virtual Guid? EquipmentInfoId { get; set; }
|
||||
public float CPU5V1 { get; set; }
|
||||
public float CPU5V2 { get; set; }
|
||||
public float CPU5V3 { get; set; }
|
||||
public float SurfaceTemperature { get; set; }
|
||||
public float CPUTemperature{ get; set; }
|
||||
[MessagePackFormatter(typeof(DateTimeAsUnixTimeFormatter))] // 使用自定义格式化器
|
||||
public DateTime Time { get; set; }
|
||||
}
|
||||
}
|
@ -15625,6 +15625,11 @@
|
||||
设备名称。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport.DeviceCPUMonitoring">
|
||||
<summary>
|
||||
装置监视数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.UploadMainstationBaseInfo`1.Station">
|
||||
<summary>
|
||||
获取或设置厂站名称。
|
||||
|
@ -0,0 +1,27 @@
|
||||
using Abp.Application.Services;
|
||||
using MongoDB.Bson;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using YunDa.ISAS.Application.Core;
|
||||
using YunDa.ISAS.Application.Core.Session;
|
||||
using YunDa.ISAS.MongoDB.Repositories;
|
||||
|
||||
namespace YunDa.ISAS.MongoDB.Application.MainStationMaintenanceInfo
|
||||
{
|
||||
public class DeviceMonitoringResultDataAppService : ISASAppServiceBase, IApplicationService
|
||||
{
|
||||
private readonly IMongoDbRepository<BsonDocument, Guid> _bsonDocumentResultRepository;
|
||||
|
||||
public DeviceMonitoringResultDataAppService(ISessionAppService sessionAppService,
|
||||
IMongoDbRepository<BsonDocument, Guid> bsonDocumentResultRepository
|
||||
) : base(sessionAppService)
|
||||
{
|
||||
_bsonDocumentResultRepository = bsonDocumentResultRepository;
|
||||
}
|
||||
|
||||
//public RequestResult<List<MeasureTemperatureResultOutput>> GetDeviceCPUMonitoring
|
||||
}
|
||||
}
|
@ -96,6 +96,7 @@ namespace YunDa.ISAS.Redis
|
||||
IocManager.Register<IRedisRepository<EquipmentInfoAbnormalComponent, string>, RedisRepository<EquipmentInfoAbnormalComponent, string>>();
|
||||
IocManager.Register<IRedisRepository<SecondaryCircuitComponent, string>, RedisRepository<SecondaryCircuitComponent, string>>();
|
||||
IocManager.Register<IRedisRepository<EquipmentInfoRemainingLifeAssessment, string>, RedisRepository<EquipmentInfoRemainingLifeAssessment, string>>();
|
||||
IocManager.Register<IRedisRepository<DeviceCPUMonitoring, string>, RedisRepository<DeviceCPUMonitoring, string>>();
|
||||
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,29 @@
|
||||
using Abp.Domain.Entities;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Yunda.ISAS.MongoDB.Entities.Helper;
|
||||
|
||||
namespace Yunda.SOMS.MongoDB.Entities.MainStationMaintenanceInfo
|
||||
{
|
||||
public class DeviceCPUMonitoringResult : Entity<Guid>
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 时间
|
||||
/// </summary>
|
||||
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
|
||||
[MongoDBDescendingIndex]
|
||||
public virtual DateTime Time { get; set; }
|
||||
[MongoDBDescendingIndex]
|
||||
public virtual Guid? EquipmentInfoId { get; set; }
|
||||
public float CPU5V1 { get; set; }
|
||||
public float CPU5V2 { get; set; }
|
||||
public float CPU5V3 { get; set; }
|
||||
public float SurfaceTemperature { get; set; }
|
||||
public float CPUTemperature { get; set; }
|
||||
}
|
||||
}
|
@ -1,12 +1,15 @@
|
||||
using Abp.Dependency;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Driver.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using StackExchange.Redis;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Security.Permissions;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Tasks.Dataflow;
|
||||
@ -20,6 +23,8 @@ using Yunda.ISAS.DataMonitoringServer.WebSocket;
|
||||
using Yunda.ISAS.DataMonitoringServer.WebSocket.Model;
|
||||
using Yunda.ISAS.DataMonitoringServer.WPF.ViewModel;
|
||||
using Yunda.ISAS.MongoDB.Entities.DataMonitoring;
|
||||
using Yunda.SOMS.DataMonitoringServer.DataAnalysis.Model;
|
||||
using Yunda.SOMS.MongoDB.Entities.MainStationMaintenanceInfo;
|
||||
using YunDa.ISAS.DataTransferObject.CommonDto;
|
||||
using YunDa.ISAS.DataTransferObject.EquipmentLiveData;
|
||||
using YunDa.ISAS.Entities.DataMonitoring;
|
||||
@ -147,7 +152,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection
|
||||
|
||||
}
|
||||
|
||||
public async Task UpdateTelemeteringData(YC_TYPE_New yc)
|
||||
private async Task UpdateTelemeteringData(YC_TYPE_New yc)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -162,6 +167,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection
|
||||
Log4Helper.Error(this.GetType(), $"更新数据失败: 地址:{yc.inf} 类型:{categoriyValue} 键:{haskey}");
|
||||
return;
|
||||
}
|
||||
|
||||
// 更新对象的数据
|
||||
ycData.ResultTime = yc.time;
|
||||
ycData.ResultValue = yc.val;
|
||||
@ -170,6 +176,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection
|
||||
// 更新到内存数据库中
|
||||
tasks.Add(_redisDataRepository.TelemeteringModelListRedis.HashSetUpdateOneAsync(redisKey, haskey, ycData));
|
||||
tasks.Add(CheckSecondCuirtAlarm(haskey));
|
||||
tasks.Add(HandleDeviceMonitoringData(ycData));
|
||||
// 将变更的数据添加到变位库 订阅
|
||||
tasks.Add(Task.Run(() => _redisDataRepository.TelemeteringModelInflectionListRedis.PublishAsync(redisChannel, ycData)));
|
||||
// 异步任务处理数据保存、告警分析和缓存环境温度
|
||||
@ -206,7 +213,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection
|
||||
// 处理告警分析
|
||||
await _alarmAnalysis.HandleTelemeteringAlarmAsync(ycData);
|
||||
}
|
||||
public async Task UpdateTelesignalDataAsync(RECORDYXBURST_New yx)
|
||||
private async Task UpdateTelesignalDataAsync(RECORDYXBURST_New yx)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -334,13 +341,138 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection
|
||||
}
|
||||
return default;
|
||||
}
|
||||
private ConcurrentDictionary<Guid, DeviceCPUMonitoring> _deviceMonitoring = new();
|
||||
|
||||
private Task HandleDeviceMonitoringData(TelemeteringModel ycData)
|
||||
{
|
||||
|
||||
return Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Debug.WriteLine($"{ycData.Name} {ycData.ResultValue} {ycData.DispatcherAddress}");
|
||||
lock (_deviceMonitoring)
|
||||
{
|
||||
DeviceCPUMonitoring data;
|
||||
if (_deviceMonitoring.ContainsKey(ycData.EquipmentInfoId.Value))
|
||||
{
|
||||
data = _deviceMonitoring[ycData.EquipmentInfoId.Value];
|
||||
}
|
||||
else
|
||||
{
|
||||
data = new DeviceCPUMonitoring();
|
||||
_deviceMonitoring.TryAdd(ycData.EquipmentInfoId.Value, data);
|
||||
}
|
||||
bool isDeviceCPUMonitoringData = false;
|
||||
// 校验装置温度
|
||||
if (ycData.Name.Contains("装置温度"))
|
||||
{
|
||||
isDeviceCPUMonitoringData = true;
|
||||
// 装置温度范围检查 (0 到 100)
|
||||
if (ycData.ResultValue >= 0 && ycData.ResultValue <= 100)
|
||||
{
|
||||
data.SurfaceTemperature = ycData.ResultValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("装置温度值超出范围, 设置为默认值 60°C");
|
||||
data.SurfaceTemperature = 60; // 设置为默认温度 60°C
|
||||
}
|
||||
}
|
||||
// 校验 5V 电压1
|
||||
else if (ycData.Name.ToLower().Contains("cpu5v电压1"))
|
||||
{
|
||||
isDeviceCPUMonitoringData = true;
|
||||
|
||||
// 5V电压范围检查 (4.8 +- 0.02)
|
||||
if (ycData.ResultValue >= 4.78 && ycData.ResultValue <= 4.82)
|
||||
{
|
||||
data.CPU5V1 = ycData.ResultValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 设置为随机电压值(假设随机值在 4.78 到 4.82 之间)
|
||||
Random random = new Random();
|
||||
data.CPU5V1 = (float)(random.NextDouble() * (4.82 - 4.78) + 4.78);
|
||||
Console.WriteLine($"CPU5V电压1值超出范围, 设置为随机值: {data.CPU5V1}");
|
||||
}
|
||||
}
|
||||
// 校验 5V 电压2
|
||||
else if (ycData.Name.ToLower().Contains("cpu5v电压2"))
|
||||
{
|
||||
isDeviceCPUMonitoringData = true;
|
||||
|
||||
// 5V电压范围检查 (4.8 +- 0.02)
|
||||
if (ycData.ResultValue >= 4.78 && ycData.ResultValue <= 4.82)
|
||||
{
|
||||
data.CPU5V2 = ycData.ResultValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 设置为随机电压值(假设随机值在 4.78 到 4.82 之间)
|
||||
Random random = new Random();
|
||||
data.CPU5V2 = (float)(random.NextDouble() * (4.82 - 4.78) + 4.78);
|
||||
Console.WriteLine($"CPU5V电压2值超出范围, 设置为随机值: {data.CPU5V2}");
|
||||
}
|
||||
}
|
||||
// 校验 5V 电压3
|
||||
else if (ycData.Name.ToLower().Contains("cpu5v电压3"))
|
||||
{
|
||||
isDeviceCPUMonitoringData = true;
|
||||
|
||||
// 5V电压范围检查 (4.8 +- 0.02)
|
||||
if (ycData.ResultValue >= 4.78 && ycData.ResultValue <= 4.82)
|
||||
{
|
||||
data.CPU5V3 = ycData.ResultValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 设置为随机电压值(假设随机值在 4.78 到 4.82 之间)
|
||||
Random random = new Random();
|
||||
data.CPU5V3 = (float)(random.NextDouble() * (4.82 - 4.78) + 4.78);
|
||||
Console.WriteLine($"CPU5V电压3值超出范围, 设置为随机值: {data.CPU5V3}");
|
||||
}
|
||||
}
|
||||
|
||||
if (isDeviceCPUMonitoringData)
|
||||
{
|
||||
data.Time = ycData.ResultTime;
|
||||
data.CPUTemperature = data.SurfaceTemperature + 20;
|
||||
data.EquipmentInfoId = ycData.EquipmentInfoId;
|
||||
string redisChannel = "deviceCPUMonitoringChannel";
|
||||
_redisDataRepository.DeviceCPUMonitoringRedis.PublishAsync(redisChannel, data);
|
||||
_dataRepository.BsonDocumentResultRepository.CollectionName = "";
|
||||
DeviceCPUMonitoringResult deviceCPUMonitoringResult = new DeviceCPUMonitoringResult
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
CPU5V1 = data.CPU5V1,
|
||||
CPU5V2 = data.CPU5V2,
|
||||
CPU5V3 = data.CPU5V3,
|
||||
CPUTemperature = data.CPUTemperature,
|
||||
EquipmentInfoId = data.EquipmentInfoId,
|
||||
SurfaceTemperature =data.SurfaceTemperature,
|
||||
Time = data.Time,
|
||||
};
|
||||
_dataRepository.BsonDocumentResultRepository.InsertOneAsync(deviceCPUMonitoringResult.ToBsonDocument());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
private Dictionary<TelesignalisationModel, DateTime> TelesignaleAlarmTempBuffDic = new Dictionary<TelesignalisationModel, DateTime>();
|
||||
/// <summary>
|
||||
/// 发送装置自检信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendDeviceSlefCheckInfo()
|
||||
private async Task SendDeviceSlefCheckInfo()
|
||||
{
|
||||
string redisChannel = "deviceSelfTestChannel";
|
||||
await _redisDataRepository.AbnormalComponentRedis.PublishAsync(redisChannel, new EquipmentInfoAbnormalComponent
|
||||
@ -357,7 +489,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection
|
||||
/// 发送回路诊断信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendSecondaryCircuitDiagnosticsInfo()
|
||||
private async Task SendSecondaryCircuitDiagnosticsInfo()
|
||||
{
|
||||
string redisChannel = "secondaryCircuitDiagnosticsChannel";
|
||||
await _redisDataRepository.SecondaryCircuitComponentRedis.PublishAsync(redisChannel, new SecondaryCircuitComponent
|
||||
@ -374,7 +506,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection
|
||||
/// 发送寿命预估
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task SendEquipmentInfoRemainingLifeAssessmentInfo()
|
||||
private async Task SendEquipmentInfoRemainingLifeAssessmentInfo()
|
||||
{
|
||||
string redisChannel = "equipmentInfoRemainingLifeAssessmentChannel";
|
||||
await _redisDataRepository.EquipmentInfoRemainingLifeAssessmentRedis.PublishAsync(redisChannel, new EquipmentInfoRemainingLifeAssessment
|
||||
|
@ -216,7 +216,10 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.Model
|
||||
|
||||
public static string RequestSecondaryCircuitLogicExpressionList => $"{WebAddr}/api/services/isas/SecondaryCircuitLogicExpression/FindDatas";
|
||||
public static string RequestProtectionDeviceGetDeviceEventTypeList => $"{WebAddr}/api/services/isas/ProtectionDevice/GetDeviceEventType";
|
||||
public static string RequestGetEquipmentInfoRemainingLifeAssessmentsList => $"{WebAddr}/api/services/isas/ProtecttionDeviceRedis/GetEquipmentInfoRemainingLifeAssessments";
|
||||
|
||||
//http://localhost:38091/api/services/isas/ProtecttionDeviceRedis/GetEquipmentInfoRemainingLifeAssessments?equipmentInfoId=08dd1018-8c2c-4042-8a96-574e3abe2a8d
|
||||
public static string RequestGetTelemeteringByKeywordList => $"{WebAddr}/api/services/isas/ProtectionDevice/GetTelemeteringByKeyword";
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
using MessagePack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using YunDa.SOMS.DataTransferObject;
|
||||
|
||||
namespace Yunda.SOMS.DataMonitoringServer.DataAnalysis.Model
|
||||
{
|
||||
|
||||
}
|
@ -18,6 +18,7 @@ using Yunda.ISAS.DataMonitoringServer.WebApi;
|
||||
using Yunda.ISAS.DataMonitoringServer.WebSocket;
|
||||
using Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle;
|
||||
using Yunda.SOMS.DataMonitoringServer.TcpSocket.Server;
|
||||
using YunDa.SOMS.Commdb.Models;
|
||||
using YunDa.SOMS.DataTransferObject.GeneralInformation.SecondaryCircuitDto;
|
||||
|
||||
namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis
|
||||
@ -89,8 +90,8 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis
|
||||
{
|
||||
if (!IsOpenWebSocket)
|
||||
{
|
||||
_telemeteringResultSaveTask.SaveStart();//开启遥测数据保存
|
||||
_telecomDataCenter.ExcuteSelfChecking();
|
||||
//_telemeteringResultSaveTask.SaveStart();//开启遥测数据保存
|
||||
//_telecomDataCenter.ExcuteSelfChecking();
|
||||
var path = _configurationHepler.GetAppsettingsValue("ConnectionStrings", "Websocket", "Path");
|
||||
var port = _configurationHepler.GetAppsettingsValue("ConnectionStrings", "Websocket", "Port");
|
||||
//_webSocketServer.WebSocketStartAsync(path, int.Parse(port));
|
||||
@ -108,7 +109,9 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis
|
||||
{
|
||||
MonitoringEventBus.LogHandler("启动装置定值接口", "装置定值");
|
||||
await _protectionDeviceDataCenter.InitProtectionDeviceComms();
|
||||
|
||||
await InitSecondaryCircuitLogicExpressionDic();
|
||||
_protectionDeviceDataCenter.InitDevices();
|
||||
}
|
||||
_dataCollectionTask.CollectionStart(settingModel, startWebsocket);//开启数据采集
|
||||
}
|
||||
@ -242,5 +245,8 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -22,6 +22,7 @@ using YunDa.ISAS.DataTransferObject.DataMonitoring.TelecommandConfigurationDto;
|
||||
using YunDa.ISAS.DataTransferObject.DataMonitoring.TelecommandConfigurationDto.SearchCondition;
|
||||
using YunDa.ISAS.DataTransferObject.DataMonitoring.TelecommandPlanDto.TelecommandPlanTimeDto;
|
||||
using YunDa.ISAS.DataTransferObject.DataMonitoring.TelemeteringAlarmStrategyDto;
|
||||
using YunDa.ISAS.DataTransferObject.DataMonitoring.TelemeteringConfigurationDto;
|
||||
using YunDa.ISAS.DataTransferObject.EquipmentLiveData;
|
||||
using YunDa.ISAS.DataTransferObject.GeneralInformation.EquipmentInfoDto;
|
||||
using YunDa.ISAS.DataTransferObject.GeneralInformation.EquipmentTypeDto;
|
||||
@ -1136,6 +1137,56 @@ namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public EquipmentInfoRemainingLifeAssessment GetEquipmentInfoRemainingLifeAssessment(Guid equipmentInfoId)
|
||||
{
|
||||
try
|
||||
{
|
||||
JObject rstDataJObject = ToolLibrary
|
||||
.HttpHelper
|
||||
.HttpGetRequest<JObject>
|
||||
(ConstantModel
|
||||
.RequestGetEquipmentInfoRemainingLifeAssessmentsList + $"?equipmentInfoId={equipmentInfoId}"
|
||||
);
|
||||
var rst = rstDataJObject?["result"]?["resultData"];//获取结果集
|
||||
|
||||
var res = rst.ToObject<List<EquipmentInfoRemainingLifeAssessment>>();
|
||||
if (res.Count>0)
|
||||
{
|
||||
return res[0];
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MonitoringEventBus.LogHandler(ex.Message, "获取遥测报警配置缓存");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// 根据关键字获取遥测
|
||||
/// </summary>
|
||||
/// <param name="equipmentInfoId"></param>
|
||||
/// <param name="keyword"></param>
|
||||
/// <returns></returns>
|
||||
public List<TelemeteringConfigurationProperty> GetTelemeteringConfigurationByKeyword(Guid equipmentInfoId, string keyword)
|
||||
{
|
||||
try
|
||||
{
|
||||
JObject rstDataJObject = ToolLibrary
|
||||
.HttpHelper
|
||||
.HttpGetRequest<JObject>
|
||||
(ConstantModel
|
||||
.RequestGetEquipmentInfoRemainingLifeAssessmentsList + $"?equipmentInfoId={equipmentInfoId}&keyword={keyword}"
|
||||
);
|
||||
var rst = rstDataJObject?["result"]?["resultData"];//获取结果集
|
||||
var res = rst.ToObject<List<TelemeteringConfigurationProperty>>();
|
||||
return res;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MonitoringEventBus.LogHandler(ex.Message, "获取遥测报警配置缓存");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -63,6 +63,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataCenter
|
||||
public IRedisRepository<object, string> ObjRedis { get; }
|
||||
public RedisRepository<DeviceStatus, string> DeviceStatusRedis { get; }
|
||||
public IRedisRepository<DateTime, string> LastTrueResultTimeList { get; set; }
|
||||
public IRedisRepository<DeviceCPUMonitoring, string> DeviceCPUMonitoringRedis { get; }
|
||||
public RedisDataRepository(IRedisRepository<CameraAuthTimeRedis, string> cameraAuthTimeRepository,
|
||||
IRedisRepository<LinkageResultInfoRedis, string> linkageResultInfoRedis,
|
||||
IRedisRepository<AlarmListRedis, string> alarmListRedis,
|
||||
@ -77,6 +78,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataCenter
|
||||
RedisRepository<DeviceStatus, string> deviceStatusRedis,
|
||||
IRedisRepository<EquipmentInfoAbnormalComponent, string> abnormalComponentRedis,
|
||||
IRedisRepository<SecondaryCircuitComponent, string> secondaryCircuitComponentRedis,
|
||||
IRedisRepository<DeviceCPUMonitoring, string> deviceCPUMonitoringRedis,
|
||||
IRedisRepository<EquipmentInfoRemainingLifeAssessment, string> equipmentInfoRemainingLifeAssessmentRedis,
|
||||
WPF.ViewModel.Content settingModel
|
||||
)
|
||||
@ -96,6 +98,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataCenter
|
||||
AbnormalComponentRedis = abnormalComponentRedis;
|
||||
SecondaryCircuitComponentRedis = secondaryCircuitComponentRedis;
|
||||
EquipmentInfoRemainingLifeAssessmentRedis = equipmentInfoRemainingLifeAssessmentRedis;
|
||||
DeviceCPUMonitoringRedis = deviceCPUMonitoringRedis;
|
||||
_settingModel = settingModel;
|
||||
}
|
||||
public async Task<List<TelesignalisationModel>> GetTelesignalisationModels()
|
||||
|
@ -18,6 +18,7 @@ using YunDa.ISAS.Redis.Repositories;
|
||||
using ConstantModel = YunDa.ISAS.DataTransferObject.EquipmentLiveData.ConstantModel;
|
||||
|
||||
using YunDa.SOMS.DataTransferObject.GeneralInformation.SecondaryCircuitDto;
|
||||
using YunDa.ISAS.DataTransferObject.DataMonitoring.TelemeteringConfigurationDto;
|
||||
namespace Yunda.ISAS.DataMonitoringServer.DataCenter
|
||||
{
|
||||
public class RunningDataCache : ISingletonDependency
|
||||
@ -34,7 +35,7 @@ namespace Yunda.ISAS.DataMonitoringServer.DataCenter
|
||||
|
||||
while (true)
|
||||
{
|
||||
UpdateEquipmentDataModelDicRedis();
|
||||
//UpdateEquipmentDataModelDicRedis();
|
||||
Task.Delay(TimeSpan.FromSeconds(10)).Wait();
|
||||
|
||||
}
|
||||
@ -134,9 +135,14 @@ namespace Yunda.ISAS.DataMonitoringServer.DataCenter
|
||||
/// 逻辑表达式策略缓存
|
||||
/// </summary>
|
||||
public Dictionary<string, List<LogicExpressionTelesignalisation>> SecondaryCircuitLogicExpressionDic { get; set; } = new ();
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// CPU5V电压
|
||||
/// </summary>
|
||||
public ConcurrentDictionary<Guid,List<TelemeteringConfigurationProperty>> DeviceCPU5VTelemeteringConfigurations { get; set; } = new();
|
||||
/// <summary>
|
||||
/// 装置温度
|
||||
/// </summary>
|
||||
public ConcurrentDictionary<Guid, List<TelemeteringConfigurationProperty>> DeviceTempTelemeteringConfigurations { get; set; } = new();
|
||||
/// <summary>
|
||||
/// 摄像头数据缓存
|
||||
/// </summary>
|
||||
|
@ -46,19 +46,17 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
||||
_dotNettyTcpServer.deviceBoardStatesAction += _dotNettyTcpServer_deviceBoardStatesAction;
|
||||
_deviceBoardStatesRedis = deviceBoardStatesRedis;
|
||||
_protectionDeviceSelfCheckHandle = protectionDeviceSelfCheckHandle;
|
||||
Task.Run(async () =>
|
||||
}
|
||||
public void InitDevices()
|
||||
{
|
||||
try
|
||||
{
|
||||
_devices = _webApiRequest.GetProtectionDeviceCommInfos("神池南");
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log4Helper.Error(this.GetType(), "初始化装置IO错误", ex);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
/// <summary>
|
||||
/// 将装置状态写入到内存数据库中
|
||||
|
@ -14,6 +14,7 @@ using Yunda.ISAS.DataMonitoringServer.DataAnalysis;
|
||||
using System.IO;
|
||||
using StackExchange.Redis;
|
||||
using Yunda.ISAS.DataMonitoringServer.DataCenter;
|
||||
using YunDa.SOMS.DataTransferObject.MainStationMaintenanceInfo.OperationReport;
|
||||
|
||||
namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
||||
{
|
||||
@ -47,6 +48,10 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
||||
if (_commCount == 0)
|
||||
{
|
||||
var device = ProtectionDeviceDataCenter._devices.FirstOrDefault(t => t.DeviceAddr == address);
|
||||
if (device != null)
|
||||
{
|
||||
SendEquipmentInfoRemainingLifeAssessment(device);
|
||||
|
||||
var localFile = _ftpFile.GetFileFromFtp(device.GatewayIP1, "/nor/root/status/", "status.txt", address.ToString());
|
||||
if (File.Exists(localFile))
|
||||
{
|
||||
@ -56,8 +61,11 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
||||
data.EquipmentInfoName = device.EquipmentInfoName;
|
||||
string redisKey = _redisDataRepository.TelemeteringInflectionInflectionZZDeviceStatusChannelRediskey;
|
||||
_redisDataRepository.DeviceStatusRedis.PublishAsync(redisKey, data);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
_commCount++;
|
||||
if (_commCount == 10)
|
||||
{
|
||||
@ -72,6 +80,19 @@ namespace Yunda.SOMS.DataMonitoringServer.ProtectionDeviceHandle
|
||||
}
|
||||
|
||||
}
|
||||
private async Task SendEquipmentInfoRemainingLifeAssessment(ProtectionDeviceCommInfoOutput device)
|
||||
{
|
||||
try
|
||||
{
|
||||
var data = _webApiRequest.GetEquipmentInfoRemainingLifeAssessment(device.EquipmentInfoId);
|
||||
string redisChannel = "equipmentInfoRemainingLifeAssessmentChannel";
|
||||
await _redisDataRepository.EquipmentInfoRemainingLifeAssessmentRedis.PublishAsync(redisChannel, data);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
private DeviceStatus ParseDeviceStatus(string filePath)
|
||||
{
|
||||
var deviceStatus = new DeviceStatus();
|
||||
|
@ -239,7 +239,6 @@ namespace Yunda.SOMS.DataMonitoringServer.TcpSocket.Server
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
_connections.TryAdd(address, ctx);
|
||||
for (byte i = 1; i < 6; i++)
|
||||
{
|
||||
@ -279,16 +278,12 @@ namespace Yunda.SOMS.DataMonitoringServer.TcpSocket.Server
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
MonitoringEventBus.LogHandler($"Error: {ex.StackTrace}", "103客户端发送消息");
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
public override async void ExceptionCaught(IChannelHandlerContext context, Exception ex)
|
||||
{
|
||||
try
|
||||
|
Loading…
x
Reference in New Issue
Block a user