using ivf_tl_Entity.Entity.balance; using ivf_tl_Entity.Enums; using ivf_tl_Manage.Converts; using ivf_tl_Manage.UserControls; using ivf_tl_Manage.ViewModels; using ivf_tl_Manage.Win; using ivf_tl_Service.HttpProvider; using log4net.Util; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Xml.Linq; namespace ivf_tl_Manage.Views { /// /// DevManageView.xaml 的交互逻辑 /// public partial class DevManageView : UserControl { private DevManageViewModel vm; public DevManageView() { InitializeComponent(); Loaded += DevManageView_Loaded; Unloaded += (s, e) => { this._root_Canvas.Children.Clear(); if (vm != null) vm.View = null; vm = null; this.DataContext = null; }; } private void DevManageView_Loaded(object sender, RoutedEventArgs e) { vm = (DevManageViewModel)this.DataContext; if (vm == null) return; vm.View = this; Task.Run(() => { if (!vm.IsInit) AppData.Instance.MainWindowViewModel.Start(); Dispatcher.Invoke(() => { UpDataView(); }); if (vm == null) return; if (!vm.IsInit) { vm.IsInit = true; AppData.Instance.FertilizationTypeEntitieList = AppData.Instance.HttpServiceCall.QueryDictionaryByTypeApi("FERTILIZATION_TYPE"); RegionProvider _regionProvider = new RegionProvider(AppData.Instance.HttpServiceCall, AppData.Instance.LogService); //var addressList1 = _regionProvider.GetRegionData(); if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + "address.json")) { var addressList = _regionProvider.GetRegionData(); string outputJSON = System.Text.Json.JsonSerializer.Serialize(addressList);//序列化处理outputJSON outputJSON = "456"; File.WriteAllText("address.json", outputJSON); } } }); } private void Toast(bool success) { new ToastWindow(vm.Appdata.MainWindow, 1920, 65, success).Show(); } protected void ToastMessageShow(string mess) { new ToastMessageWindow(AppData.Instance.MainWindow, 1920, 65, mess).Show(); } private void ExLog(Exception ex, string name) { AppData.Instance.LogService.ExceptionLog(ex, $"DevManageView.{name}", LogEnum.RunException); } private void ErrorLog(string message, LogEnum logType) { AppData.Instance.LogService.TLLog($"DevManageView.{message}", logType); } public void UpDataView() { try { this._root_Canvas.Children.Clear(); if (vm == null) return; int len = vm.TlInfoList.Count; double left = 0; double top = 0; for (int i = 0; i < len; i++) { var item = vm.TlInfoList[i]; if (item.online == 2) continue; DeviceInfoUserControl deviceInfoUserControl = new DeviceInfoUserControl(); this._root_Canvas.Children.Add(deviceInfoUserControl); if (i == 0 || i == 1) deviceInfoUserControl.Margin = new Thickness(10, 0, 0, 0); else deviceInfoUserControl.Margin = new Thickness(10, -10, 0, 0); deviceInfoUserControl.TlInfoSurce = item; deviceInfoUserControl.EditClickEvent += DeviceInfoUserControl_EditClickEvent; deviceInfoUserControl.TlClickEvent += DeviceInfoUserControl_TlClickEvent; deviceInfoUserControl.HouseClickEvent += DeviceInfoUserControl_HouseClickEvent; deviceInfoUserControl.HouseSettingClickEvent += DeviceInfoUserControl_HouseSettingClickEvent; deviceInfoUserControl.DelTLEvent += DeviceInfoUserControl_DelTLEvent; item.StateChangedEvent -= Item_StateChangedEvent; item.StateChangedEvent += Item_StateChangedEvent; deviceInfoUserControl.HiddenTLEvent += (tlinfo) => { AppData.Instance.MainWindowViewModel.MaskVisibility = true; //new MessageBoxWindow("隐藏设备", $"即将隐藏设备【{tlinfo.tlName}】", AppData.Instance.MainWindow) if (new MessageBoxWindow(KeyToStringConvert.GetLanguageStringByKey("0572"), KeyToStringConvert.GetLanguageStringByKey("0573"), AppData.Instance.MainWindow).ShowDialog() != true) { AppData.Instance.MainWindowViewModel.MaskVisibility = false; return; } AppData.Instance.MainWindowViewModel.MaskVisibility = false; if (tlinfo.online == 1) { //ToastMessageShow("无法隐藏在线设备"); ToastMessageShow(KeyToStringConvert.GetLanguageStringByKey("0576")); return; } if (!vm.HiddenTL(tlinfo.id)) { Toast(false); return; } Toast(true); item.StateChangedEvent -= Item_StateChangedEvent; item.online = 2; deviceInfoUserControl.Visibility = Visibility.Collapsed; }; if (AppData.Instance.EnableKeyValues.ContainsKey(item.tlSn)) { foreach (var enabHouse in AppData.Instance.EnableKeyValues[item.tlSn]) { deviceInfoUserControl.SetisEn(enabHouse); } } } } catch (Exception ex) { ExLog(ex, "UpDataView"); } } private void DeviceInfoUserControl_DelTLEvent(string tlName,long obj) { AppData.Instance.MainWindowViewModel.MaskVisibility = true; //new MessageBoxWindow("删除", $"确定删除\"{tlName}\"设备吗?该操作不可撤回,请谨慎操作。", AppData.Instance.MainWindow).ShowDialog() != true if (new MessageBoxWindow(KeyToStringConvert.GetLanguageStringByKey("0043"), KeyToStringConvert.GetLanguageStringByKey("0537"), AppData.Instance.MainWindow).ShowDialog() != true) { AppData.Instance.MainWindowViewModel.MaskVisibility = false; return; } AppData.Instance.MainWindowViewModel.MaskVisibility = false; if (vm == null) { Toast(false); return; } if (vm.DeleteTL(obj)) { Toast(true); vm.UpData1(); UpDataView(); } } private void Item_StateChangedEvent(string name,int obj) { Task.Run(() => { Dispatcher.InvokeAsync(() => { try { if (vm == null) return; vm.UpData1(); UpDataView(); } catch (Exception ex) { ExLog(ex, "Item_StateChangedEvent"); } }); }); } private void DeviceInfoUserControl_HouseSettingClickEvent(string tlsn, string operType) { if (operType == "setting") { AppData.Instance.MainWindowViewModel.MaskVisibility = true; if(new SafeWindow(AppData.Instance.MainWindow).ShowDialog() != true) { AppData.Instance.MainWindowViewModel.MaskVisibility = false; return; } AppData.Instance.MainWindowViewModel.MaskVisibility = false; AppData.Instance.MainWindowViewModel.CurrentViewModle = new HouseSettingViewModel(tlsn, vm); return; } AppData.Instance.MainWindowViewModel.IsClick = false; AppData.Instance.MainWindowViewModel.CurrentTlSN = tlsn; switch (operType) { case "DishRecord": AppData.Instance.MainWindowViewModel.DishRecordChecked = true; break; case "TLAlarm": AppData.Instance.MainWindowViewModel.AlarmHistoryChecked = true; break; case "HouesChart": AppData.Instance.MainWindowViewModel.HouseChartChecked = true; break; } AppData.Instance.MainWindowViewModel.IsClick = true; } /// /// 跳转胚胎详情界面 /// /// private void DeviceInfoUserControl_HouseClickEvent(TLInfo tLInfo, House obj) { if (obj.embryoRecordVO != null && obj.embryoRecordVO.id > 0) { Stopwatch stopwatch = Stopwatch.StartNew(); ErrorLog($"跳转胚胎详情界面开始:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}", LogEnum.TakeTime); var time1 = stopwatch.Elapsed; DetailViewModel detailViewModel = new DetailViewModel(vm, tLInfo, obj.embryoRecordVO, obj,false); //AppData.Instance.MainWindowViewModel.detailViewModel.Init(vm, tLInfo, obj.embryoRecordVO, obj); var time2 = stopwatch.Elapsed; ErrorLog($"详情界面数据初始化完成:{DateTime.Now},耗时:{(time2 - time1).TotalMilliseconds}毫秒", LogEnum.TakeTime); AppData.Instance.MainWindowViewModel.CurrentViewModle = detailViewModel; time1 = stopwatch.Elapsed; ErrorLog($"跳转胚胎详情界面结束:{DateTime.Now},设置界面耗时:{(time1 - time2).TotalMilliseconds}毫秒,总耗时:{stopwatch.Elapsed.TotalMilliseconds}毫秒", LogEnum.TakeTime); stopwatch.Stop(); return; } AddDishWindow addDishWindow = new AddDishWindow(new Dish() { houseSn = obj.houseSn, tlSn = tLInfo.tlSn }, obj.balanceVO, AppData.Instance.MainWindow); AppData.Instance.MainWindowViewModel.MaskVisibility = true; var a = addDishWindow.ShowDialog(); AppData.Instance.MainWindowViewModel.MaskVisibility = false; if (a == true) { new ToastWindow(AppData.Instance.MainWindow, 1920, 65, true).Show(); AppData.Instance.MainWindowViewModel.RefWindow(); } } /// /// 跳转患者管理界面 /// /// private void DeviceInfoUserControl_TlClickEvent(TLInfo obj) { AppData.Instance.MainWindowViewModel.patientManageViewModel.SetTLInfo(obj); AppData.Instance.MainWindowViewModel.CurrentViewModle = AppData.Instance.MainWindowViewModel.patientManageViewModel; } /// /// 编辑仪器信息 /// /// private void DeviceInfoUserControl_EditClickEvent(long obj) { AppData.Instance.MainWindowViewModel.MaskVisibility = true; if (new EditTLWindow(obj, vm.Appdata.MainWindow).ShowDialog() != true) { AppData.Instance.MainWindowViewModel.MaskVisibility = false; return; } AppData.Instance.MainWindowViewModel.MaskVisibility = false; Toast(true); } private void DeviceInfoUserControl_MouseDown(object sender, MouseButtonEventArgs e) { var tlinfo1 = vm.TlInfoList[0]; tlinfo1.tlName = "1号机"; var tlinfo = vm.TlInfoList[1]; //tlinfo.online = 2; tlinfo.tlName = "2号机"; var house = tlinfo.houses.First(); //house.houseDoorState = 1; if (house.temperatureAlarm == 1) { house.temperatureAlarm = 0; } else { house.temperatureAlarm = 1; } //var dish = house.embryoRecordVO; //dish.wife = "233"; } private void ScrollViewer_ManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e) { e.Handled = true; } private void Button_Click(object sender, RoutedEventArgs e) { var a = vm.TlInfoList[2]; a.online = 1; return; } } }