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;
}
}
}