using Prism.Commands; using Prism.Ioc; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using TeamAAS_VM.Data; using TeamAAS_VP.Core; using TeamAAS_VP.Data; using TeamAAS_VP.Models; using TeamAAS_VP.Views.Product; namespace TeamAAS_VP.ViewModels.Statistics { public class AlarmQueryViewModel : BindableBase { IContainerProvider _container; #region 属性 private DataTable _dataTable; public DataTable DataTable { get { return _dataTable; } set { SetProperty(ref _dataTable, value); } } private DateTime? _StartDate; public DateTime? StartDate { get { return _StartDate; } set { SetProperty(ref _StartDate, value); } } private DateTime? _StartTime; public DateTime? StartTime { get { return _StartTime; } set { SetProperty(ref _StartTime, value); } } private DateTime? _EndDate; public DateTime? EndDate { get { return _EndDate; } set { SetProperty(ref _EndDate, value); } } private DateTime? _EndTime; public DateTime? EndTime { get { return _EndTime; } set { SetProperty(ref _EndTime, value); } } private bool _isSearch = false; public bool isSearch { get { return _isSearch; } set { SetProperty(ref _isSearch, value); } } #endregion #region 命令 private DelegateCommand _LoadedCommand; public DelegateCommand LoadedCommand => _LoadedCommand ?? (_LoadedCommand = new DelegateCommand(ExecuteLoadedCommand)); private DelegateCommand _SearchCommand; public DelegateCommand SearchCommand => _SearchCommand ?? (_SearchCommand = new DelegateCommand(ExecuteSearchCommand, CanSearch) .ObservesProperty(() => StartDate).ObservesProperty(() => StartTime) .ObservesProperty(() => EndDate).ObservesProperty(() => EndTime).ObservesProperty(() => isSearch)); private DelegateCommand _SaveCommand; public DelegateCommand SaveCommand => _SaveCommand ?? (_SaveCommand = new DelegateCommand(ExecuteSaveCommand, CanSave).ObservesProperty(() => DataTable).ObservesProperty(() => isSearch)); #endregion #region 事件 #endregion public AlarmQueryViewModel(IContainerProvider container) { _container = container; } #region 方法 void ExecuteLoadedCommand() { if (StartDate == null) { StartDate = DateTime.Now; } if (StartTime == null) { StartTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); } if (EndDate == null) { EndDate = DateTime.Now; } if (EndTime == null) { EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59); } } /// /// 查询 /// async void ExecuteSearchCommand() { DateTime dt1 = new DateTime(StartDate.Value.Year, StartDate.Value.Month, StartDate.Value.Day, StartTime.Value.Hour, StartTime.Value.Minute, StartTime.Value.Second); DateTime dt2 = new DateTime(EndDate.Value.Year, EndDate.Value.Month, EndDate.Value.Day, EndTime.Value.Hour, EndTime.Value.Minute, EndTime.Value.Second); isSearch = true; DataTable = await DatabaseHelper.GetAlarmRecords(dt1, dt2); isSearch = false; } /// /// 保存 /// async void ExecuteSaveCommand() { isSearch = true; try { //打开一个保存对话框,选择保存路径 //将DataTable报错到本地路径中,保存的文件名为“产品名称_开始时间_结束时间.csv” string startTime = " "; //开始时间 string endTime = " "; //结束时间 if (StartDate != null) { startTime = StartDate.Value.ToString("yyyyMMddHHmm"); } if (EndDate != null) { endTime = EndDate.Value.ToString("yyyyMMddHHmm"); } string fileName = $"Alarm_{startTime}_{endTime}.csv"; //打开一个保存对话框,选择保存路径 var saveFileDialog = new Microsoft.Win32.SaveFileDialog { FileName = fileName, DefaultExt = ".csv", Filter = "CSV Files (*.csv)|*.csv" }; bool? result = saveFileDialog.ShowDialog(); if (result == true) { //保存文件 string filePath = saveFileDialog.FileName; //将DataTable导出到csv文件中 if (filePath == null) return; DataTableHelper.ExportToCsv(DataTable, filePath); } } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error); } isSearch = false; } private bool CanSearch() { if (StartDate != null && StartTime != null && EndDate != null && EndTime != null && !isSearch) { return true; } else { return false; } } private bool CanSave() { if (DataTable != null && DataTable.Rows.Count > 0 && !isSearch) { return true; } else { return false; } } #endregion } }