DeviceDetailAlarmWindow.xaml.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. using NEIntelligentControl2.Models.Alarm;
  2. using NEIntelligentControl2.Models.Messages;
  3. using NEIntelligentControl2.Service.User;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.ComponentModel;
  7. using System.Configuration;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows;
  12. using System.Windows.Controls;
  13. using System.Windows.Data;
  14. using System.Windows.Documents;
  15. using System.Windows.Input;
  16. using System.Windows.Media;
  17. using System.Windows.Media.Imaging;
  18. using System.Windows.Shapes;
  19. namespace NEIntelligentControl2.Windows.Alarm
  20. {
  21. /// <summary>
  22. /// 设备报警详情
  23. /// </summary>
  24. public partial class DeviceDetailAlarmWindow : Window
  25. {
  26. /// <summary>
  27. /// 故障信息
  28. /// </summary>
  29. public FaultInfo FaultInfo { get; private set; }
  30. /// <summary>
  31. /// 是否需要确认
  32. /// </summary>
  33. public bool IsConfirm { get; set; }
  34. private WEBHelper _WEBHelper;
  35. private UserManager _UserManager;
  36. private string _Url;
  37. private List<DeviceAlarmInfo> _DeviceAlarmInfoList;
  38. public DeviceDetailAlarmWindow(WEBHelper web, UserManager um)
  39. {
  40. InitializeComponent();
  41. _WEBHelper = web;
  42. _UserManager = um;
  43. InitUrl();
  44. }
  45. private void InitUrl()
  46. {
  47. try
  48. {
  49. #if(DEBUG)
  50. _Url = ConfigurationManager.AppSettings["ServicePathDebug"];
  51. #else
  52. _Url = ConfigurationManager.AppSettings["ServicePath"];
  53. #endif
  54. }
  55. catch (Exception ex)
  56. {
  57. Console.WriteLine(ex.Message);
  58. }
  59. }
  60. private void Border_MouseDown(object sender, MouseButtonEventArgs e)
  61. {
  62. try
  63. {
  64. this.DragMove();
  65. }
  66. catch { }
  67. }
  68. private void ContentControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  69. {
  70. switch (((FrameworkElement)sender).Tag)
  71. {
  72. case "close":
  73. this.Close();
  74. break;
  75. case "maximized":
  76. Maximized();
  77. break;
  78. default: return;
  79. }
  80. }
  81. private void Maximized()
  82. {
  83. if (this.WindowState == WindowState.Maximized)
  84. {
  85. this.WindowState = WindowState.Normal;
  86. }
  87. else
  88. {
  89. this.WindowState = WindowState.Maximized;
  90. }
  91. }
  92. /// <summary>
  93. /// 显示窗口
  94. /// </summary>
  95. internal static bool Show(FaultInfo faultInfo, bool isConfirm = false)
  96. {
  97. var ddaw = App.ServiceProvider.GetService(typeof(DeviceDetailAlarmWindow)) as DeviceDetailAlarmWindow; ;
  98. ddaw.FaultInfo = faultInfo;
  99. ddaw.IsConfirm = isConfirm;
  100. ddaw.Owner = Application.Current.MainWindow;
  101. ddaw._TBTitle.Text = $"设备报警详情 -- [{faultInfo.ObjectName}]";
  102. var b = ddaw.ShowDialog();
  103. return b == true;
  104. }
  105. private void window_Loaded(object sender, RoutedEventArgs e)
  106. {
  107. Task.Run(InitData);
  108. }
  109. private void InitData()
  110. {
  111. if (FaultInfo == null) return;
  112. string obj;
  113. if (FaultInfo.Category1 == "SYZ" || FaultInfo.Category1 == "STATION" || FaultInfo.Category1 == "GF")
  114. {
  115. obj = $"{FaultInfo.StationId}&cateGory1=SYZ";
  116. }
  117. else
  118. {
  119. obj = $"{FaultInfo.WindturbineId}&cateGory1=windturbine";
  120. }
  121. var url = $"{_Url}/alarm/real-time-alarm?objectId={obj}";
  122. var vs = _WEBHelper.HttpGetJSON<List<DeviceAlarmInfo>>(url);
  123. _DeviceAlarmInfoList = vs;
  124. Dispatcher.Invoke(() => _DGMain.ItemsSource = vs);
  125. }
  126. private void _DGMain_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
  127. {
  128. if (e.AddedCells.Count <= 0) return;
  129. var vv = e.AddedCells[0].Item as DeviceAlarmInfo;
  130. if (vv == null) return;
  131. foreach (var v in _DeviceAlarmInfoList)
  132. {
  133. v.IsSelected = v == vv;
  134. }
  135. }
  136. private void Button_Click(object sender, RoutedEventArgs e)
  137. {
  138. switch (((Control)sender).Tag)
  139. {
  140. case "generate":// 生成缺陷单
  141. Generate();
  142. break;
  143. case "ok":// 确认
  144. Confrom();
  145. break;
  146. default: return;
  147. }
  148. }
  149. /// <summary>
  150. /// 确认
  151. /// </summary>
  152. private void Confrom()
  153. {
  154. SendConfirmInfo();
  155. }
  156. private DeviceAlarmInfo GetSelectedItem()
  157. {
  158. foreach (var v in _DeviceAlarmInfoList)
  159. {
  160. if (v.IsSelected) return v;
  161. }
  162. return null;
  163. }
  164. /// <summary>
  165. /// 生成缺陷单
  166. /// </summary>
  167. private void Generate()
  168. {
  169. SendConfirmInfo();
  170. }
  171. private void SendConfirmInfo()
  172. {
  173. if (!_UserManager.IsLogined)
  174. {
  175. bool b = _UserManager.TempLogin();
  176. if (!b) return;
  177. }
  178. this.Close();
  179. try
  180. {
  181. string s = _WEBHelper.HttpGetString($"{_Url}/alarm/confirm?snapID={FaultInfo.SnapID}&faultID={FaultInfo.Id}&userName={_UserManager.User.Name}");
  182. }catch(Exception ex)
  183. {
  184. Console.WriteLine(ex.Message);
  185. }
  186. }
  187. }
  188. class DeviceAlarmInfo : INotifyPropertyChanged
  189. {
  190. public long Id { get; set; }
  191. public string ObjectId { get; set; }
  192. public string ObjectName { get; set; }
  193. public long SnapId { get; set; }
  194. public DateTime LastUpdateTime { get; set; }
  195. public string AlertText { get; set; }
  196. public string RankName { get; set; }
  197. public string CategoryName { get; set; }
  198. public string FaultCause { get; set; }
  199. public string HaltType { get; set; }
  200. public string FaultCategory { get; set; }
  201. public string LastUpdateTimeString { get => LastUpdateTime.ToString("yyyy-MM-dd HH:mm:ss"); }
  202. private bool isSelected;
  203. public bool IsSelected { get => isSelected; set { isSelected = value; OnPropertyChanged(); } }
  204. public event PropertyChangedEventHandler PropertyChanged;
  205. protected void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string name = null)
  206. {
  207. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
  208. }
  209. }
  210. }