WaferOffsetViewModel.cs 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. using MECF.Framework.Common.ControlDataContext;
  2. using MECF.Framework.Common.DataCenter;
  3. using MECF.Framework.Common.Equipment;
  4. using Prism.Commands;
  5. using Prism.Common;
  6. using Prism.Mvvm;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Collections.ObjectModel;
  10. using System.ComponentModel;
  11. using Venus_MainPages.Views;
  12. namespace Venus_MainPages.ViewModels
  13. {
  14. public class WaferOffsetViewModel : BindableBase
  15. {
  16. #region 私有变量
  17. private DateTime m_fromdateTime;//开始时间
  18. private DateTime m_todateTime;//结束时间
  19. private bool m_PMAIsInstalled;//模块安装用于show
  20. private bool m_PMBIsInstalled;//模块安装用于show
  21. private bool m_PMCIsInstalled;//模块安装用于show
  22. private bool m_PMDIsInstalled;//模块安装用于show
  23. private bool m_LLAIsInstalled;//模块安装用于show
  24. private bool m_LLBIsInstalled;//模块安装用于show
  25. private List<AwcModule> m_AwcModulesList;
  26. private WaferOffsetView m_waferoffset;
  27. private DelegateCommand<object> _LoadCommandPD;
  28. private ObservableCollection<OffsetItem> _offsetItems;
  29. #endregion
  30. #region 公开变量
  31. public bool PMAIsInstalled
  32. {
  33. get { return m_PMAIsInstalled; }
  34. set { SetProperty(ref m_PMAIsInstalled, value); }
  35. }
  36. public bool PMBIsInstalled
  37. {
  38. get { return m_PMBIsInstalled; }
  39. set { SetProperty(ref m_PMBIsInstalled, value); }
  40. }
  41. public bool PMCIsInstalled
  42. {
  43. get { return m_PMCIsInstalled; }
  44. set { SetProperty(ref m_PMCIsInstalled, value); }
  45. }
  46. public bool PMDIsInstalled
  47. {
  48. get { return m_PMDIsInstalled; }
  49. set { SetProperty(ref m_PMDIsInstalled, value); }
  50. }
  51. public bool LLAIsInstalled
  52. {
  53. get { return m_LLAIsInstalled; }
  54. set { SetProperty(ref m_LLAIsInstalled, value); }
  55. }
  56. public bool LLBIsInstalled
  57. {
  58. get { return m_LLBIsInstalled; }
  59. set { SetProperty(ref m_LLBIsInstalled, value); }
  60. }
  61. public DateTime FromDateTime
  62. {
  63. get => m_fromdateTime;
  64. set
  65. {
  66. SetProperty(ref m_fromdateTime, value);
  67. }
  68. }
  69. public DateTime ToDateTime
  70. {
  71. get => m_todateTime;
  72. set
  73. {
  74. SetProperty(ref m_todateTime, value);
  75. }
  76. }
  77. public ObservableCollection<OffsetItem> OffsetItems
  78. {
  79. get => _offsetItems;
  80. set
  81. {
  82. SetProperty(ref _offsetItems, value);
  83. }
  84. }
  85. public List<AwcModule> AwcModulesList
  86. {
  87. get { return m_AwcModulesList; }
  88. set { SetProperty(ref m_AwcModulesList, value); }
  89. }
  90. public DelegateCommand<object> LoadCommandPD =>
  91. _LoadCommandPD ?? (_LoadCommandPD = new DelegateCommand<object>(OnLoadPd));
  92. //private DelegateCommand _ShowCommand;
  93. //public DelegateCommand ShowCommand =>
  94. // _ShowCommand ?? (_ShowCommand = new DelegateCommand(OnShow));
  95. #endregion
  96. #region 私有方法
  97. //private void OnShow()
  98. //{
  99. //}
  100. private void OnLoadPd(object obj)
  101. {
  102. m_waferoffset = (WaferOffsetView)obj;
  103. m_waferoffset.TimeFrom.ValueChanged += TimeFrom_ValueChanged;
  104. m_waferoffset.TimeTo.ValueChanged += TimeFrom_ValueChanged;
  105. m_waferoffset.TimeFrom.Value = DateTime.Today;
  106. m_waferoffset.TimeTo.Value = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 23, 59, 59, 999);
  107. }
  108. private void TimeFrom_ValueChanged(object sender, EventArgs e)
  109. {
  110. if (AwcModulesList.Count > 0)
  111. {
  112. for (int i = 0; i < AwcModulesList.Count; i++)
  113. {
  114. AwcModulesList[i].From_date = m_waferoffset.TimeFrom.Value;
  115. AwcModulesList[i].End_date = m_waferoffset.TimeTo.Value;
  116. }
  117. }
  118. }
  119. #endregion
  120. //public ObservableCollection<>
  121. public WaferOffsetViewModel()
  122. {
  123. string allModules = QueryDataClient.Instance.Service.GetConfig($"System.InstalledModules").ToString();
  124. AwcModulesList = new List<AwcModule>();
  125. if (allModules.Contains("PMA"))
  126. AwcModulesList.Add(new AwcModule() { Module_Name = ModuleName.PMA.ToString(), From_date = FromDateTime, End_date = ToDateTime, OffsetItems = new ObservableCollection<OffsetItem>() });
  127. if (allModules.Contains("PMB"))
  128. AwcModulesList.Add(new AwcModule() { Module_Name = ModuleName.PMB.ToString(), From_date = FromDateTime, End_date = ToDateTime, OffsetItems = new ObservableCollection<OffsetItem>() });
  129. if (allModules.Contains("PMC"))
  130. AwcModulesList.Add(new AwcModule() { Module_Name = ModuleName.PMC.ToString(), From_date = FromDateTime, End_date = ToDateTime, OffsetItems = new ObservableCollection<OffsetItem>() });
  131. if (allModules.Contains("PMD"))
  132. AwcModulesList.Add(new AwcModule() { Module_Name = ModuleName.PMD.ToString(), From_date = FromDateTime, End_date = ToDateTime, OffsetItems = new ObservableCollection<OffsetItem>() });
  133. if (allModules.Contains("LLA"))
  134. AwcModulesList.Add(new AwcModule() { Module_Name = ModuleName.LLA.ToString(), From_date = FromDateTime, End_date = ToDateTime, OffsetItems = new ObservableCollection<OffsetItem>() });
  135. if (allModules.Contains("LLB"))
  136. AwcModulesList.Add(new AwcModule() { Module_Name = ModuleName.LLB.ToString(), From_date = FromDateTime, End_date = ToDateTime, OffsetItems = new ObservableCollection<OffsetItem>() });
  137. AwcModulesList.ForEach(module =>
  138. {
  139. module.OnValueChanged += Module_OnValueChanged;
  140. });
  141. }
  142. private void Module_OnValueChanged(ObservableCollection<OffsetItem> obj)
  143. {
  144. OffsetItems = obj;
  145. }
  146. }
  147. //用于散点展示的数据结构
  148. public class AwcModule : INotifyPropertyChanged
  149. {
  150. public event PropertyChangedEventHandler PropertyChanged;
  151. public void InvokePropertyChanged(string propertyName)
  152. {
  153. if (PropertyChanged != null)
  154. {
  155. PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
  156. }
  157. }
  158. public event Action<ObservableCollection<OffsetItem>> OnValueChanged;
  159. public void ValueChanged(ObservableCollection<OffsetItem> offsetItems)
  160. {
  161. OnValueChanged.Invoke(offsetItems);
  162. }
  163. private string _modulename;
  164. private DelegateCommand _GetDataCommand;
  165. private DelegateCommand _RemoveDataCommand;
  166. private ObservableCollection<OffsetItem> _OffsetItems;
  167. private DateTime _From_date;
  168. private DateTime _End_date;
  169. private List<(double x, double y, int arm, string info)> _PositionInfo;
  170. public string Module_Name { get => _modulename; set { _modulename = value; InvokePropertyChanged("Module_Name"); } }
  171. public DateTime From_date { get => _From_date; set { _From_date = value; InvokePropertyChanged("From_date"); } }
  172. public DateTime End_date { get => _End_date; set { _End_date = value; InvokePropertyChanged("End_date"); } }
  173. public ObservableCollection<OffsetItem> OffsetItems { get => _OffsetItems; set { _OffsetItems = value; InvokePropertyChanged("OffsetItems"); } }
  174. public List<(double x, double y, int arm, string info)> PositionInfo
  175. {
  176. get => _PositionInfo;
  177. set
  178. {
  179. _PositionInfo = value;
  180. InvokePropertyChanged("PositionInfo");
  181. }
  182. }
  183. public DelegateCommand GetDataCommand =>
  184. _GetDataCommand ?? (_GetDataCommand = new DelegateCommand(getdata));
  185. public DelegateCommand RemoveDataCommand =>
  186. _RemoveDataCommand ?? (_RemoveDataCommand = new DelegateCommand(() => PositionInfo = new List<(double x, double y, int arm, string info)>()));
  187. private void getdata()
  188. {
  189. OffsetItems =new ObservableCollection<OffsetItem>( QueryDataClient.Instance.Service.QueryOffsetDataByTime(Module_Name, From_date, End_date));
  190. List<(double x, double y, int arm, string info)> posInfo = new List<(double x, double y, int arm, string info)>();
  191. foreach (OffsetItem item in OffsetItems)
  192. {
  193. int armPt;
  194. if (item.ArmPosition == "Blade1")
  195. armPt = 1;
  196. else
  197. armPt = 0;
  198. string content = string.Format(
  199. $"OriginModule:{item.OriginModule}\r\n" +
  200. $"OriginSlot:{item.OriginSlot}\r\n" +
  201. $"SourceModule:{item.SourceModule}\r\n" +
  202. $"SourceSlot:{item.SourceSlot}\r\n" +
  203. $"DestinationModule:{item.DestinationModule}\r\n" +
  204. $"DestinationSlot:{item.DestinationSlot}\r\n" +
  205. $"ArmPosition:{item.ArmPosition}\r\n" +
  206. $"ArmPan:{item.ArmPan}\r\n" +
  207. $"OffsetX:{item.OffsetX}\r\n" +
  208. $"OffsetY:{item.OffsetY}\r\n" +
  209. $"OffsetD:{item.OffsetD}\r\n" +
  210. $"StartTime:{item.StartTime}\r\n" +
  211. $"EndTime:{item.EndTime}\r\n"
  212. );
  213. posInfo.Add((item.OffsetX, item.OffsetY, armPt, content));
  214. }
  215. PositionInfo = posInfo;
  216. ValueChanged(OffsetItems);
  217. }
  218. }
  219. }