2024-09-20 09:59:25 +08:00

120 lines
5.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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");
//_webApiServer.RunServerAsync(int.Parse(webapiPort));
}
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, "异常信息");
}
}
}
}