using OxyPlot.Axes; using OxyPlot.Legends; using OxyPlot.Series; using OxyPlot; using Prism.Commands; using Prism.Ioc; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Linq; using TeamAAS_VP.Core; using TeamAAS_VP.Data; using System.Data; using TeamAAS_VP.Models; using System.Threading.Tasks; using System.Collections.ObjectModel; using System.Windows.Controls; using System.Windows; using TeamAAS_VM.Data; namespace TeamAAS_VP.ViewModels.Statistics { public class StatisticalQueryViewModel : BindableBase { IContainerProvider _container; #region 属性 private DataTable _dataTable; public DataTable DataTable { get { return _dataTable; } set { SetProperty(ref _dataTable, value); } } private Management _management; public Management management { get { return _management; } set { SetProperty(ref _management, value); } } private ObservableCollection _Sequences; public ObservableCollection Sequences { get { return _Sequences; } set { SetProperty(ref _Sequences, value); } } private ProductModel _SelectedProduct; public ProductModel SelectedProduct { get { return _SelectedProduct; } set { SetProperty(ref _SelectedProduct, value); } } private string _SelectedSequence; public string SelectedSequence { get { return _SelectedSequence; } set { SetProperty(ref _SelectedSequence, 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(() => SelectedProduct).ObservesProperty(()=>SelectedSequence). ObservesProperty(() => isSearch)); private DelegateCommand _SaveCommand; public DelegateCommand SaveCommand => _SaveCommand ?? (_SaveCommand = new DelegateCommand(ExecuteSaveCommand, CanSave).ObservesProperty(() => DataTable).ObservesProperty(() => isSearch)); #endregion #region 事件 #endregion public StatisticalQueryViewModel(IContainerProvider container) { _container = container; } #region 方法 void ExecuteLoadedCommand() { if (management == null) management = _container.Resolve(); if (management.CurrentProduct == null) return; 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() { isSearch = true; DataTable = await DatabaseHelper.GetProductProcessRecords(SelectedProduct.Name, SelectedSequence); 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 = $"{SelectedProduct.Name}_{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; } public void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (SelectedProduct == null) return; Sequences = new ObservableCollection(); foreach (var item in SelectedProduct.CameraProcedures) { foreach (var item1 in item.ProcedureModels) { Sequences.Add(item1.Name); } } } private bool CanSearch() { if (StartDate != null && StartTime != null && EndDate != null && EndTime != null && SelectedProduct != null && SelectedSequence != null && !isSearch) { return true; } else { return false; } } private bool CanSave() { if (DataTable != null && DataTable.Rows.Count > 0 && !isSearch) { return true; } else { return false; } } #endregion } }