using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Toolkit.Mvvm.Input; using System.Collections.ObjectModel; using System.Windows; using System.Threading; using Microsoft.Toolkit.Mvvm.ComponentModel; using BPASmartClient.Device; using BPASmartClient.Helper; using BPASmartClient.Business; using BPASmartClient.Model; namespace BPASmartClient.ViewModel { public class AlarmViewModel : ObservableObject { public AlarmViewModel() { ControlCommand = new RelayCommand(() => { if (ControlButText == "报警复位") { return; } if (ControlButText == "开始查询") { var lists = Sqlite<Alarm>.GetInstance.GetData(); var res = lists.Where(p => Convert.ToDateTime(p.Date) >= StartDateTime && Convert.ToDateTime(p.Date) <= EndDateTime).ToList(); if (res != null) { HistoryAlarm.Clear(); foreach (var item in res) { HistoryAlarm.Add(item); } } } }); SwitchCommand = new RelayCommand(() => { if (ButContent == "历史报警") { GetHistoryAlarm(); CurrentDataVis = Visibility.Hidden; HistoryDataVis = Visibility.Visible; IsVisibility = Visibility.Visible; ControlButText = "开始查询"; ButContent = "实时报警"; return; } if (ButContent == "实时报警") { HistoryDataVis = Visibility.Hidden; CurrentDataVis = Visibility.Visible; IsVisibility = Visibility.Hidden; ControlButText = "报警复位"; ButContent = "历史报警"; return; } }); AlarmMonitoring(); } public void AlarmMonitoring() { AlarmInfos.Clear(); Plugin.GetInstance()?.GetPlugin<DeviceMgr>()?.GetDevices()?.ForEach(device => { device.alarmHelper.Alarms.ForEach((item) => { AlarmInfos.Add(item); }); device.alarmHelper.AddAction += new Action<string>((s) => { var res = device.alarmHelper.Alarms.FirstOrDefault(p => p.Info == s); if (res != null) Application.Current.Dispatcher.Invoke(new Action(() => { AlarmInfos.Insert(0, res); })); }); device.alarmHelper.RemoveAction += new Action<string>((s) => { var res = AlarmInfos.FirstOrDefault(p => p.Info == s); if (res != null) Application.Current.Dispatcher.Invoke(new Action(() => { AlarmInfos.Remove(res); })); }); }); } private void GetHistoryAlarm() { var data = Sqlite<Alarm>.GetInstance.GetData(); if (data != null) { HistoryAlarm.Clear(); foreach (var item in data) { int day = DateTime.Now.Subtract(Convert.ToDateTime(item.Date)).Days; if (day == 0) { HistoryAlarm.Add(item); } } } } public RelayCommand SwitchCommand { get; set; } public RelayCommand ControlCommand { get; set; } public Visibility CurrentDataVis { get { return _mCurrentDataVis; } set { _mCurrentDataVis = value; OnPropertyChanged(); } } private Visibility _mCurrentDataVis = Visibility.Visible; public Visibility HistoryDataVis { get { return _mHistoryDataVis; } set { _mHistoryDataVis = value; OnPropertyChanged(); } } private Visibility _mHistoryDataVis = Visibility.Hidden; /// <summary> /// 是否显示 /// </summary> public Visibility IsVisibility { get { return _mIsVisibility; } set { _mIsVisibility = value; OnPropertyChanged(); } } private Visibility _mIsVisibility = Visibility.Hidden; /// <summary> /// 文字显示 /// </summary> public string ButContent { get { return _mButContent; } set { _mButContent = value; OnPropertyChanged(); } } private string _mButContent = "历史报警"; /// <summary> /// 控制按钮文本显示 /// </summary> public string ControlButText { get { return _mControlButText; } set { _mControlButText = value; OnPropertyChanged(); } } private string _mControlButText = "报警复位"; /// <summary> /// 开始时间 /// </summary> public DateTime StartDateTime { get { return _mStartDateTime; } set { _mStartDateTime = value; OnPropertyChanged(); } } private DateTime _mStartDateTime = DateTime.Now; /// <summary> /// 结束时间 /// </summary> public DateTime EndDateTime { get { return _mEndDateTime; } set { _mEndDateTime = value; OnPropertyChanged(); } } private DateTime _mEndDateTime = DateTime.Now; public ObservableCollection<Alarm> AlarmInfos { get; set; } = new ObservableCollection<Alarm>(); public ObservableCollection<Alarm> HistoryAlarm { get; set; } = new ObservableCollection<Alarm>(); } }