WorkRunViewModel.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. using DefaultEdit.Communication;
  2. using DefaultEdit.Core;
  3. using DefaultEdit.Log4xml;
  4. using DefaultEdit.Model;
  5. using DefaultEdit.Views;
  6. using Microsoft.Xaml.Behaviors;
  7. using NextTreatMesDemo.Models;
  8. using Prism.Commands;
  9. using Prism.Events;
  10. using Prism.Ioc;
  11. using Prism.Mvvm;
  12. using Prism.Regions;
  13. using System;
  14. using System.Collections.ObjectModel;
  15. using System.Collections.Specialized;
  16. using System.Diagnostics;
  17. using System.Threading;
  18. using System.Windows;
  19. using System.Windows.Controls;
  20. namespace DefaultEdit.ViewModels
  21. {
  22. public class WorkRunViewModel : BindableBase
  23. {
  24. private Management _management;
  25. private IContainerProvider _container;
  26. private IEventAggregator _eventAggregator;
  27. private IRegionManager _regionManager;
  28. private ObservableCollection<string> _Logs = new ObservableCollection<string>();
  29. public ObservableCollection<string> Logs { get => _Logs; set => _Logs = value; }
  30. public Management Management { get => _management; set => _management = value; }
  31. private DelegateCommand _OpenRoleLoginViewCommand;
  32. public DelegateCommand OpenRoleLoginViewCommand =>
  33. _OpenRoleLoginViewCommand ?? ( _OpenRoleLoginViewCommand = new DelegateCommand(RoleLoginViewShow) );
  34. private DelegateCommand _DLoginCommand;
  35. public DelegateCommand DLoginCommand =>
  36. _DLoginCommand ?? ( _DLoginCommand = new DelegateCommand(DLoginViewShow) );
  37. private DelegateCommand _SwitchModeCommand;
  38. public DelegateCommand SwitchModeCommand =>
  39. _SwitchModeCommand ?? ( _SwitchModeCommand = new DelegateCommand(SwitchModeMethod) );
  40. private DelegateCommand _ClearRunDataCommand;
  41. public DelegateCommand ClearRunDataCommand =>
  42. _ClearRunDataCommand ?? ( _ClearRunDataCommand = new DelegateCommand(ClearRunData) );
  43. private DelegateCommand _ClearLogDataCommand;
  44. public DelegateCommand ClearLogDataCommand =>
  45. _ClearLogDataCommand ?? ( _ClearLogDataCommand = new DelegateCommand(ClearLogData) );
  46. private DelegateCommand<string> _ManualPrintCommand;
  47. public DelegateCommand<string> ManualPrintCommand =>
  48. _ManualPrintCommand ?? ( _ManualPrintCommand = new DelegateCommand<string>(ManualPrint) );
  49. public WorkRunViewModel(IContainerProvider container, IRegionManager regionManager, IEventAggregator eventAggregator)
  50. {
  51. _container = container;
  52. _eventAggregator = eventAggregator;
  53. _regionManager = regionManager;
  54. Management = container.Resolve<Management>();
  55. LogHelper.logChangHandler += ShowLog;
  56. LogHelper.Info("===========================程序启动==========================");
  57. Management.CurentApplicationSettings = FileHelper.ReadApplicationConfiguration();
  58. LogHelper.Info("加载配置文件完成");
  59. Management.ConnectPlc();
  60. //创建一个定时器,每秒更新一次时间
  61. var timer = new System.Timers.Timer(1000);
  62. timer.Elapsed += (sender, e) =>
  63. {
  64. Management.DateTimeNow = DateTime.Now;
  65. };
  66. timer.Start();
  67. }
  68. private void ShowLog(Log4xml.Log log)
  69. {
  70. System.Windows.Application.Current.Dispatcher.Invoke(new Action(() =>
  71. {
  72. string str = log.Msg.Trim();
  73. while ( true )
  74. {
  75. if ( str.Length > 80 )
  76. {
  77. Logs.Add(str.Substring(0, 80));
  78. str = log.Time + " " + str.Substring(80);
  79. }
  80. else
  81. {
  82. Logs.Add(str);
  83. break;
  84. }
  85. }
  86. if ( Logs.Count > 100 )
  87. {
  88. Logs.RemoveAt(0);
  89. }
  90. }));
  91. }
  92. void SwitchModeMethod()
  93. {
  94. if ( Management.Ismeswork )
  95. {
  96. Management.Ismeswork = false;
  97. }
  98. else
  99. {
  100. Management.Ismeswork = true;
  101. }
  102. }
  103. void ClearRunData()
  104. {
  105. Management.RuningData.Clear();
  106. }
  107. void ClearLogData()
  108. {
  109. Logs.Clear();
  110. }
  111. void RoleLoginViewShow()
  112. {
  113. RoleLoginView roleLoginView = new RoleLoginView();
  114. roleLoginView.ShowDialog();
  115. }
  116. void DLoginViewShow()
  117. {
  118. Management.UserId = "";
  119. Management.UserName = "";
  120. }
  121. void ManualPrint(string rfid)
  122. {
  123. bool isok=false;
  124. for ( int i = 0; i < Management.processDataModels.Count; i++ )
  125. {
  126. if ( Management.processDataModels[ i ].BoardId == rfid )
  127. {
  128. Management.PrintInfo(Management.processDataModels[ i ], "手动");
  129. Management.processDataModels.RemoveAt(i);
  130. isok=true;
  131. MessageBox.Show("打印完成");
  132. }
  133. }
  134. if ( !isok )
  135. {
  136. MessageBox.Show("网板信息未找到");
  137. }
  138. }
  139. }
  140. public class AutoScrollBehavior : Behavior<ListBox>
  141. {
  142. protected override void OnAttached()
  143. {
  144. base.OnAttached();
  145. var items = AssociatedObject.Items;
  146. if ( items is INotifyCollectionChanged incc )
  147. {
  148. incc.CollectionChanged += OnCollectionChanged;
  149. }
  150. }
  151. private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
  152. {
  153. if ( e.Action == NotifyCollectionChangedAction.Add && AssociatedObject.HasItems )
  154. {
  155. AssociatedObject.Dispatcher.BeginInvoke(new Action(() =>
  156. {
  157. AssociatedObject.ScrollIntoView(AssociatedObject.Items[ AssociatedObject.Items.Count - 1 ]);
  158. }));
  159. }
  160. }
  161. protected override void OnDetaching()
  162. {
  163. if ( AssociatedObject.Items is INotifyCollectionChanged incc )
  164. {
  165. incc.CollectionChanged -= OnCollectionChanged;
  166. }
  167. base.OnDetaching();
  168. }
  169. }
  170. }