2024-08-21 16:50:14 +08:00
|
|
|
|
using Abp.Dependency;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using ToolLibrary.LogHelper;
|
|
|
|
|
using Yunda.ISAS.DataMonitoringServer.DataAnalysis.DataCollection;
|
|
|
|
|
using Yunda.ISAS.DataMonitoringServer.DataAnalysis.Helper;
|
|
|
|
|
using Yunda.ISAS.DataMonitoringServer.DataAnalysis.TeleInfoSave;
|
|
|
|
|
using Yunda.ISAS.DataMonitoringServer.DataCenter;
|
|
|
|
|
using Yunda.ISAS.DataMonitoringServer.WebApi;
|
|
|
|
|
using Yunda.ISAS.DataMonitoringServer.WebSocket;
|
|
|
|
|
using Yunda.SOMS.DataMonitoringServer.Service.DataAnalysis.Model;
|
|
|
|
|
|
|
|
|
|
namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public class MonitoringDataService : ISingletonDependency
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否在运行
|
|
|
|
|
/// </summary>
|
|
|
|
|
//public bool IsRunning { get; set; }
|
|
|
|
|
private readonly DataCollectionTask _dataCollectionTask;
|
|
|
|
|
private readonly TelemeteringResultSaveTask _telemeteringResultSaveTask;
|
|
|
|
|
private readonly WebSocketServer _webSocketServer;
|
|
|
|
|
private readonly WebApiServer _webApiServer;
|
|
|
|
|
private readonly ConfigurationHepler _configurationHepler;
|
|
|
|
|
private readonly WebApiRequest _webApiRequest;
|
|
|
|
|
private readonly RunningDataCache _runningDataCache;
|
|
|
|
|
private readonly TelecomDataCenter _telecomDataCenter;
|
|
|
|
|
|
|
|
|
|
public MonitoringDataService(WebApiRequest webApiRequest,
|
|
|
|
|
RunningDataCache runningDataCache,
|
|
|
|
|
DataCollectionTask dataCollectionTask,
|
|
|
|
|
TelemeteringResultSaveTask telemeteringResultSaveTask,
|
|
|
|
|
WebSocketServer webSocketController,
|
|
|
|
|
ConfigurationHepler configurationHepler,
|
|
|
|
|
TelecomDataCenter telecomDataCenter,
|
|
|
|
|
WebApiServer webApiServer
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
_telecomDataCenter = telecomDataCenter;
|
|
|
|
|
_webApiRequest = webApiRequest;
|
|
|
|
|
_runningDataCache = runningDataCache;
|
|
|
|
|
_dataCollectionTask = dataCollectionTask;
|
|
|
|
|
_telemeteringResultSaveTask = telemeteringResultSaveTask;
|
|
|
|
|
_webSocketServer = webSocketController;
|
|
|
|
|
_webApiServer = webApiServer;
|
|
|
|
|
_configurationHepler = configurationHepler;
|
|
|
|
|
|
|
|
|
|
var webapiPort = _configurationHepler.GetAppsettingsValue("ConnectionStrings", "WebApi", "Port");
|
|
|
|
|
|
2024-09-20 09:59:25 +08:00
|
|
|
|
//_webApiServer.RunServerAsync(int.Parse(webapiPort));
|
2024-08-21 16:50:14 +08:00
|
|
|
|
}
|
|
|
|
|
private bool IsOpenWebSocket = false;
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 开始服务
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public void DataServiceStart(Content settingModel)
|
|
|
|
|
{
|
|
|
|
|
Action startWebsocket = () =>
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!IsOpenWebSocket)
|
|
|
|
|
{
|
|
|
|
|
_telemeteringResultSaveTask.SaveStart();//开启遥测数据保存
|
|
|
|
|
_telecomDataCenter.ExcuteSelfChecking();
|
|
|
|
|
var path = _configurationHepler.GetAppsettingsValue("ConnectionStrings", "Websocket", "Path");
|
|
|
|
|
var port = _configurationHepler.GetAppsettingsValue("ConnectionStrings", "Websocket", "Port");
|
|
|
|
|
_webSocketServer.WebSocketStartAsync(path, int.Parse(port));
|
|
|
|
|
IsOpenWebSocket = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Log4Helper.Error(this.GetType(), "websocket", ex);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
SetMonitoringData(_configurationHepler.SubstationId);
|
|
|
|
|
_dataCollectionTask.CollectionStart(settingModel, startWebsocket);//开启数据采集
|
|
|
|
|
}
|
|
|
|
|
public void CallAllData()
|
|
|
|
|
{
|
|
|
|
|
_dataCollectionTask.CallAllData();
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 停止服务
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void DataServiceStop()
|
|
|
|
|
{
|
|
|
|
|
_dataCollectionTask.CollectionStop(); //数据采集停止
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 从服务端获取遥信遥测数据 填入缓存中
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void SetMonitoringData(Guid transformerSubstationId)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//1、从业务服务中获取监控遥测,遥信数据并更新至MonitoringDataService.EquipmentData中
|
|
|
|
|
_webApiRequest.GetEquipmentData(transformerSubstationId);
|
|
|
|
|
_webApiRequest.GetLinkageStrategyData(transformerSubstationId);
|
|
|
|
|
_webApiRequest.GetVideoDevs(transformerSubstationId);
|
|
|
|
|
_webApiRequest.GetTransubstationInfo(transformerSubstationId);
|
|
|
|
|
var count = _runningDataCache.VideoDevs.Count;
|
|
|
|
|
MonitoringEventBus.LogHandler($"从服务器获取了{count}条摄像头数据", "服务器数据更新");
|
|
|
|
|
_webApiRequest.GetTelecommandModels(transformerSubstationId);
|
|
|
|
|
count = _runningDataCache.TelecommandModels.Count;
|
|
|
|
|
MonitoringEventBus.LogHandler($"从服务器获取了{count}条遥控配置数据", "服务器数据更新");
|
|
|
|
|
_webApiRequest.InitCamAuthCache();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
MonitoringEventBus.LogHandler(ex.Message, "异常信息");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|