DevManageView.xaml.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. using ivf_tl_Entity.Entity.balance;
  2. using ivf_tl_Entity.Enums;
  3. using ivf_tl_Manage.Converts;
  4. using ivf_tl_Manage.UserControls;
  5. using ivf_tl_Manage.ViewModels;
  6. using ivf_tl_Manage.Win;
  7. using ivf_tl_Service.HttpProvider;
  8. using log4net.Util;
  9. using Newtonsoft.Json.Linq;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Diagnostics;
  13. using System.IO;
  14. using System.Linq;
  15. using System.Text;
  16. using System.Threading;
  17. using System.Threading.Tasks;
  18. using System.Windows;
  19. using System.Windows.Controls;
  20. using System.Windows.Data;
  21. using System.Windows.Documents;
  22. using System.Windows.Input;
  23. using System.Windows.Media;
  24. using System.Windows.Media.Imaging;
  25. using System.Windows.Navigation;
  26. using System.Windows.Shapes;
  27. using System.Xml.Linq;
  28. namespace ivf_tl_Manage.Views
  29. {
  30. /// <summary>
  31. /// DevManageView.xaml 的交互逻辑
  32. /// </summary>
  33. public partial class DevManageView : UserControl
  34. {
  35. private DevManageViewModel vm;
  36. public DevManageView()
  37. {
  38. InitializeComponent();
  39. Loaded += DevManageView_Loaded;
  40. Unloaded += (s, e) =>
  41. {
  42. this._root_Canvas.Children.Clear();
  43. if (vm != null) vm.View = null;
  44. vm = null;
  45. this.DataContext = null;
  46. };
  47. }
  48. private void DevManageView_Loaded(object sender, RoutedEventArgs e)
  49. {
  50. vm = (DevManageViewModel)this.DataContext;
  51. if (vm == null) return;
  52. vm.View = this;
  53. Task.Run(() =>
  54. {
  55. if (!vm.IsInit) AppData.Instance.MainWindowViewModel.Start();
  56. Dispatcher.Invoke(() =>
  57. {
  58. UpDataView();
  59. });
  60. if (vm == null) return;
  61. if (!vm.IsInit)
  62. {
  63. vm.IsInit = true;
  64. AppData.Instance.FertilizationTypeEntitieList = AppData.Instance.HttpServiceCall.QueryDictionaryByTypeApi("FERTILIZATION_TYPE");
  65. RegionProvider _regionProvider = new RegionProvider(AppData.Instance.HttpServiceCall, AppData.Instance.LogService);
  66. //var addressList1 = _regionProvider.GetRegionData();
  67. if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "address.json"))
  68. {
  69. var addressList = _regionProvider.GetRegionData();
  70. string outputJSON = System.Text.Json.JsonSerializer.Serialize(addressList);//序列化处理outputJSON
  71. outputJSON = "456";
  72. File.WriteAllText("address.json", outputJSON);
  73. }
  74. }
  75. });
  76. }
  77. private void Toast(bool success)
  78. {
  79. new ToastWindow(vm.Appdata.MainWindow, 1920, 65, success).Show();
  80. }
  81. protected void ToastMessageShow(string mess)
  82. {
  83. new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65, mess).Show();
  84. }
  85. private void ExLog(Exception ex, string name)
  86. {
  87. AppData.Instance.LogService.ExceptionLog(ex, $"DevManageView.{name}", LogEnum.RunException);
  88. }
  89. private void ErrorLog(string message, LogEnum logType)
  90. {
  91. AppData.Instance.LogService.TLLog($"DevManageView.{message}", logType);
  92. }
  93. public void UpDataView()
  94. {
  95. try
  96. {
  97. this._root_Canvas.Children.Clear();
  98. if (vm == null) return;
  99. int len = vm.TlInfoList.Count;
  100. double left = 0;
  101. double top = 0;
  102. for (int i = 0; i < len; i++)
  103. {
  104. var item = vm.TlInfoList[i];
  105. if (item.online == 2) continue;
  106. DeviceInfoUserControl deviceInfoUserControl = new DeviceInfoUserControl();
  107. this._root_Canvas.Children.Add(deviceInfoUserControl);
  108. if (i == 0 || i == 1) deviceInfoUserControl.Margin = new Thickness(10, 0, 0, 0);
  109. else deviceInfoUserControl.Margin = new Thickness(10, -10, 0, 0);
  110. deviceInfoUserControl.TlInfoSurce = item;
  111. deviceInfoUserControl.EditClickEvent += DeviceInfoUserControl_EditClickEvent;
  112. deviceInfoUserControl.TlClickEvent += DeviceInfoUserControl_TlClickEvent;
  113. deviceInfoUserControl.HouseClickEvent += DeviceInfoUserControl_HouseClickEvent;
  114. deviceInfoUserControl.HouseSettingClickEvent += DeviceInfoUserControl_HouseSettingClickEvent;
  115. deviceInfoUserControl.DelTLEvent += DeviceInfoUserControl_DelTLEvent;
  116. item.StateChangedEvent -= Item_StateChangedEvent;
  117. item.StateChangedEvent += Item_StateChangedEvent;
  118. deviceInfoUserControl.HiddenTLEvent += (tlinfo) =>
  119. {
  120. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  121. //new MessageBoxWindow("隐藏设备", $"即将隐藏设备【{tlinfo.tlName}】", AppData.Instance.MainWindow)
  122. if (new MessageBoxWindow(KeyToStringConvert.GetLanguageStringByKey("0572"), KeyToStringConvert.GetLanguageStringByKey("0573"), AppData.Instance.MainWindow).ShowDialog() != true)
  123. {
  124. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  125. return;
  126. }
  127. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  128. if (tlinfo.online == 1)
  129. {
  130. //ToastMessageShow("无法隐藏在线设备");
  131. ToastMessageShow(KeyToStringConvert.GetLanguageStringByKey("0576"));
  132. return;
  133. }
  134. if (!vm.HiddenTL(tlinfo.id))
  135. {
  136. Toast(false);
  137. return;
  138. }
  139. Toast(true);
  140. item.StateChangedEvent -= Item_StateChangedEvent;
  141. item.online = 2;
  142. deviceInfoUserControl.Visibility = Visibility.Collapsed;
  143. };
  144. if (AppData.Instance.EnableKeyValues.ContainsKey(item.tlSn))
  145. {
  146. foreach (var enabHouse in AppData.Instance.EnableKeyValues[item.tlSn])
  147. {
  148. deviceInfoUserControl.SetisEn(enabHouse);
  149. }
  150. }
  151. }
  152. }
  153. catch (Exception ex)
  154. {
  155. ExLog(ex, "UpDataView");
  156. }
  157. }
  158. private void DeviceInfoUserControl_DelTLEvent(string tlName,long obj)
  159. {
  160. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  161. //new MessageBoxWindow("删除", $"确定删除\"{tlName}\"设备吗?该操作不可撤回,请谨慎操作。", AppData.Instance.MainWindow).ShowDialog() != true
  162. if (new MessageBoxWindow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537"), AppData.Instance.MainWindow).ShowDialog() != true)
  163. {
  164. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  165. return;
  166. }
  167. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  168. if (vm == null)
  169. {
  170. Toast(false);
  171. return;
  172. }
  173. if (vm.DeleteTL(obj))
  174. {
  175. Toast(true);
  176. vm.UpData1();
  177. UpDataView();
  178. }
  179. }
  180. private void Item_StateChangedEvent(string name,int obj)
  181. {
  182. Task.Run(() =>
  183. {
  184. Dispatcher.InvokeAsync(() =>
  185. {
  186. try
  187. {
  188. if (vm == null) return;
  189. vm.UpData1();
  190. UpDataView();
  191. }
  192. catch (Exception ex)
  193. {
  194. ExLog(ex, "Item_StateChangedEvent");
  195. }
  196. });
  197. });
  198. }
  199. private void DeviceInfoUserControl_HouseSettingClickEvent(string tlsn, string operType)
  200. {
  201. if (operType == "setting")
  202. {
  203. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  204. if(new SafeWindow(AppData.Instance.MainWindow).ShowDialog() != true)
  205. {
  206. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  207. return;
  208. }
  209. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  210. AppData.Instance.MainWindowViewModel.CurrentViewModle = new HouseSettingViewModel(tlsn, vm);
  211. return;
  212. }
  213. AppData.Instance.MainWindowViewModel.IsClick = false;
  214. AppData.Instance.MainWindowViewModel.CurrentTlSN = tlsn;
  215. switch (operType)
  216. {
  217. case "DishRecord":
  218. AppData.Instance.MainWindowViewModel.DishRecordChecked = true;
  219. break;
  220. case "TLAlarm":
  221. AppData.Instance.MainWindowViewModel.AlarmHistoryChecked = true;
  222. break;
  223. case "HouesChart":
  224. AppData.Instance.MainWindowViewModel.HouseChartChecked = true;
  225. break;
  226. }
  227. AppData.Instance.MainWindowViewModel.IsClick = true;
  228. }
  229. /// <summary>
  230. /// 跳转胚胎详情界面
  231. /// </summary>
  232. /// <param name="obj"></param>
  233. private void DeviceInfoUserControl_HouseClickEvent(TLInfo tLInfo, House obj)
  234. {
  235. if (obj.embryoRecordVO != null && obj.embryoRecordVO.id > 0)
  236. {
  237. Stopwatch stopwatch = Stopwatch.StartNew();
  238. ErrorLog($"跳转胚胎详情界面开始:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}", LogEnum.TakeTime);
  239. var time1 = stopwatch.Elapsed;
  240. DetailViewModel detailViewModel = new DetailViewModel(vm, tLInfo, obj.embryoRecordVO, obj,false);
  241. //AppData.Instance.MainWindowViewModel.detailViewModel.Init(vm, tLInfo, obj.embryoRecordVO, obj);
  242. var time2 = stopwatch.Elapsed;
  243. ErrorLog($"详情界面数据初始化完成:{DateTime.Now},耗时:{(time2 - time1).TotalMilliseconds}毫秒", LogEnum.TakeTime);
  244. AppData.Instance.MainWindowViewModel.CurrentViewModle = detailViewModel;
  245. time1 = stopwatch.Elapsed;
  246. ErrorLog($"跳转胚胎详情界面结束:{DateTime.Now},设置界面耗时:{(time1 - time2).TotalMilliseconds}毫秒,总耗时:{stopwatch.Elapsed.TotalMilliseconds}毫秒", LogEnum.TakeTime);
  247. stopwatch.Stop();
  248. return;
  249. }
  250. AddDishWindow addDishWindow = new AddDishWindow(new Dish() { houseSn = obj.houseSn, tlSn = tLInfo.tlSn }, obj.balanceVO, AppData.Instance.MainWindow);
  251. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  252. var a = addDishWindow.ShowDialog();
  253. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  254. if (a == true)
  255. {
  256. new ToastWindow(AppData.Instance.MainWindow, 1920, 65, true).Show();
  257. AppData.Instance.MainWindowViewModel.RefWindow();
  258. }
  259. }
  260. /// <summary>
  261. /// 跳转患者管理界面
  262. /// </summary>
  263. /// <param name="obj"></param>
  264. private void DeviceInfoUserControl_TlClickEvent(TLInfo obj)
  265. {
  266. AppData.Instance.MainWindowViewModel.patientManageViewModel.SetTLInfo(obj);
  267. AppData.Instance.MainWindowViewModel.CurrentViewModle = AppData.Instance.MainWindowViewModel.patientManageViewModel;
  268. }
  269. /// <summary>
  270. /// 编辑仪器信息
  271. /// </summary>
  272. /// <param name="obj"></param>
  273. private void DeviceInfoUserControl_EditClickEvent(long obj)
  274. {
  275. AppData.Instance.MainWindowViewModel.MaskVisibility = true;
  276. if (new EditTLWindow(obj, vm.Appdata.MainWindow).ShowDialog() != true)
  277. {
  278. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  279. return;
  280. }
  281. AppData.Instance.MainWindowViewModel.MaskVisibility = false;
  282. Toast(true);
  283. }
  284. private void DeviceInfoUserControl_MouseDown(object sender, MouseButtonEventArgs e)
  285. {
  286. var tlinfo1 = vm.TlInfoList[0];
  287. tlinfo1.tlName = "1号机";
  288. var tlinfo = vm.TlInfoList[1];
  289. //tlinfo.online = 2;
  290. tlinfo.tlName = "2号机";
  291. var house = tlinfo.houses.First();
  292. //house.houseDoorState = 1;
  293. if (house.temperatureAlarm == 1)
  294. {
  295. house.temperatureAlarm = 0;
  296. }
  297. else
  298. {
  299. house.temperatureAlarm = 1;
  300. }
  301. //var dish = house.embryoRecordVO;
  302. //dish.wife = "233";
  303. }
  304. private void ScrollViewer_ManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
  305. {
  306. e.Handled = true;
  307. }
  308. private void Button_Click(object sender, RoutedEventArgs e)
  309. {
  310. var a = vm.TlInfoList[2];
  311. a.online = 1;
  312. return;
  313. }
  314. }
  315. }