123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using NEIntelligentControl2.Models.Alarm;
- using NEIntelligentControl2.Service.Alarm;
- using NEIntelligentControl2.Windows.Alarm;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- namespace NEIntelligentControl2.Views.Alarm
- {
- /// <summary>
- /// 实时故障视图
- /// </summary>
- public partial class RealTimeFalutInfoView : UserControl
- {
- // ------------依赖属性--------------
- public static DependencyProperty IsFixedProperty = DependencyProperty.Register("IsFixed", typeof(bool), typeof(RealTimeFalutInfoView));
- public static DependencyProperty IsFaultProperty = DependencyProperty.Register("IsFault", typeof(bool), typeof(RealTimeFalutInfoView));
- public static DependencyProperty IsOpenedProperty = DependencyProperty.Register("IsOpened", typeof(bool), typeof(RealTimeFalutInfoView));
- /// <summary>
- /// 是否固定
- /// </summary>
- public bool IsFixed { get => (bool)GetValue(IsFixedProperty); set => SetValue(IsFixedProperty, value); }
- /// <summary>
- /// 是否是故障
- /// </summary>
- public bool IsFault { get => (bool)GetValue(IsFaultProperty); set => SetValue(IsFaultProperty, value); }
- /// <summary>
- /// 是否打开
- /// </summary>
- public bool IsOpened { get => (bool)GetValue(IsOpenedProperty); set => SetValue(IsOpenedProperty, value); }
- private ObservableCollection<FaultInfoModel> _FaultList;
- private HashSet<long> _FaultIds;
- private ObservableCollection<AlarmInfo> _AlarmList;
- private HashSet<long> _AlarmIds;
- private AlarmManager _AlarmManager;
- public RealTimeFalutInfoView()
- {
- InitializeComponent();
- IsFault = true;
- _FaultList = new ObservableCollection<FaultInfoModel>();
- _GDFault.ItemsSource = _FaultList;
- _AlarmList = new ObservableCollection<AlarmInfo>();
- _GDAlarm.ItemsSource = _AlarmList;
- _AlarmIds = new HashSet<long>();
- _FaultIds = new HashSet<long>();
- _AlarmManager = App.ServiceProvider.GetService(typeof(AlarmManager)) as AlarmManager;
- _AlarmManager.OnFaultCount += OnFaultCount;
- _AlarmManager.OnAlarmCount += OnAlarmCount;
- }
- private void OnAlarmCount(List<AlarmInfo> obj)
- {
- var ls = obj.Select(f => f.Id).ToList();
- var removed = _AlarmList.Where(f => !ls.Contains(f.Id)).ToList();
- Dispatcher.Invoke(() =>
- {
- for (int i = obj.Count - 1; i >= 0; i--)
- {
- var v = obj[i];
- if (_AlarmIds.Contains(v.Id)) continue;
- _AlarmList.Insert(0, v);
- _AlarmIds.Add(v.Id);
- }
- foreach (var v in removed)
- {
- _AlarmList.Remove(v);
- _AlarmIds.Remove(v.Id);
- }
- });
- }
- private void OnFaultCount(List<FaultInfoModel> obj)
- {
- var ls = obj.Select(f => f.FaultInfo.Id).ToList();
- var removed = _FaultList.Where(f => !ls.Contains(f.FaultInfo.Id)).ToList();
- Dispatcher.Invoke(() =>
- {
- for (int i = obj.Count - 1; i >= 0; i--)
- {
- var v = obj[i];
- if (_FaultIds.Contains(v.FaultInfo.Id)) continue;
- _FaultList.Insert(0, v);
- _FaultIds.Add(v.FaultInfo.Id);
- }
- foreach (var v in removed)
- {
- _FaultList.Remove(v);
- _FaultIds.Remove(v.FaultInfo.Id);
- }
- });
- }
- private void cc_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
- {
- IsFixed = !IsFixed;
- }
- private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
- {
- var v = ((FrameworkElement)sender).DataContext as FaultInfoModel;
- if (v == null || v.FaultInfo == null) return;
- Windows.Alarm.DeviceDetailAlarmWindow.Show(v.FaultInfo);
- IsOpened = false;
- }
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- switch (((Control)sender).Tag)
- {
- case "fault": // 报警故障切换
- IsFault = !IsFault;
- break;
- case "rtalarm":// 实时报警
- RealTimeAlarm();
- break;
- case "hisalarm": // 历史报警
- HistoryAlarm();
- break;
- case "hisfault": // 历史故障
- HistoryFault();
- break;
- default:return;
- }
- }
- /// <summary>
- /// 历史故障
- /// </summary>
- private void HistoryFault()
- {
- HistoryFaultWindow.ShowWindow();
- }
- /// <summary>
- /// 历史报警
- /// </summary>
- private void HistoryAlarm()
- {
- HistoryAlarmWindow.ShowWindow();
- }
- /// <summary>
- /// 实时报警
- /// </summary>
- private void RealTimeAlarm()
- {
- RealTimeAlarmWindow.ShowWindow();
- }
- }
- }
|