CMMPowerSupplierViewModel.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. using Aitex.Core.RT.ConfigCenter;
  2. using Aitex.Core.Util;
  3. using MECF.Framework.Common.CommonData.PowerSupplier;
  4. using MECF.Framework.Common.DataCenter;
  5. using MECF.Framework.Common.Device.LinMot;
  6. using MECF.Framework.Common.Device.PowerSupplier;
  7. using MECF.Framework.Common.Equipment;
  8. using MECF.Framework.Common.Utilities;
  9. using Prism.Mvvm;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Windows.Threading;
  16. namespace CyberX8_MainPages.ViewModels
  17. {
  18. public class CMMPowerSupplierViewModel : BindableBase
  19. {
  20. #region 常量
  21. private const string POWERSUPPLIER_DATA = "PowerSupplierData";
  22. private const string CONNECTED = "Connected";
  23. #endregion
  24. #region 内部变量
  25. /// <summary>
  26. /// 模块名称
  27. /// </summary>
  28. private string _module;
  29. /// <summary>
  30. /// 查询后台数据集合
  31. /// </summary>
  32. private List<string> _rtDataKeys = new List<string>();
  33. /// <summary>
  34. /// 查询后台的数据
  35. /// </summary>
  36. private Dictionary<string, object> _rtDataValues;
  37. /// <summary>
  38. /// 定时器
  39. /// </summary>
  40. private DispatcherTimer _timer;
  41. #region SideA
  42. /// <summary>
  43. /// SideA PowerSupplier
  44. /// </summary>
  45. private string _sideAPowerSupplier;
  46. /// <summary>
  47. /// SideA PowerSupplier数据
  48. /// </summary>
  49. private PowerSupplierData _sideAPowerSupplierData;
  50. /// <summary>
  51. /// SideA PowerSupplier连接状态
  52. /// </summary>
  53. private bool _sideAPowerSupplierConnected;
  54. /// <summary>
  55. /// SideA 步阶1数据
  56. /// </summary>
  57. private PowerSupplierStepPeriodData _sideAStep1Data = new PowerSupplierStepPeriodData();
  58. /// <summary>
  59. /// SideA 步阶2数据
  60. /// </summary>
  61. private PowerSupplierStepPeriodData _sideAStep2Data = new PowerSupplierStepPeriodData();
  62. /// <summary>
  63. /// SideA 步阶3数据
  64. /// </summary>
  65. private PowerSupplierStepPeriodData _sideAStep3Data = new PowerSupplierStepPeriodData();
  66. #endregion
  67. #endregion
  68. #region 属性
  69. /// <summary>
  70. /// 模块名称
  71. /// </summary>
  72. public string Module { get { return _module; } set { SetProperty(ref _module, value); } }
  73. #region SideA
  74. /// <summary>
  75. /// SideA PowerSupplier
  76. /// </summary>
  77. public string SideAPowerSupplier
  78. {
  79. get { return _sideAPowerSupplier; }
  80. set { SetProperty(ref _sideAPowerSupplier, value); }
  81. }
  82. /// <summary>
  83. /// SideA PowerSupplier 数据
  84. /// </summary>
  85. public PowerSupplierData SideAPowerSupplierData
  86. {
  87. get { return _sideAPowerSupplierData; }
  88. set { SetProperty(ref _sideAPowerSupplierData, value);}
  89. }
  90. /// <summary>
  91. /// SideA PowerSupplier连接状态
  92. /// </summary>
  93. public bool SideAPowerSupplierConnected
  94. {
  95. get { return _sideAPowerSupplierConnected; }
  96. set { SetProperty(ref _sideAPowerSupplierConnected, value); }
  97. }
  98. /// <summary>
  99. /// SideA 步阶1数据
  100. /// </summary>
  101. public PowerSupplierStepPeriodData SideAStep1Data
  102. {
  103. get { return _sideAStep1Data; }
  104. set { SetProperty(ref _sideAStep1Data, value); }
  105. }
  106. /// <summary>
  107. /// SideA 步阶2数据
  108. /// </summary>
  109. public PowerSupplierStepPeriodData SideAStep2Data
  110. {
  111. get { return _sideAStep2Data; }
  112. set { SetProperty(ref _sideAStep2Data, value); }
  113. }
  114. /// <summary>
  115. /// SideA 步阶3数据
  116. /// </summary>
  117. public PowerSupplierStepPeriodData SideAStep3Data
  118. {
  119. get { return _sideAStep3Data; }
  120. set { SetProperty(ref _sideAStep3Data, value); }
  121. }
  122. #endregion
  123. #endregion
  124. /// <summary>
  125. /// 构造函数
  126. /// </summary>
  127. public CMMPowerSupplierViewModel()
  128. {
  129. }
  130. /// <summary>
  131. /// 加载数据
  132. /// </summary>
  133. public void LoadData(string systemName)
  134. {
  135. Module = systemName;
  136. List<string> lst = new List<string>();
  137. lst.Add($"{Module}.CMMPowerSupplier");
  138. _rtDataValues = QueryDataClient.Instance.Service.PollData(lst);
  139. if (_rtDataValues != null)
  140. {
  141. SideAPowerSupplier = CommonFunction.GetValue<string>(_rtDataValues, $"{Module}.CMMPowerSupplier");
  142. }
  143. InitiRtDataKeys();
  144. if(_timer==null)
  145. {
  146. _timer = new DispatcherTimer();
  147. _timer.Interval = TimeSpan.FromMilliseconds(500);
  148. _timer.Tick += Timer_Tick;
  149. }
  150. _timer.Start();
  151. }
  152. /// <summary>
  153. /// 定时器执行
  154. /// </summary>
  155. /// <param name="sender"></param>
  156. /// <param name="e"></param>
  157. private void Timer_Tick(object sender, EventArgs e)
  158. {
  159. if (_rtDataKeys.Count != 0)
  160. {
  161. _rtDataValues = QueryDataClient.Instance.Service.PollData(_rtDataKeys);
  162. if (_rtDataValues != null)
  163. {
  164. SideAPowerSupplierData = CommonFunction.GetValue<PowerSupplierData>(_rtDataValues, $"{_sideAPowerSupplier}.{POWERSUPPLIER_DATA}");
  165. SideAPowerSupplierConnected = CommonFunction.GetValue<bool>(_rtDataValues, $"{_sideAPowerSupplier}.{CONNECTED}");
  166. }
  167. }
  168. }
  169. /// <summary>
  170. /// 隐藏
  171. /// </summary>
  172. public void Hide()
  173. {
  174. if (_timer != null)
  175. {
  176. _timer.Stop();
  177. }
  178. }
  179. /// <summary>
  180. /// 初始化查询Key
  181. /// </summary>
  182. private void InitiRtDataKeys()
  183. {
  184. _rtDataKeys.Clear();
  185. if(SideAPowerSupplier!=null)
  186. {
  187. _rtDataKeys.Add($"{_sideAPowerSupplier}.{POWERSUPPLIER_DATA}");
  188. _rtDataKeys.Add($"{_sideAPowerSupplier}.{CONNECTED}");
  189. }
  190. }
  191. }
  192. }