GasVerificationViewModel.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. using Aitex.Core.Common.DeviceData;
  2. using MECF.Framework.Common.DataCenter;
  3. using MECF.Framework.Common.DBCore;
  4. using MECF.Framework.Common.Device.Bases;
  5. using MECF.Framework.Common.Equipment;
  6. using MECF.Framework.Common.OperationCenter;
  7. using Prism.Commands;
  8. using Prism.Mvvm;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Collections.ObjectModel;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Windows.Threading;
  16. using Venus_Core;
  17. using Venus_MainPages.Unity;
  18. namespace Venus_MainPages.ViewModels
  19. {
  20. public class GasVerificationViewModel : BindableBase
  21. {
  22. #region 私有变量
  23. private ObservableCollection<VerificationOneData> m_VerificationOnePointDataRecords;
  24. private ObservableCollection<VerificationOneData> m_VerificationDataTenPointRecords;
  25. private DispatcherTimer timer = new DispatcherTimer();
  26. private PMState m_PMCurrentState;
  27. private ObservableCollection<MFCCalibrationTenPointsData> m_MFCCalibrationOnePointData;
  28. private ObservableCollection<MFCCalibrationTenPointsData> m_MFCCalibrationTenPointsData;
  29. private ObservableCollection<int> m_MFCVerificationPoints;
  30. private string OnePointIndex = "MfcGas1";
  31. private int m_OnePointSetPoint;
  32. private bool m_firsflag = true;
  33. #endregion
  34. #region 公开变量
  35. //private Dictionary<string, object> m_RtDataValues;
  36. public string ModuleName;
  37. public ObservableCollection<VerificationOneData> VerificationDataOnePointRecords
  38. {
  39. get { return m_VerificationOnePointDataRecords; }
  40. set { SetProperty(ref m_VerificationOnePointDataRecords, value); }
  41. }
  42. public ObservableCollection<VerificationOneData> VerificationDataTenPointRecords
  43. {
  44. get { return m_VerificationDataTenPointRecords; }
  45. set { SetProperty(ref m_VerificationDataTenPointRecords, value); }
  46. }
  47. public int OnePointSetPoint
  48. {
  49. get { return m_OnePointSetPoint; }
  50. set { SetProperty(ref m_OnePointSetPoint, value); }
  51. }
  52. public PMState PMCurrentState
  53. {
  54. get { return m_PMCurrentState; }
  55. set
  56. {
  57. if ((m_PMCurrentState == PMState.MFCVerification || m_PMCurrentState == PMState.AllMFCVerification) && value == PMState.Idle)
  58. {
  59. InitTable();
  60. }
  61. SetProperty(ref m_PMCurrentState, value);
  62. }
  63. }
  64. public ObservableCollection<MFCCalibrationTenPointsData> MFCCalibrationOnePointDataRecords
  65. {
  66. get { return m_MFCCalibrationOnePointData; }
  67. set { SetProperty(ref m_MFCCalibrationOnePointData, value); }
  68. }
  69. public ObservableCollection<MFCCalibrationTenPointsData> MFCCalibrationTenPointsDataRecords
  70. {
  71. get { return m_MFCCalibrationTenPointsData; }
  72. set { SetProperty(ref m_MFCCalibrationTenPointsData, value); }
  73. }
  74. public ObservableCollection<int> MFCVerificationPoints
  75. {
  76. get { return m_MFCVerificationPoints; }
  77. set
  78. {
  79. SetProperty(ref m_MFCVerificationPoints, value);
  80. }
  81. }
  82. private DelegateCommand<object> _SelectOneVerificaton;
  83. private DelegateCommand<object> _LoadCommand;
  84. public DelegateCommand<object> LoadCommand =>
  85. _LoadCommand ?? (_LoadCommand = new DelegateCommand<object>(OnLoad));
  86. public DelegateCommand<object> SelectOneVerificaton =>
  87. _SelectOneVerificaton ?? (_SelectOneVerificaton = new DelegateCommand<object>(OnSelectGas));
  88. private DelegateCommand _StartOnePointVerificationCommand;
  89. public DelegateCommand StartOnePointVerificationCommand =>
  90. _StartOnePointVerificationCommand ?? (_StartOnePointVerificationCommand = new DelegateCommand(OnStartOnePointVerification));
  91. private DelegateCommand _StartTenPointVerificationCommand;
  92. public DelegateCommand StartTenPointVerificationCommand =>
  93. _StartTenPointVerificationCommand ?? (_StartTenPointVerificationCommand = new DelegateCommand(OnStartTenPointVerification));
  94. private DelegateCommand _AbortCommand;
  95. public DelegateCommand AbortCommand =>
  96. _AbortCommand ?? (_AbortCommand = new DelegateCommand(OnAbort));
  97. private DelegateCommand _FlashCommand;
  98. public DelegateCommand FlashCommand =>
  99. _FlashCommand ?? (_FlashCommand = new DelegateCommand(OnFlash));
  100. #endregion
  101. #region 初始函数
  102. public GasVerificationViewModel()
  103. {
  104. timer.Interval = TimeSpan.FromSeconds(1);
  105. timer.Tick += Timer_Tick;
  106. timer.Start();
  107. MFCCalibrationOnePointDataRecords = new ObservableCollection<MFCCalibrationTenPointsData>();
  108. MFCCalibrationTenPointsDataRecords = new ObservableCollection<MFCCalibrationTenPointsData>();
  109. MFCVerificationPoints = new ObservableCollection<int>();
  110. for (int i = 0; i < 10; i++)
  111. {
  112. MFCCalibrationTenPointsDataRecords.Add(new MFCCalibrationTenPointsData());
  113. }
  114. for (int i = 0; i < 1; i++)
  115. {
  116. MFCCalibrationOnePointDataRecords.Add(new MFCCalibrationTenPointsData());
  117. }
  118. }
  119. public void Init()
  120. {
  121. //OnSelectGas();
  122. }
  123. #endregion
  124. #region 私有方法
  125. private void Timer_Tick(object sender, EventArgs e)
  126. {
  127. //InitTable();
  128. PMCurrentState = (PMState)QueryDataClient.Instance.Service.GetData($"{ModuleName}.FsmState");
  129. if (VerificationDataOnePointRecords!=null && OnePointIndex != VerificationDataOnePointRecords.First(x => x.IsCheckGas == true).GasIndex)
  130. {
  131. MFCVerificationPoints.Clear();
  132. var MFCData = (AITMfcData)QueryDataClient.Instance.Service.GetData($"{ModuleName}.{VerificationDataOnePointRecords.First(x => x.IsCheckGas == true).GasIndex}");
  133. if (MFCData != null)
  134. {
  135. int delta1 = (int)MFCData.Scale / 10;
  136. for (int i = 0; i < 10; i++)
  137. {
  138. MFCVerificationPoints.Add(delta1 + delta1 * i);
  139. }
  140. OnePointIndex = VerificationDataOnePointRecords.First(x => x.IsCheckGas == true).GasIndex;
  141. OnePointSetPoint = MFCVerificationPoints[0];
  142. }
  143. }
  144. }
  145. private void OnLoad(object mFCVerificationView)
  146. {
  147. if (m_firsflag)
  148. {
  149. m_firsflag = false;
  150. InitTable();
  151. }
  152. }
  153. private void OnStartOnePointVerification()
  154. {
  155. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.MFCVerification}", VerificationDataOnePointRecords.First(x => x.IsCheckGas == true).GasIndex.Replace("MfcGas",""), OnePointSetPoint, 1);
  156. }
  157. private void OnStartTenPointVerification()
  158. {
  159. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.{RtOperation.MFCVerification}", VerificationDataTenPointRecords.First(x => x.IsCheckGas == true).GasIndex.Replace("MfcGas", ""), 2, 10);
  160. }
  161. public void OnAbort()
  162. {
  163. InvokeClient.Instance.Service.DoOperation($"{ModuleName}.Abort");
  164. }
  165. public void OnFlash()
  166. {
  167. InitTable();
  168. }
  169. private void OnSelectGas(object gasindex)
  170. {
  171. if (gasindex != null)
  172. {
  173. }
  174. }
  175. private void InitTable()
  176. {
  177. var onePointData = QueryDataClient.Instance.Service.GetMFCVerificationOnePointData();
  178. if (onePointData != null)
  179. {
  180. var _onePointData = onePointData.Where(x => x.Module == ModuleName);
  181. VerificationDataOnePointRecords = new ObservableCollection<VerificationOneData>();
  182. for (int i = 1; i <= 12; i++)
  183. {
  184. if ((bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas{i}.Enable"))
  185. {
  186. VerificationDataOnePointRecords.Add(new VerificationOneData()
  187. {
  188. GasIndex = $"MfcGas{i}",
  189. GasName = QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas{i}.GasName").ToString(),
  190. Setpoint = _onePointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _onePointData.FirstOrDefault(x=>x.Name== $"MfcGas{i}").Setpoint : 0f,
  191. Calculate = _onePointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _onePointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Calculate : 0f,
  192. OperateTime = _onePointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? DateTime.Parse(_onePointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").OperateTime.ToString()).ToString("yyyy/MM/dd HH:mm:ss") : "",
  193. FullRange = QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas{i}.MfcN2Scale").ToString(),
  194. IsCheckGas = false
  195. });
  196. }
  197. }
  198. if(VerificationDataOnePointRecords.Count > 0)
  199. VerificationDataOnePointRecords[0].IsCheckGas = true;
  200. }
  201. var tenPointsData = QueryDataClient.Instance.Service.GetMFCVerificationTenPointsData();
  202. if (tenPointsData != null)
  203. {
  204. var _tenPointData = tenPointsData.Where(x => x.Module == ModuleName);
  205. VerificationDataTenPointRecords = new ObservableCollection<VerificationOneData>();
  206. for (int i = 1; i <= 12; i++)
  207. {
  208. if ((bool)QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas{i}.Enable"))
  209. {
  210. VerificationDataTenPointRecords.Add(new VerificationOneData()
  211. {
  212. GasIndex = $"MfcGas{i}",
  213. GasName = QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas{i}.GasName").ToString(),
  214. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent10Setpoint : 0f,
  215. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent10Calculate : 0f,
  216. OperateTime = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? DateTime.Parse(_tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").OperateTime.ToString()).ToString("yyyy/MM/dd HH:mm:ss") : "",
  217. FullRange = QueryDataClient.Instance.Service.GetConfig($"{ModuleName}.MfcGas{i}.MfcN2Scale").ToString(),
  218. IsCheckGas = false,
  219. ShowIndex = true
  220. }); ;
  221. VerificationDataTenPointRecords.Add(new VerificationOneData()
  222. {
  223. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent20Setpoint : 0f,
  224. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent20Calculate : 0f,
  225. ShowIndex = false
  226. });
  227. VerificationDataTenPointRecords.Add(new VerificationOneData()
  228. {
  229. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent30Setpoint : 0f,
  230. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent30Calculate : 0f,
  231. ShowIndex = false
  232. });
  233. VerificationDataTenPointRecords.Add(new VerificationOneData()
  234. {
  235. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent40Setpoint : 0f,
  236. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent40Calculate : 0f,
  237. ShowIndex = false
  238. });
  239. VerificationDataTenPointRecords.Add(new VerificationOneData()
  240. {
  241. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent50Setpoint : 0f,
  242. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent50Calculate : 0f,
  243. ShowIndex = false
  244. });
  245. VerificationDataTenPointRecords.Add(new VerificationOneData()
  246. {
  247. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent60Setpoint : 0f,
  248. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent60Calculate : 0f,
  249. ShowIndex = false
  250. });
  251. VerificationDataTenPointRecords.Add(new VerificationOneData()
  252. {
  253. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent70Setpoint : 0f,
  254. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent70Calculate : 0f,
  255. ShowIndex = false
  256. });
  257. VerificationDataTenPointRecords.Add(new VerificationOneData()
  258. {
  259. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent80Setpoint : 0f,
  260. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent80Calculate : 0f,
  261. ShowIndex = false
  262. });
  263. VerificationDataTenPointRecords.Add(new VerificationOneData()
  264. {
  265. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent90Setpoint : 0f,
  266. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent90Calculate : 0f,
  267. ShowIndex = false
  268. });
  269. VerificationDataTenPointRecords.Add(new VerificationOneData()
  270. {
  271. Setpoint = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent100Setpoint : 0f,
  272. Calculate = _tenPointData.Count(x => x.Name == $"MfcGas{i}") > 0 ? _tenPointData.FirstOrDefault(x => x.Name == $"MfcGas{i}").Percent100Calculate : 0f,
  273. ShowIndex = false
  274. });
  275. }
  276. }
  277. }
  278. }
  279. #endregion
  280. }
  281. public class VerificationOneData
  282. {
  283. public string GasIndex { get; set; }
  284. public string GasName { get; set; }
  285. public string FullRange { get; set; }
  286. public float Setpoint { get; set; }
  287. public float Calculate { get; set; }
  288. public string OperateTime { get; set; }
  289. public bool IsCheckGas { get; set; }
  290. public bool ShowIndex { get;set; }
  291. }
  292. }