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 { /// /// 是否在运行 /// //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; /// /// 开始服务 /// /// 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(); } /// /// 停止服务 /// public void DataServiceStop() { _dataCollectionTask.CollectionStop(); //数据采集停止 } /// /// 从服务端获取遥信遥测数据 填入缓存中 /// 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, "异常信息"); } } } }