ScrewFeederBatchQueryViewModel.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. using Prism.Commands;
  2. using Prism.Mvvm;
  3. using System;
  4. using System.Collections.ObjectModel;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows;
  10. using TeamAAS_VP.Interfaces;
  11. using TeamAAS_VP.Models;
  12. namespace TeamAAS_VP.ViewModels.Statistics
  13. {
  14. public class ScrewFeederBatchQueryViewModel : BindableBase
  15. {
  16. private readonly ISystemDatabaseService _systemDatabaseService;
  17. public ScrewFeederBatchQueryViewModel(ISystemDatabaseService systemDatabaseService)
  18. {
  19. _systemDatabaseService = systemDatabaseService;
  20. PageSize = 20; PageIndex = 1;
  21. StartDate = DateTime.Now.Date; EndDate = DateTime.Now.Date.AddDays(1);
  22. SearchCommand = new DelegateCommand(async () => await ExecuteSearchCommand());
  23. PrevPageCommand = new DelegateCommand(async () => { if (PageIndex > 1) { PageIndex--; await ExecuteSearchCommand(); } });
  24. NextPageCommand = new DelegateCommand(async () => { if (PageIndex * PageSize < TotalCount) { PageIndex++; await ExecuteSearchCommand(); } });
  25. ExportCommand = new DelegateCommand(async () => await ExecuteExportCommand());
  26. }
  27. private DateTime? _StartDate;
  28. public DateTime? StartDate
  29. {
  30. get { return _StartDate; }
  31. set { SetProperty(ref _StartDate, value); }
  32. }
  33. private DateTime? _EndDate;
  34. public DateTime? EndDate
  35. {
  36. get { return _EndDate; }
  37. set { SetProperty(ref _EndDate, value); }
  38. }
  39. private string _BatchNumber;
  40. public string BatchNumber
  41. {
  42. get { return _BatchNumber; }
  43. set { SetProperty(ref _BatchNumber, value); }
  44. }
  45. private int? _FeederNumber;
  46. public int? FeederNumber
  47. {
  48. get { return _FeederNumber; }
  49. set { SetProperty(ref _FeederNumber, value); }
  50. }
  51. private ObservableCollection<ScrewFeederBatchRecord> _Results;
  52. public ObservableCollection<ScrewFeederBatchRecord> Results
  53. {
  54. get { return _Results; }
  55. set { SetProperty(ref _Results, value); }
  56. }
  57. private int _PageIndex;
  58. public int PageIndex
  59. {
  60. get { return _PageIndex; }
  61. set { SetProperty(ref _PageIndex, value); }
  62. }
  63. private int _PageSize;
  64. public int PageSize
  65. {
  66. get { return _PageSize; }
  67. set { SetProperty(ref _PageSize, value); }
  68. }
  69. private int _TotalCount;
  70. public int TotalCount
  71. {
  72. get { return _TotalCount; }
  73. set { SetProperty(ref _TotalCount, value); }
  74. }
  75. public DelegateCommand SearchCommand { get; private set; }
  76. public DelegateCommand PrevPageCommand { get; private set; }
  77. public DelegateCommand NextPageCommand { get; private set; }
  78. public DelegateCommand ExportCommand { get; private set; }
  79. private async Task ExecuteSearchCommand()
  80. {
  81. try
  82. {
  83. var start = StartDate.HasValue ? StartDate.Value : (DateTime?)null;
  84. var end = EndDate.HasValue ? EndDate.Value : (DateTime?)null;
  85. var res = await _systemDatabaseService.QueryScrewFeederBatchRecordsPagedAsync(start, end, BatchNumber, FeederNumber, PageIndex, PageSize);
  86. Results = new ObservableCollection<ScrewFeederBatchRecord>(res.Items);
  87. TotalCount = res.TotalCount;
  88. }
  89. catch (Exception ex)
  90. {
  91. MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
  92. }
  93. }
  94. private async Task ExecuteExportCommand()
  95. {
  96. try
  97. {
  98. var start = StartDate.HasValue ? StartDate.Value : (DateTime?)null;
  99. var end = EndDate.HasValue ? EndDate.Value : (DateTime?)null;
  100. var all = await _systemDatabaseService.QueryScrewFeederBatchRecordsAsync(start, end, BatchNumber, FeederNumber);
  101. if (all == null || !all.Any()) { MessageBox.Show("没有找到符合条件的记录", "提示", MessageBoxButton.OK, MessageBoxImage.Information); return; }
  102. var dlg = new Microsoft.Win32.SaveFileDialog { FileName = $"ScrewFeederBatch_{DateTime.Now:yyyyMMddHHmmss}.csv", DefaultExt = ".csv", Filter = "CSV Files (*.csv)|*.csv" };
  103. if (dlg.ShowDialog() != true) return;
  104. var path = dlg.FileName;
  105. using (var sw = new StreamWriter(path, false, Encoding.UTF8))
  106. {
  107. sw.WriteLine("ChangeTime,BatchNumber,FeederNumber,OperatorName");
  108. foreach (var r in all)
  109. {
  110. sw.WriteLine($"{r.ChangeTime:yyyy-MM-dd HH:mm:ss},{r.BatchNumber},{r.FeederNumber},{r.OperatorName}");
  111. }
  112. }
  113. }
  114. catch (Exception ex)
  115. {
  116. MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
  117. }
  118. }
  119. }
  120. }