예제 #1
0
        public override void Load()
        {
            var response = regionOutageConfigService.GetRegionOutageConfigAllList(new GetAllRegionOutageConfigRequest());

            if (response.IsSuccess && response.Data != null)
            {
                _cache.Clear();
                _cache = response.Data;
            }
        }
예제 #2
0
        protected override void DoWork()
        {
            /*检查报警通知-start*/
            try
            {
                DateTime alarmNotificationServerSideTime = DateTime.MinValue;
                BasicResponse <string> alarmNotificationLastChangedTimeResponse = largeDataAnalysisLastChangedService.GetAlarmNotificationLastChangedTime(new LargeDataAnalysisLastChangedRequest());
                if (alarmNotificationLastChangedTimeResponse.IsSuccess && !string.IsNullOrEmpty(alarmNotificationLastChangedTimeResponse.Data))
                {
                    alarmNotificationServerSideTime = DateTime.Parse(alarmNotificationLastChangedTimeResponse.Data);
                }
                if (alarmNotificationServerSideTime > alarmNotificationLastChangedTime || alarmConfigCache.Count == 0)
                {
                    var alarmNotificationPersonnelResponse = alarmNotificationPersonnelConfigService.GetAlarmNotificationPersonnelConfigAllList(new GetAllAlarmNotificationRequest());
                    if (alarmNotificationPersonnelResponse.IsSuccess && alarmNotificationPersonnelResponse.Data != null)
                    {
                        var cachedAlarmNotificationItems = alarmConfigCache.Query();
                        foreach (var item in alarmNotificationPersonnelResponse.Data)
                        {
                            var oldAlarmConfig = cachedAlarmNotificationItems.FirstOrDefault(q => q.Id == item.Id);
                            if (null == oldAlarmConfig)
                            {
                                alarmConfigCache.AddItem(item);
                            }
                            else
                            {
                                alarmConfigCache.UpdateItem(item);
                            }
                        }
                        int alarmConfigCount = cachedAlarmNotificationItems.Count;
                        for (int i = alarmConfigCount - 1; i >= 0; i--)
                        {
                            if (!alarmNotificationPersonnelResponse.Data.Any(q => q.Id == cachedAlarmNotificationItems[i].Id))
                            {
                                alarmConfigCache.DeleteItem(cachedAlarmNotificationItems[i]);
                            }
                        }
                    }
                    alarmNotificationLastChangedTime = alarmNotificationServerSideTime;
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("检查报警通知时出错:{0}", ex.StackTrace));
            }

            /*检查报警通知-end*/
            /*检查应急联动-start*/
            try
            {
                DateTime emergencyLinkageServerSideTime = DateTime.MinValue;
                BasicResponse <string> emergencyLinkageLastChangedTimeResponse = largeDataAnalysisLastChangedService.GetEmergencyLinkageLastChangedTime(new LargeDataAnalysisLastChangedRequest());
                if (emergencyLinkageLastChangedTimeResponse.IsSuccess && !string.IsNullOrEmpty(emergencyLinkageLastChangedTimeResponse.Data))
                {
                    emergencyLinkageServerSideTime = DateTime.Parse(emergencyLinkageLastChangedTimeResponse.Data);
                }
                if (emergencyLinkageServerSideTime > emergencyLinkageLastChangedTime || emergencyLinkageConfigCache.Count == 0)
                {
                    var emergencyLinkageResponse = emergencyLinkageConfigService.GetEmergencyLinkageConfigAllList(new GetAllEmergencyLinkageConfigRequest());
                    if (emergencyLinkageResponse.IsSuccess && emergencyLinkageResponse.Data != null)
                    {
                        var cachedEmergencyLinkageItems = emergencyLinkageConfigCache.Query();
                        foreach (var item in emergencyLinkageResponse.Data)
                        {
                            var oldEmergencyLinkageConfig = cachedEmergencyLinkageItems.FirstOrDefault(q => q.Id == item.Id);
                            if (null == oldEmergencyLinkageConfig)
                            {
                                emergencyLinkageConfigCache.AddItem(item);
                            }
                            else
                            {
                                emergencyLinkageConfigCache.UpdateItem(item);
                            }
                        }
                        int emergencyLinkageCount = cachedEmergencyLinkageItems.Count;
                        for (int i = emergencyLinkageCount - 1; i >= 0; i--)
                        {
                            if (!emergencyLinkageResponse.Data.Any(q => q.Id == cachedEmergencyLinkageItems[i].Id))
                            {
                                emergencyLinkageConfigCache.DeleteItem(cachedEmergencyLinkageItems[i]);
                            }
                        }
                    }
                    emergencyLinkageLastChangedTime = emergencyLinkageServerSideTime;
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("检查应急联动时出错:{0}", ex.StackTrace));
            }
            /*检查应急联动-end*/
            /*检查区域断电-start RegionOutageConfigCacheList*/
            try
            {
                DateTime regionOutageServerSideTime = DateTime.MinValue;
                BasicResponse <string> regionOutageLastChangedTimeResponse = largeDataAnalysisLastChangedService.GetRegionOutageLastChangedTime(new LargeDataAnalysisLastChangedRequest());
                if (regionOutageLastChangedTimeResponse.IsSuccess && !string.IsNullOrEmpty(regionOutageLastChangedTimeResponse.Data))
                {
                    regionOutageServerSideTime = DateTime.Parse(regionOutageLastChangedTimeResponse.Data);
                }
                if (regionOutageServerSideTime > regionOutageLastChangedTime || regionOutageConfigCache.Count == 0)
                {
                    var regionOutageResponse = regionOutageConfigService.GetRegionOutageConfigAllList(new GetAllRegionOutageConfigRequest());
                    if (regionOutageResponse.IsSuccess && regionOutageResponse.Data != null)
                    {
                        var cachedRegionOutageItems = regionOutageConfigCache.Query();
                        foreach (var item in regionOutageResponse.Data)
                        {
                            var oldRegionOutageConfig = cachedRegionOutageItems.FirstOrDefault(q => q.Id == item.Id);
                            if (null == oldRegionOutageConfig)
                            {
                                regionOutageConfigCache.AddItem(item);
                            }
                            else
                            {
                                regionOutageConfigCache.UpdateItem(item);
                            }
                        }
                        int regionOutageCount = cachedRegionOutageItems.Count;
                        for (int i = regionOutageCount - 1; i >= 0; i--)
                        {
                            if (!regionOutageResponse.Data.Any(q => q.Id == cachedRegionOutageItems[i].Id))
                            {
                                regionOutageConfigCache.DeleteItem(cachedRegionOutageItems[i]);
                            }
                        }
                    }
                    regionOutageLastChangedTime = regionOutageServerSideTime;
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("检查区域断电时出错:{0}", ex.StackTrace));
            }
            /*检查区域断电-end*/
            base.DoWork();
        }
예제 #3
0
 public BasicResponse <List <JC_RegionOutageConfigInfo> > GetRegionOutageConfigAllList(GetAllRegionOutageConfigRequest getAllRegionOutageConfigRequest)
 {
     return(_regionOutageConfigService.GetRegionOutageConfigAllList(getAllRegionOutageConfigRequest));
 }