SETMOperationViewModel.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. using Aitex.Core.Common.DeviceData;
  2. using ExcelLibrary.BinaryFileFormat;
  3. using MECF.Framework.Common.DataCenter;
  4. using MECF.Framework.Common.OperationCenter;
  5. using Prism.Commands;
  6. using Prism.Mvvm;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Diagnostics;
  10. using System.Linq;
  11. using System.Reflection;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows.Threading;
  15. using Venus_MainPages.Unity;
  16. using Venus_Themes.CustomControls;
  17. namespace Venus_MainPages.ViewModels
  18. {
  19. public class SETMOperationViewModel : BindableBase
  20. {
  21. #region 私有变量
  22. private bool m_TMValveN2IsOpen;
  23. private bool m_TMSoftPumpIsOpen;
  24. private bool m_TMSoftVentIsOpen;
  25. private bool m_TMFastPumpIsOpen;
  26. private bool m_TMFastVentIsOpen;
  27. private bool m_VCESoftPumpIsOpen;
  28. private bool m_VCESoftVentIsOpen;
  29. private bool m_VCEFastPumpIsOpen;
  30. private bool m_VCEFastVentIsOpen;
  31. private bool m_PMAIsInstalled;
  32. private bool m_PMBIsInstalled;
  33. private bool m_PMCIsInstalled;
  34. private bool m_VCEIsInstalled;
  35. private bool m_VCEDoorIsOpen;
  36. private bool m_PMADoorIsOpen;
  37. private bool m_PMBDoorIsOpen;
  38. private bool m_PMCDoorIsOpen;
  39. private bool m_VCEOutDoorIsOpen;
  40. private bool m_TMIsVAC;
  41. private bool m_TMIsATM;
  42. private bool m_VCEIsVAC;
  43. private bool m_VCEIsATM;
  44. private int m_GoToSlotNumber;
  45. private Dictionary<string, object> m_RtDataValues = new Dictionary<string, object>();
  46. private List<string> m_RtDataKeys = new List<string>();
  47. #endregion
  48. #region 暴露变量
  49. public bool TMValveN2IsOpen
  50. {
  51. get => m_TMValveN2IsOpen;
  52. set => SetProperty(ref m_TMValveN2IsOpen, value);
  53. }
  54. public bool TMSoftPumpIsOpen { get => m_TMSoftPumpIsOpen; set => SetProperty(ref m_TMSoftPumpIsOpen, value); }
  55. public bool TMSoftVentIsOpen { get => m_TMSoftVentIsOpen; set => SetProperty(ref m_TMSoftVentIsOpen, value); }
  56. public bool TMFastPumpIsOpen { get => m_TMFastPumpIsOpen; set => SetProperty(ref m_TMFastPumpIsOpen, value); }
  57. public bool TMFastVentIsOpen { get => m_TMFastVentIsOpen; set => SetProperty(ref m_TMFastVentIsOpen, value); }
  58. public bool VCESoftPumpIsOpen { get => m_VCESoftPumpIsOpen; set => SetProperty(ref m_VCESoftPumpIsOpen, value); }
  59. public bool VCESoftVentIsOpen { get => m_VCESoftVentIsOpen; set => SetProperty(ref m_VCESoftVentIsOpen, value); }
  60. public bool VCEFastPumpIsOpen { get => m_VCEFastPumpIsOpen; set => SetProperty(ref m_VCEFastPumpIsOpen, value); }
  61. public bool VCEFastVentIsOpen { get => m_VCEFastVentIsOpen; set => SetProperty(ref m_VCEFastVentIsOpen, value); }
  62. public bool TMIsVAC { get => m_TMIsVAC; set => SetProperty(ref m_TMIsVAC, value); }
  63. public bool TMIsATM { get => m_TMIsATM; set => SetProperty(ref m_TMIsATM, value); }
  64. public bool VCEIsVAC { get => m_VCEIsVAC; set => SetProperty(ref m_VCEIsVAC, value); }
  65. public bool VCEIsATM { get => m_VCEIsATM; set => SetProperty(ref m_VCEIsATM, value); }
  66. public bool PMAIsInstalled { get => m_PMAIsInstalled; set => SetProperty(ref m_PMAIsInstalled, value); }
  67. public bool PMBIsInstalled { get => m_PMBIsInstalled; set => SetProperty(ref m_PMBIsInstalled, value); }
  68. public bool PMCIsInstalled { get => m_PMCIsInstalled; set => SetProperty(ref m_PMCIsInstalled, value); }
  69. public bool VCEIsInstalled { get => m_VCEIsInstalled; set => SetProperty(ref m_VCEIsInstalled, value); }
  70. public int GoToSlotNumber { get => m_GoToSlotNumber; set => SetProperty(ref m_GoToSlotNumber, value); }
  71. public Dictionary<string, object> RtDataValues
  72. {
  73. get { return m_RtDataValues; }
  74. set { SetProperty(ref m_RtDataValues, value); }
  75. }
  76. public bool TMIsOFFline => true;
  77. public bool VCEDoorIsOpen { get => m_VCEDoorIsOpen; set => SetProperty(ref m_VCEDoorIsOpen, value); }
  78. public bool PMADoorIsOpen { get => m_PMADoorIsOpen; set => SetProperty(ref m_PMADoorIsOpen, value); }
  79. public bool PMBDoorIsOpen { get => m_PMBDoorIsOpen; set => SetProperty(ref m_PMBDoorIsOpen, value); }
  80. public bool PMCDoorIsOpen { get => m_PMCDoorIsOpen; set => SetProperty(ref m_PMCDoorIsOpen, value); }
  81. public bool VCEOutDoorIsOpen { get => m_VCEOutDoorIsOpen; set => SetProperty(ref m_VCEOutDoorIsOpen, value); }
  82. #endregion
  83. #region 构造函数
  84. public SETMOperationViewModel()
  85. {
  86. addDataKeys();
  87. string[] allModules = QueryDataClient.Instance.Service.GetConfig($"System.InstalledModules").ToString().Split(',');
  88. PMAIsInstalled = allModules.Contains("PMA");
  89. PMBIsInstalled = allModules.Contains("PMB");
  90. PMCIsInstalled = allModules.Contains("PMC");
  91. VCEIsInstalled = allModules.Contains("VCE1");
  92. RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
  93. //2023/10/20 朱永吉 郭治川 取消N2 valve 动画保持流的状态
  94. TMValveN2IsOpen = true;
  95. TMSoftPumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMSoftPumpValve.IsOpen");
  96. TMSoftVentIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMSoftVentValve.IsOpen");
  97. TMFastPumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMFastPumpValve.IsOpen");
  98. TMFastVentIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMFastVentValve.IsOpen");
  99. VCESoftPumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCESoftPumpValve.IsOpen");
  100. VCESoftVentIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCESoftVentValve.IsOpen");
  101. VCEFastPumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCEFastPumpValve.IsOpen");
  102. VCEFastVentIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCEFastVentValve.IsOpen");
  103. TMIsVAC = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMVACSensor.Value");
  104. TMIsATM = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMIsATM");
  105. VCEIsVAC = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCEVACSensor.Value");
  106. VCEIsATM = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCEIsATM");
  107. VCEDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCESlitDoorClosed");
  108. PMADoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "SETM.PMASlitDoorClosed");
  109. PMBDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "SETM.PMBSlitDoorClosed");
  110. PMCDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "SETM.PMCSlitDoorClosed");
  111. VCEOutDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "VCE1.VCEOutDoorClosed");
  112. DispatcherTimer timer = new DispatcherTimer();
  113. timer.Interval = TimeSpan.FromSeconds(0.5);
  114. timer.Tick += timer_Tick;
  115. timer.Start();
  116. }
  117. #endregion
  118. #region 公共方法
  119. private DelegateCommand<object> _ControlValveCommand;
  120. public DelegateCommand<object> ControlValveCommand =>
  121. _ControlValveCommand ?? (_ControlValveCommand = new DelegateCommand<object>(OnControlValve));
  122. private DelegateCommand<object> _ControlSlitDoorCommand;
  123. public DelegateCommand<object> ControlSlitDoorCommand =>
  124. _ControlSlitDoorCommand ?? (_ControlSlitDoorCommand = new DelegateCommand<object>(OnControlSlitDoor));
  125. private DelegateCommand<object> _MapCommand;
  126. public DelegateCommand<object> MapCommand =>
  127. _MapCommand ?? (_MapCommand = new DelegateCommand<object>(OnMap));
  128. private DelegateCommand<object> _GoToLoadCommand;
  129. public DelegateCommand<object> GoToLoadCommand =>
  130. _GoToLoadCommand ?? (_GoToLoadCommand = new DelegateCommand<object>(OnGoToLoad));
  131. private DelegateCommand<object> _GoToSlotCommand;
  132. public DelegateCommand<object> GoToSlotCommand =>
  133. _GoToSlotCommand ?? (_GoToSlotCommand = new DelegateCommand<object>(OnGoToSlot));
  134. private DelegateCommand<object> _OpenDoorCommand;
  135. public DelegateCommand<object> OpenDoorCommand =>
  136. _OpenDoorCommand ?? (_OpenDoorCommand = new DelegateCommand<object>(OnOpenDoor));
  137. private DelegateCommand<object> _CloseDoorCommand;
  138. public DelegateCommand<object> CloseDoorCommand =>
  139. _CloseDoorCommand ?? (_CloseDoorCommand = new DelegateCommand<object>(OnCloseDoor));
  140. private DelegateCommand<object> _HOMECommand;
  141. public DelegateCommand<object> HOMECommand =>
  142. _HOMECommand ?? (_HOMECommand = new DelegateCommand<object>(OnHome));
  143. private DelegateCommand<object> _SETMPumpCommand;
  144. public DelegateCommand<object> SETMPumpCommand =>
  145. _SETMPumpCommand ?? (_SETMPumpCommand = new DelegateCommand<object>(OnSetSEPump));
  146. private DelegateCommand<object> _PumpDown;
  147. public DelegateCommand<object> PumpDown =>
  148. _PumpDown ?? (_PumpDown = new DelegateCommand<object>(OnPumpDown));
  149. private DelegateCommand<object> _Vent;
  150. public DelegateCommand<object> Vent =>
  151. _Vent ?? (_Vent = new DelegateCommand<object>(OnVent));
  152. private DelegateCommand _tmhome;
  153. public DelegateCommand TmHome =>
  154. _tmhome ?? (_tmhome = new DelegateCommand(tmhome));
  155. private DelegateCommand _VCEHome;
  156. public DelegateCommand VCEHome => _VCEHome ?? (_VCEHome = new DelegateCommand(vceHome));
  157. private DelegateCommand _VCEClear;
  158. public DelegateCommand VCEClear => _VCEClear ?? (_VCEClear = new DelegateCommand(vceClear));
  159. #endregion
  160. #region 私有方法
  161. private void addDataKeys()
  162. {
  163. //m_RtDataKeys.Add($"SETM.TMValveN2.IsOpen");
  164. m_RtDataKeys.Add($"SETM.TMSoftPumpValve.IsOpen");
  165. m_RtDataKeys.Add($"SETM.TMSoftVentValve.IsOpen");
  166. m_RtDataKeys.Add($"SETM.TMFastPumpValve.IsOpen");
  167. m_RtDataKeys.Add($"SETM.TMFastVentValve.IsOpen");
  168. m_RtDataKeys.Add($"SETM.VCESoftPumpValve.IsOpen");
  169. m_RtDataKeys.Add($"SETM.VCESoftVentValve.IsOpen");
  170. m_RtDataKeys.Add($"SETM.VCEFastPumpValve.IsOpen");
  171. m_RtDataKeys.Add($"SETM.VCEFastVentValve.IsOpen");
  172. m_RtDataKeys.Add($"SETM.VCESlitDoorClosed");
  173. m_RtDataKeys.Add($"SETM.PMASlitDoorClosed");
  174. m_RtDataKeys.Add($"SETM.PMBSlitDoorClosed");
  175. m_RtDataKeys.Add($"SETM.PMCSlitDoorClosed");
  176. m_RtDataKeys.Add($"SETM.TMVACSensor.Value");
  177. m_RtDataKeys.Add($"SETM.VCEVACSensor.Value");
  178. m_RtDataKeys.Add($"SETM.TMIsATM");
  179. m_RtDataKeys.Add($"SETM.VCEIsATM");
  180. m_RtDataKeys.Add($"SETM.PumpIsRunning");
  181. //m_RtDataKeys.Add($"SETM.VCEPipelinePressure.Value");
  182. m_RtDataKeys.Add($"SETM.TMPipelinePressure.Value");
  183. m_RtDataKeys.Add($"SETM.TMPressure.Value");
  184. m_RtDataKeys.Add($"SETM.VCEPressure.Value");
  185. m_RtDataKeys.Add($"VCE1.VCEOutDoorClosed");
  186. }
  187. private void timer_Tick(object sender, EventArgs e)
  188. {
  189. RtDataValues = QueryDataClient.Instance.Service.PollData(m_RtDataKeys);
  190. //TMValveN2IsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMValveN2.IsOpen");
  191. TMSoftPumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMSoftPumpValve.IsOpen");
  192. TMSoftVentIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMSoftVentValve.IsOpen");
  193. TMFastPumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMFastPumpValve.IsOpen");
  194. TMFastVentIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMFastVentValve.IsOpen");
  195. VCESoftPumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCESoftPumpValve.IsOpen");
  196. VCESoftVentIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCESoftVentValve.IsOpen");
  197. VCEFastPumpIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCEFastPumpValve.IsOpen");
  198. VCEFastVentIsOpen = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCEFastVentValve.IsOpen");
  199. VCEDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCESlitDoorClosed");
  200. PMADoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "SETM.PMASlitDoorClosed");
  201. PMBDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "SETM.PMBSlitDoorClosed");
  202. PMCDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "SETM.PMCSlitDoorClosed");
  203. VCEOutDoorIsOpen = !CommonFunction.GetValue<bool>(RtDataValues, "VCE1.VCEOutDoorClosed");
  204. TMIsVAC = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMVACSensor.Value");
  205. TMIsATM = CommonFunction.GetValue<bool>(RtDataValues, "SETM.TMIsATM");
  206. VCEIsVAC = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCEVACSensor.Value");
  207. VCEIsATM = CommonFunction.GetValue<bool>(RtDataValues, "SETM.VCEIsATM");
  208. }
  209. private void vceHome()
  210. {
  211. InvokeClient.Instance.Service.DoOperation("VCE1.HOME");
  212. }
  213. private void vceClear()
  214. {
  215. InvokeClient.Instance.Service.DoOperation("VCE1.ClearError");
  216. }
  217. private void tmhome()
  218. {
  219. InvokeClient.Instance.Service.DoOperation("SETM.Home");
  220. }
  221. private void OnVent(object obj)
  222. {
  223. switch (obj.ToString())
  224. {
  225. case "VCE1":
  226. InvokeClient.Instance.Service.DoOperation("VCE1.Vent");
  227. break;
  228. case "SETM":
  229. InvokeClient.Instance.Service.DoOperation("SETM.Vent");
  230. break;
  231. }
  232. }
  233. private void OnPumpDown(object obj)
  234. {
  235. switch(obj.ToString())
  236. {
  237. case "VCE1":
  238. InvokeClient.Instance.Service.DoOperation("VCE1.PumpDown");
  239. break;
  240. case "SETM":
  241. InvokeClient.Instance.Service.DoOperation("SETM.PumpDown");
  242. break;
  243. }
  244. }
  245. private void OnSetSEPump(object obj)
  246. {
  247. bool.TryParse(obj.ToString(), out bool Open);
  248. InvokeClient.Instance.Service.DoOperation("SETM.ControlPump", Open);
  249. }
  250. private void OnHome(object obj)
  251. {
  252. InvokeClient.Instance.Service.DoOperation("VCE1.HOME");
  253. }
  254. private void OnOpenDoor(object obj)
  255. {
  256. InvokeClient.Instance.Service.DoOperation("VCE1.DoorOpen");
  257. }
  258. private void OnCloseDoor(object obj)
  259. {
  260. InvokeClient.Instance.Service.DoOperation("VCE1.DoorClose");
  261. }
  262. private void OnMap(object obj)
  263. {
  264. InvokeClient.Instance.Service.DoOperation("VCE1.Map");
  265. }
  266. private void OnGoToLoad(object obj)
  267. {
  268. InvokeClient.Instance.Service.DoOperation("VCE1.GotoLP");
  269. }
  270. private void OnGoToSlot(object obj)
  271. {
  272. InvokeClient.Instance.Service.DoOperation("VCE1.Goto", GoToSlotNumber);
  273. }
  274. private void OnControlValve(object obj)
  275. {
  276. CommonValveControl commonValveControl = (CommonValveControl)obj;
  277. if (commonValveControl.IsCanEdit == true)
  278. {
  279. InvokeClient.Instance.Service.DoOperation($"SETM.{commonValveControl.Tag}Valve.{AITValveOperation.GVTurnValve}", !commonValveControl.Status);
  280. }
  281. }
  282. private void OnControlSlitDoor(object obj)
  283. {
  284. string Module = obj.ToString().Split(',')[0];
  285. bool.TryParse(obj.ToString().Split(',')[1],out bool Open);
  286. InvokeClient.Instance.Service.DoOperation($"SETM.SetSlitDoor", Module, Open);
  287. }
  288. #endregion
  289. }
  290. }