RecipeStepNaviViewModel.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. using ProximaAnalizer.Data;
  2. using System.Collections.ObjectModel;
  3. using System.Windows;
  4. namespace ProximaAnalizer.ViewModels;
  5. internal partial class RecipeStepNaviViewModel(IEventAggregator eventAggregator, SqlSugarCustom sqlSugar, TraceData traceData) : ObservableObject
  6. {
  7. [ObservableProperty]
  8. private DateTime _SelectedTime = DateTime.Now;
  9. [ObservableProperty]
  10. private Visibility _Masking = Visibility.Hidden;
  11. [ObservableProperty]
  12. private ObservableCollection<ProcessData> _ProcessData = [];
  13. partial void OnSelectedTimeChanged(DateTime value)
  14. {
  15. this.Search();
  16. }
  17. [RelayCommand]
  18. private void Navi(ProcessData process)
  19. {
  20. this.Masking = Visibility.Visible;
  21. traceData.ProcessData = process;
  22. Task.Factory.StartNew(() =>
  23. {
  24. try
  25. {
  26. App.Current.Dispatcher.Invoke(() =>
  27. {
  28. eventAggregator.GetEvent<WindowSwitch>().Page = Pages.MainWindow;
  29. eventAggregator.GetEvent<WindowSwitch>().Publish();
  30. eventAggregator.GetEvent<RefreshRecipeData>().Publish();
  31. });
  32. }
  33. finally
  34. {
  35. this.Masking = Visibility.Collapsed;
  36. }
  37. });
  38. }
  39. [RelayCommand]
  40. private void History(ProcessData process)
  41. {
  42. this.Masking = Visibility.Visible;
  43. traceData.ProcessData = process;
  44. Task.Factory.StartNew(() =>
  45. {
  46. try
  47. {
  48. App.Current.Dispatcher.Invoke(() =>
  49. {
  50. eventAggregator.GetEvent<WindowSwitch>().Page = Pages.HistoryData;
  51. eventAggregator.GetEvent<WindowSwitch>().Publish();
  52. RefreshAlarmData alarmData = eventAggregator.GetEvent<RefreshAlarmData>();
  53. alarmData.Selected = null;
  54. alarmData.FromPage = Pages.RecipeStepNavi;
  55. alarmData.Publish();
  56. });
  57. }
  58. finally
  59. {
  60. this.Masking = Visibility.Collapsed;
  61. }
  62. });
  63. }
  64. [RelayCommand]
  65. private void DayOperator(string para)
  66. {
  67. this.SelectedTime = para switch
  68. {
  69. "+" => this.SelectedTime.AddDays(1),
  70. "-" => this.SelectedTime.AddDays(-1),
  71. _ => this.SelectedTime
  72. };
  73. }
  74. [RelayCommand]
  75. private void Search()
  76. {
  77. if (sqlSugar.Client is null)
  78. return;
  79. this.ProcessData ??= [];
  80. this.ProcessData.Clear();
  81. this.Masking = Visibility.Visible;
  82. Task.Factory.StartNew(() =>
  83. {
  84. try
  85. {
  86. var t = sqlSugar.Client.Queryable<ProcessData>().Where(t =>
  87. t.Process_Begin_Time >= SelectedTime &&
  88. t.Process_Begin_Time < SelectedTime.AddDays(1)).AS("process_data").ToArray();
  89. foreach (var item in t)
  90. {
  91. App.Current.Dispatcher.Invoke(() =>
  92. {
  93. this.ProcessData.Add(item);
  94. });
  95. Thread.Sleep(1);
  96. }
  97. }
  98. finally
  99. {
  100. this.Masking = Visibility.Collapsed;
  101. }
  102. });
  103. }
  104. //[RelayCommand]
  105. //private void NameSearch(string name)
  106. //{
  107. // if (sqlSugar.Client is null)
  108. // return;
  109. // if (string.IsNullOrEmpty(name))
  110. // return;
  111. // this.ProcessData ??= [];
  112. // this.ProcessData.Clear();
  113. // this.Masking = Visibility.Visible;
  114. // Task.Factory.StartNew(() =>
  115. // {
  116. // try
  117. // {
  118. // var t = sqlSugar.Client.Queryable<ProcessData>()
  119. // .Where(t => (string.IsNullOrEmpty(t.Recipe_Name) ? string.Empty : t.Recipe_Name).ToLower().Contains(name.ToLower()))
  120. // .AS("process_data").ToArray()
  121. // .OrderBy(t => t.Process_Begin_Time);
  122. // foreach (var item in t)
  123. // {
  124. // App.Current.Dispatcher.Invoke(() =>
  125. // {
  126. // this.ProcessData.Add(item);
  127. // });
  128. // Thread.Sleep(1);
  129. // }
  130. // }
  131. // finally
  132. // {
  133. // this.Masking = Visibility.Collapsed;
  134. // }
  135. // });
  136. //}
  137. }