RecipeStepNaviViewModel.cs 4.3 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. }