using Aitex.Core.UI.MVVM; using CyberX8_MainPages.Model; using MECF.Framework.Common.Alarm; using MECF.Framework.Common.CommonData; using MECF.Framework.Common.DataCenter; using MECF.Framework.Common.DBCore; using MECF.Framework.Common.OperationCenter; using MECF.Framework.Common.SubstrateTrackings; using MECF.Framework.Common.Utilities; using Prism.Mvvm; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Security.Claims; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Input; using System.Windows.Threading; namespace CyberX8_MainPages.ViewModels { public class AlarmHomePageViewModel : BindableBase { #region 变量 /// /// Description /// private string _description; /// /// Note /// private string _note; /// /// Alarm数据 /// private List _alarmListDatas = new List(); /// /// Module /// private string _module; /// /// rt查询key /// private List _rtDataKeys = new List(); /// /// 时钟 /// DispatcherTimer _timer; /// /// rt查询数据 /// private Dictionary _rtDataValueDic = new Dictionary(); /// /// 选中的AlarmList数据 /// private AlarmList _selectedAlarmList; /// /// 是否选中AlarmList /// private bool _isSelectedAlarmList; /// /// 是否选中WarningList /// private bool _isSelectedWarningList; #endregion #region 属性 /// /// Note /// public string Description { get { return _description; } set { SetProperty(ref _description, value); } } /// /// Note /// public string Note { get { return _note; } set { SetProperty(ref _note, value); } } /// /// Alarm数据 /// public List AlarmListDatas { get { return _alarmListDatas; } set { SetProperty(ref _alarmListDatas, value); } } /// /// 选中的AlarmList数据条目 /// public AlarmList SelectedAlarmList { get { return _selectedAlarmList; } set { SetProperty(ref _selectedAlarmList, value); } } /// /// 是否选中Error的AlarmList /// public bool IsSelectedAlarmList { get { return _isSelectedAlarmList; } set { SetProperty(ref _isSelectedAlarmList, value); } } /// /// 是否选中Warning的AlarmList /// public bool IsSelectedWarningList { get { return _isSelectedWarningList; } set { SetProperty(ref _isSelectedWarningList, value); } } #endregion #region 指令 public ICommand RetryCommand { get; private set; } public ICommand CompleteCommand { get; private set; } public ICommand SelectionCommand { get; private set; } public ICommand AcknowledgeCommand { get; private set; } #endregion /// /// 构造函数 /// public AlarmHomePageViewModel() { RetryCommand = new DelegateCommand(RetryAction); CompleteCommand = new DelegateCommand(CompleteAction); SelectionCommand = new DelegateCommand(SelectionAction); AcknowledgeCommand = new DelegateCommand(AcknowledgeAction); } /// /// 加载数据 /// /// public void LoadData(string systemName) { _module = systemName; _rtDataKeys.Clear(); _rtDataKeys.Add("System.AlarmList"); if (_timer == null) { _timer = new DispatcherTimer(); _timer.Interval = TimeSpan.FromMilliseconds(200); _timer.Tick += Timer_Tick; } _timer.Start(); } /// /// 时钟 /// /// /// private void Timer_Tick(object sender, EventArgs e) { if (_rtDataKeys.Count != 0) { _rtDataValueDic = QueryDataClient.Instance.Service.PollData(_rtDataKeys); if (_rtDataValueDic != null) { AlarmList preSelected = SelectedAlarmList; AlarmListDatas = CommonFunction.GetValue>(_rtDataValueDic, "System.AlarmList"); if (preSelected!=null) { foreach (AlarmList item in AlarmListDatas) { if (item.ModuleName == preSelected.ModuleName && item.CreateTime == preSelected.CreateTime && item.DataItem == preSelected.DataItem) { SelectedAlarmList = item; break; } } } if (SelectedAlarmList != null && SelectedAlarmList.AlarmType == 0) { IsSelectedAlarmList = true; } else { IsSelectedAlarmList = false; } if (SelectedAlarmList != null && SelectedAlarmList.AlarmType == 1) { IsSelectedWarningList = true; } else { IsSelectedWarningList = false; } } } } /// /// 隐藏 /// public void Hide() { } #region 指令方法 private void RetryAction(object parameter) { //SelectedAlarmList属性就是当前选中的条目 if (SelectedAlarmList != null) { InvokeClient.Instance.Service.DoOperation($"System.Retry", SelectedAlarmList.ModuleName); } } private void CompleteAction(object parameter) { //SelectedAlarmList属性就是当前选中的条目 if (SelectedAlarmList != null) { InvokeClient.Instance.Service.DoOperation($"System.ConfirmComplete", SelectedAlarmList.ModuleName); } } private void AcknowledgeAction(object parameter) { if (SelectedAlarmList != null) { InvokeClient.Instance.Service.DoOperation($"Alarm.Acknowledge", SelectedAlarmList.ModuleName, SelectedAlarmList.DataItem); } } /// /// 选中AlarmList触发的方法 /// /// private void SelectionAction(object parameter) { if (SelectedAlarmList != null) { Description = SelectedAlarmList.AlarmMsg; } else { Description = ""; } } #endregion } }