using CommunityToolkit.Mvvm.ComponentModel; using ivf_tl_Entity.Entity.Alarm; using ivf_tl_Entity.Entity.balance; using ivf_tl_Entity.Entity.Result; using ivf_tl_Entity.Response; using ivf_tl_Manage.Converts; using ivf_tl_Service.HttpProvider; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Diagnostics.Eventing.Reader; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Documents; namespace ivf_tl_Manage.ViewModels { public partial class AlarmHistoryViewModel : BaseViewModel { public ObservableCollection TlInfoList { get; set; } = new ObservableCollection(); public List HouseList { get; set; } = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; /// /// 当前页码 /// public int PageCurrent = 1; public int PageSize { get; set; } = 9; /// /// 1: 全部,2:实时异常,3:历史异常 /// public int SelectedType = 1; [ObservableProperty] private int dataCount = -1; [ObservableProperty] private List alarmTypeList = new List(); [ObservableProperty] private string currentTitle = ""; [ObservableProperty] private ObservableCollection alarmHistoryList = new ObservableCollection(); public TLInfo CurrentTlInfo = null; private int CurrentHouse = -1; private AlarmTypeEntity CurrentAlarmType = null; private AlarmProvider alarmProvider; public AlarmHistoryViewModel(string tlsn) { base.ViewModelName = nameof(AlarmHistoryViewModel); TlInfoList = new ObservableCollection(AppData.Instance.MainWindowViewModel.devManageViewModel.TlInfoList); if (alarmProvider == null) alarmProvider = AppData.Instance.GetAlarmProvider(); if (!string.IsNullOrEmpty(tlsn)) CurrentTlInfo = TlInfoList.FirstOrDefault(x => x.tlSn == tlsn); } public void Init() { CurrentTitle = KeyToStringConvert.GetLanguageStringByKey("0072"); AlarmTypeList = alarmProvider.GetTypeAndTemplateListApi(); UpdataCount(); //DataCount = UpdataCount(); return; } public int Updata() { SearchAlarmResponse searchAlarmResponse = new SearchAlarmResponse(); searchAlarmResponse.current = PageCurrent; searchAlarmResponse.selectType = SelectedType; searchAlarmResponse.size = PageSize; if (CurrentTlInfo != null) searchAlarmResponse.tlSn = CurrentTlInfo.tlSn; if (CurrentHouse != -1) searchAlarmResponse.houseSn = CurrentHouse; if (CurrentAlarmType != null) searchAlarmResponse.alarmTypeId = CurrentAlarmType.id; var a = alarmProvider.SearchAlarmHistoryApi(searchAlarmResponse); var k = ((PageCurrent - 1) * PageSize) + 1; DateTime startTime = DateTime.Now; DateTime endTime = DateTime.Now; TimeSpan span; AlarmHistoryList.Clear(); int kk = -1; foreach (var item in a.records) { DateTime.TryParse(item.startTime, out startTime); item.startTimeString = startTime.ToString("MM-dd HH:mm"); item.num = k++; if (!string.IsNullOrEmpty(item.endTime) && DateTime.TryParse(item.endTime, out endTime)) { span = endTime - startTime; item.fayuTime = $"{((span.Days * 24) + span.Hours).ToString("D2")}h:{span.Minutes.ToString("D2")}m"; item.endTimeString = endTime.ToString("MM-dd HH:mm"); } else { item.endTimeString = "---"; } if (item.type == 0) item.alarmState = KeyToStringConvert.GetLanguageStringByKey("0252"); else item.alarmState = KeyToStringConvert.GetLanguageStringByKey("0253"); if (item.type == 1) item.notify = 0; if (item.alarmKey == "PHOTO_STATE_ALARM") { kk = item.text.IndexOf(","); if (kk != -1) { item.text = item.text.Substring(0, kk); } } AlarmHistoryList.Add(item); } if (!a.IsSuccess) { //MessageBoxShow("提示", "查询超时,请稍后重试"); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0304"), KeyToStringConvert.GetLanguageStringByKey("0347")); a.total = -1; } return a.total; } public List Updata1() { List list = new List(); SearchAlarmResponse searchAlarmResponse = new SearchAlarmResponse(); searchAlarmResponse.current = PageCurrent; searchAlarmResponse.selectType = SelectedType; searchAlarmResponse.size = PageSize; if (CurrentTlInfo != null) searchAlarmResponse.tlSn = CurrentTlInfo.tlSn; if (CurrentHouse != -1) searchAlarmResponse.houseSn = CurrentHouse; if (CurrentAlarmType != null) searchAlarmResponse.alarmTypeId = CurrentAlarmType.id; var a = alarmProvider.SearchAlarmHistoryApi(searchAlarmResponse); var k = ((PageCurrent - 1) * PageSize) + 1; DateTime startTime = DateTime.Now; DateTime endTime = DateTime.Now; TimeSpan span; int kk = -1; foreach (var item in a.records) { DateTime.TryParse(item.startTime, out startTime); item.startTimeString = startTime.ToString("MM-dd HH:mm"); item.num = k++; if (!string.IsNullOrEmpty(item.endTime) && DateTime.TryParse(item.endTime, out endTime)) { span = endTime - startTime; item.fayuTime = $"{((span.Days * 24) + span.Hours).ToString("D2")}h:{span.Minutes.ToString("D2")}m"; item.endTimeString = endTime.ToString("MM-dd HH:mm"); } else { item.endTimeString = "---"; } //if (item.type == 0) item.alarmState = "正在报警"; //else item.alarmState = "结束报警"; if (item.type == 0) item.alarmState = KeyToStringConvert.GetLanguageStringByKey("0252"); else item.alarmState = KeyToStringConvert.GetLanguageStringByKey("0253"); if (item.type == 1) item.notify = 0; if (item.alarmKey == "PHOTO_STATE_ALARM") { kk = item.text.IndexOf(","); if (kk != -1) { item.text = item.text.Substring(0, kk); } } list.Add(item); } return list; } private void UpdataCount() { SearchAlarmResponse searchAlarmResponse = new SearchAlarmResponse(); searchAlarmResponse.current = PageCurrent; searchAlarmResponse.selectType = SelectedType; searchAlarmResponse.size = PageSize; if (CurrentTlInfo != null) searchAlarmResponse.tlSn = CurrentTlInfo.tlSn; if (CurrentHouse != -1) searchAlarmResponse.houseSn = CurrentHouse; if (CurrentAlarmType != null) searchAlarmResponse.alarmTypeId = CurrentAlarmType.id; var a = alarmProvider.SearchAlarmHistoryNumApi(searchAlarmResponse); DataCount = -1; switch (SelectedType) { case 1: DataCount = a.all; break; case 2: DataCount = a.current; break; case 3: DataCount = a.history; break; } if (DataCount == -1) DataCount = 0; } public void SetSelectedType(string typeString) { switch (typeString) { case "1": SelectedType = 1; //CurrentTitle = "全部异常"; CurrentTitle = KeyToStringConvert.GetLanguageStringByKey("0072"); break; case "2": SelectedType = 2; //CurrentTitle = "实时异常"; CurrentTitle = KeyToStringConvert.GetLanguageStringByKey("0073"); break; case "3": SelectedType = 3; //CurrentTitle = "历史异常"; CurrentTitle = KeyToStringConvert.GetLanguageStringByKey("0074"); break; } UpdataCount(); } public void SetCurrentTlInfo(TLInfo tLInfo) { if (CurrentTlInfo == tLInfo) return; CurrentTlInfo = tLInfo; UpdataCount(); } public void SetCurrentHouse(int housesn) { if (CurrentHouse == housesn) return; CurrentHouse = housesn; UpdataCount(); } public void SetCurrentAlarmType(AlarmTypeEntity alarmType) { if (CurrentAlarmType == alarmType) return; CurrentAlarmType = alarmType; UpdataCount(); } public void SetPageCurrent(int page) { PageCurrent = page; Updata(); } public bool EditAlarmNotify(AlarmHistoryEntity alarmHistoryEntity) { if (alarmHistoryEntity == null) { //MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), "获取当前行数据失败"); MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), KeyToStringConvert.GetLanguageStringByKey("0545")); return false; } string error = alarmProvider.SetAlarmNotifyApi(alarmHistoryEntity.id, alarmHistoryEntity.notify); if (string.IsNullOrEmpty(error)) return true; MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return false; } public bool EditAlarmNotify(long id, int notify) { string error = alarmProvider.SetAlarmNotifyApi(id, notify); if (string.IsNullOrEmpty(error)) return true; MessageBoxShow(KeyToStringConvert.GetLanguageStringByKey("0286"), error); return false; } } }