| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- using Prism.Commands;
- using Prism.Mvvm;
- using System;
- using System.Collections.ObjectModel;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using TeamAAS_VP.Controls;
- using TeamAAS_VP.Interfaces;
- using TeamAAS_VP.Models;
- using TeamAAS_VP.Services;
- namespace TeamAAS_VP.ViewModels.Statistics
- {
- public class PhotoCaptureQueryViewModel : BindableBase
- {
- private readonly ISystemDatabaseService _systemDatabaseService;
- private readonly IProductService _productService;
- private readonly IConfigService _configService;
- public PhotoCaptureQueryViewModel(ISystemDatabaseService systemDatabaseService, IProductService productService, IConfigService configService)
- {
- _systemDatabaseService = systemDatabaseService;
- _productService = productService;
- _configService = configService;
- PageSize = 20; PageIndex = 1;
- StartDate = DateTime.Now.Date; EndDate = DateTime.Now.Date.AddDays(1);
- SearchCommand = new DelegateCommand(async () => await ExecuteSearchCommand());
- PrevPageCommand = new DelegateCommand(async () => { if (PageIndex > 1) { PageIndex--; await ExecuteSearchCommand(); } });
- NextPageCommand = new DelegateCommand(async () => { if (PageIndex * PageSize < TotalCount) { PageIndex++; await ExecuteSearchCommand(); } });
- ExportCommand = new DelegateCommand(async () => await ExecuteExportCommand());
- }
- private ObservableCollection<ProductModel> _AllProduct;
- public ObservableCollection<ProductModel> AllProduct
- {
- get { return _AllProduct; }
- set { SetProperty(ref _AllProduct, value); }
- }
- private ProductModel _SelectedProduct;
- public ProductModel SelectedProduct
- {
- get { return _SelectedProduct; }
- set { SetProperty(ref _SelectedProduct, value); }
- }
- private ObservableCollection<CameraInfo> _AllCamera;
- public ObservableCollection<CameraInfo> AllCamera
- {
- get { return _AllCamera; }
- set { SetProperty(ref _AllCamera, value); }
- }
- private CameraInfo _SelectedCamera;
- public CameraInfo SelectedCamera
- {
- get { return _SelectedCamera; }
- set { SetProperty(ref _SelectedCamera, value); }
- }
- private string _ProductSN;
- public string ProductSN
- {
- get { return _ProductSN; }
- set { SetProperty(ref _ProductSN, value); }
- }
- private DateTime? _StartDate;
- public DateTime? StartDate
- {
- get { return _StartDate; }
- set { SetProperty(ref _StartDate, value); }
- }
- private DateTime? _EndDate;
- public DateTime? EndDate
- {
- get { return _EndDate; }
- set { SetProperty(ref _EndDate, value); }
- }
- private ObservableCollection<PhotoCaptureRecord> _Results;
- public ObservableCollection<PhotoCaptureRecord> Results
- {
- get { return _Results; }
- set { SetProperty(ref _Results, value); }
- }
- private int _PageIndex;
- public int PageIndex
- {
- get { return _PageIndex; }
- set { SetProperty(ref _PageIndex, value); }
- }
- private int _PageSize;
- public int PageSize
- {
- get { return _PageSize; }
- set { SetProperty(ref _PageSize, value); }
- }
- private int _TotalCount;
- public int TotalCount
- {
- get { return _TotalCount; }
- set { SetProperty(ref _TotalCount, value); }
- }
- public DelegateCommand SearchCommand { get; private set; }
- public DelegateCommand PrevPageCommand { get; private set; }
- public DelegateCommand NextPageCommand { get; private set; }
- public DelegateCommand ExportCommand { get; private set; }
- private DelegateCommand _LoadedCommand;
- public DelegateCommand LoadedCommand =>
- _LoadedCommand ?? (_LoadedCommand = new DelegateCommand(ExecuteLoadedCommand));
- void ExecuteLoadedCommand()
- {
- AllProduct = new ObservableCollection<ProductModel>(_productService.GetAllProducts());
- AllCamera = new ObservableCollection<CameraInfo>(_configService.GetAllCameras());
- }
- private async Task ExecuteSearchCommand()
- {
- try
- {
- var start = StartDate.HasValue ? StartDate.Value : (DateTime?)null;
- var end = EndDate.HasValue ? EndDate.Value : (DateTime?)null;
- var res = await _systemDatabaseService.QueryPhotoCapturesAsync(SelectedProduct?.Name, SelectedCamera?.CameraName, ProductSN, start, end);
- Results = new ObservableCollection<PhotoCaptureRecord>(res);
- TotalCount = Results.Count;
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- private async Task ExecuteExportCommand()
- {
- try
- {
- var start = StartDate.HasValue ? StartDate.Value : (DateTime?)null;
- var end = EndDate.HasValue ? EndDate.Value : (DateTime?)null;
- var all = await _systemDatabaseService.QueryPhotoCapturesAsync(SelectedProduct?.Name, SelectedCamera?.CameraName, ProductSN, start, end);
- if (all == null || !all.Any()) { MessageBox.Show("没有找到符合条件的记录", "提示", MessageBoxButton.OK, MessageBoxImage.Information); return; }
- var dlg = new Microsoft.Win32.SaveFileDialog { FileName = $"PhotoCapture_{DateTime.Now:yyyyMMddHHmmss}.csv", DefaultExt = ".csv", Filter = "CSV Files (*.csv)|*.csv" };
- if (dlg.ShowDialog() != true) return;
- var path = dlg.FileName;
- using (var sw = new StreamWriter(path, false, Encoding.UTF8))
- {
- sw.WriteLine("CaptureTime,RecipeName,CameraName,ProductSN,Result,ImagePath");
- foreach (var r in all)
- {
- sw.WriteLine($"{r.CaptureTime:yyyy-MM-dd HH:mm:ss},{r.RecipeName},{r.CameraName},{r.ProductSN},{r.IsSuccess},{r.ImagePath}");
- }
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
- }
- }
|