using DataEntity.Share; using DataRWDAL; using DataRWDalDrive.DB; using DriverLib.Engine; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; 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 XCommon; using XHandler.Class; using XHandler.Class.DataEx; using XHandler.View.Consumables; using XHandler.View.Liquids; using XHandler.View.MethodProperty; using XImagingXhandler.XDAL; using XCoreBLL; using System.Collections; using DataRWDalDrive.Model; //using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace XHandler.View { /// /// LiquidManagement.xaml 的交互逻辑 /// public partial class LiquidManagement : UserControl { ObservableCollection liquidCollection = new ObservableCollection(); List armList; ObservableCollection liquidTypes; ObservableCollection liquidRanges; public LiquidCaretaker liquidCaretaker = new LiquidCaretaker(); public OperateAuditLogBll operateAuditLogBll = new OperateAuditLogBll(); public LogAduitHelper logAduitHelper = new LogAduitHelper(); AspirateParam aspirateParam; DispenseParam dispenseParam; CalibrationParam calibrationParam; TreeViewItem menuFocusItem; LiquidItem copyLiquid; List roleMenuAllList = null; Liquid selectedLiquid { get; set; } public delegate void LiquidsDelegate(string liquid_id, bool IsDelete); public static event LiquidsDelegate loadLiquidsEvent; public bool CanPaset { get; set; } public LiquidManagement(List roleMenuAllList) { InitializeComponent(); GetLiquidTree(); armList = DataModule.getInstance().GetDeviceArm(); liquidTypes = DataModule.getInstance().GetLiquidTypes(); liquidRanges = DataModule.getInstance().GetLiquidRanges(); cbLiquidType.ItemsSource = liquidTypes; cbLiquidRange.ItemsSource = liquidRanges; cbLiquidArm.ItemsSource = armList; this.roleMenuAllList = roleMenuAllList; } public void GetLiquidTree() { List liquidAlls = new List(); liquidCollection.Clear(); List deviceArms = DeviceArmDB.GetDeviceArmFromdb(Shared.SoftwareInformation.software_information_id); ObservableCollection liquidTypeList = LiquidTypeDB.GetLiquidTypeFromdb(2); ObservableCollection liquidRangeList = LiquidRangeDB.GetLiquidRangeFromdb(); foreach (var type in liquidTypeList) { LiquidItem typeItem = new LiquidItem(LiquidNodeType.Type, type.liquid_type_id, type.liquid_type_name, (object)type, null); foreach (var arm in deviceArms) { if (arm.channels == 0) continue; LiquidItem headItem = new LiquidItem(LiquidNodeType.Head, arm.device_arm_id.ToString(), arm.head_type, (object)arm, typeItem); foreach (var range in liquidRangeList) { LiquidItem rangeItem = new LiquidItem(LiquidNodeType.Range, range.liquid_range_id, range.liquid_range_name, (object)range, headItem); ObservableCollection liquids = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(type.liquid_type_id, range.liquid_range_id, arm.device_arm_id.ToString()); liquidAlls.AddRange(liquids); foreach (var liquid in liquids) { LiquidItem liquidItem = new LiquidItem(LiquidNodeType.Liquid, liquid.liquid_id, liquid.liquid_name, (object)liquid, rangeItem); liquidItem.nDefault = liquid.is_default_type; if (item != null) { if (item.ID.Equals(liquidItem.ID)) { liquidItem.IsSelected = true; if(liquidItem.Parent!=null) { liquidItem.Parent.IsExpanded = true; if(liquidItem.Parent.Parent!=null) { liquidItem.Parent.Parent.IsExpanded = true; } } } } rangeItem.Children.Add(liquidItem); } if (headItem.Children.Count == 0) rangeItem.IsExpanded = true; if (rangeItem.Children.Count > 0) { rangeItem.IsExpanded = true; headItem.Children.Add(rangeItem); } } if (typeItem.Children.Count == 0) headItem.IsExpanded = true; typeItem.Children.Add(headItem); } if (liquidCollection.Count == 0) typeItem.IsExpanded = true; liquidCollection.Add(typeItem); } treeviewLiquid.ItemsSource = liquidCollection; //添加耗材集合进入备忘录 LiquidMemento liquidMemento = new LiquidMemento(new ObservableCollection(liquidAlls)); liquidCaretaker.LiquidMementoDic.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), liquidMemento); } #region 获取最新的一条液体集备份 /// /// 获取最新的一条液体集备份 /// /// public LiquidMemento GetMaxKeyLiquidMemento(out string maxKey) { LiquidMemento oldLabwares = new LiquidMemento(null); List dateKeys = new List(); foreach (KeyValuePair d in liquidCaretaker.LiquidMementoDic) { dateKeys.Add(Convert.ToDateTime(d.Key.ToString())); } maxKey = dateKeys.Max().ToString("yyyy-MM-dd HH:mm:ss"); if (liquidCaretaker.LiquidMementoDic.TryGetValue(maxKey, out oldLabwares)) { return oldLabwares; } return null; } #endregion #region 观察者模式更新所有应用的液体参数 // 保存观察者液体参数列表 public List observers = new List(); public void AddObserver(ILiquidObserver ob) { observers.Add(ob); } public void RemoveObserver(ILiquidObserver ob) { observers.Remove(ob); } public void Update() { // 遍历订阅者列表进行通知 foreach (ILiquidObserver ob in observers) { if (ob != null) { ob.ReceiveAndUpdate(this); } } } #endregion private void UserControl_Loaded(object sender, RoutedEventArgs e) { rbAspirateParam.IsChecked = true; if (Shared.SoftwareInformation.software_device_number.Equals(DeviceCategory.DeviceHXELEC)) { rbCelibrate.Visibility = Visibility.Hidden; } else { rbCelibrate.Visibility = Visibility.Visible; } string userid = UserDB.GetUserInfByUserName(Shared.User.username).id; //所有菜单 List roleMenuAllList = UserDB.GetWholeRoleMenuByUserId(userid); //权限控制 var MenuLiquidManage = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuLiquidManage)); if (MenuLiquidManage != null) { var MenuLiquidEdit = MenuLiquidManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuEdit)); if (MenuLiquidEdit != null) { gdBaseLiquid.IsEnabled = true; } else { gdBaseLiquid.IsEnabled = false; } } } #region 吸液参数 private void rbAspirateParam_Checked(object sender, RoutedEventArgs e) { gridParam.Children.Clear(); if (aspirateParam == null) { aspirateParam = new AspirateParam(selectedLiquid); } else { if (selectedLiquid == null) { gridParam.Children.Add(aspirateParam); return; } aspirateParam.SetLiquid(selectedLiquid); } gridParam.Children.Add(aspirateParam); } #endregion #region 加液参数 private void rbDispenseParam_Checked(object sender, RoutedEventArgs e) { gridParam.Children.Clear(); if (dispenseParam == null) dispenseParam = new DispenseParam(selectedLiquid); else { if (selectedLiquid == null) { gridParam.Children.Add(dispenseParam); return; } dispenseParam.SetLiquid(selectedLiquid); } gridParam.Children.Add(dispenseParam); } #endregion #region 校准 private void rbCelibrate_Checked(object sender, RoutedEventArgs e) { gridParam.Children.Clear(); if (calibrationParam == null) calibrationParam = new CalibrationParam(selectedLiquid); else { if (selectedLiquid == null) { gridParam.Children.Add(calibrationParam); return; } calibrationParam.SetLiquid(selectedLiquid); } gridParam.Children.Add(calibrationParam); } #endregion private void treeviewLiquid_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs e) { LiquidItem li = e.NewValue as LiquidItem; if (li == null) { return; } if (li.nodeType == LiquidNodeType.Liquid) { if (selectedLiquid != null) { //li.data = selectedLiquid; } else { } Liquid liquid = li.data as Liquid; selectedLiquid = DeepCopyByReflection.Copy(liquid); this.DataContext = selectedLiquid; LiquidType type = liquidTypes.Where(x => x.liquid_type_id == selectedLiquid.liquid_type_id).FirstOrDefault(); cbLiquidType.SelectedItem = type; LiquidRange range = liquidRanges.Where(x => x.liquid_range_id == selectedLiquid.liquid_range_id).FirstOrDefault(); cbLiquidRange.SelectedItem = range; DeviceArm arm = armList.Where(x => (x.device_arm_id.ToString() == selectedLiquid.device_arm_id)).FirstOrDefault(); cbLiquidArm.SelectedItem = arm; //判断是否是泵,如果是则只有加液参数 if(cbLiquidArm.SelectedValue.Equals(arm.device_arm_id)&& arm.head_type.Equals("泵")) { rbAspirateParam.Visibility= Visibility.Collapsed; rbDispenseParam.IsChecked = true; rbDispenseParam_Checked(sender, e); } else { rbAspirateParam.Visibility = Visibility.Visible; rbAspirateParam.IsChecked = true; aspirateParam.SetLiquid(selectedLiquid); } } string userid = UserDB.GetUserInfByUserName(Shared.User.username).id; //所有菜单 List roleMenuAllList = UserDB.GetWholeRoleMenuByUserId(userid); //权限控制 var MenuLiquidManage = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuLiquidManage)); if (MenuLiquidManage != null) { var MenuLiquidEdit = MenuLiquidManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuEdit)); if (MenuLiquidEdit != null) { aspirateParam.gdContent.IsEnabled = true; } else { aspirateParam.gdContent.IsEnabled = false; } } } private void menuCopy_Click(object sender, RoutedEventArgs e) { if (treeviewLiquid.SelectedItem == null) return; LiquidItem item = treeviewLiquid.SelectedItem as LiquidItem; if (item.nodeType == LiquidNodeType.Liquid) { copyLiquid = treeviewLiquid.SelectedItem as LiquidItem; MenuItem mi = e.Source as MenuItem; ContextMenu menu = mi.Parent as ContextMenu; MenuItem menuItem = menu.Items[1] as MenuItem; menuItem.IsEnabled = true; } } private void menuPaste_Click(object sender, RoutedEventArgs e) { if (treeviewLiquid.SelectedItem == null) return; if (copyLiquid == null) return; LiquidItem item = treeviewLiquid.SelectedItem as LiquidItem; if (item.nodeType == LiquidNodeType.Liquid) { LiquidItem newItem = DeepCopyByReflection.Copy(copyLiquid); Liquid liquid = newItem.data as Liquid; liquid.liquid_name = copyLiquid.Name + " " + Properties.Resources.strCopy; liquid.is_default_type = 0; liquid.liquid_id = Guid.NewGuid().ToString(); liquid.timestamp = DateTime.Now; newItem.Name = copyLiquid.Name + " " + Properties.Resources.strCopy; newItem.nDefault = 0; int iresult = LiquidDB.AddLiquidIntodb(liquid); Hashtable hashtable = logAduitHelper.AddObj(liquid); string operateContent = string.Empty; foreach (DictionaryEntry d in hashtable) { operateContent += d.Key.ToString() + ":" + d.Value.ToString() + "\r\n"; } if (iresult == 1) { LiquidTypeRSRange liquidTypeRSRange = new LiquidTypeRSRange(); liquidTypeRSRange.liquid_range_id = item.Parent.ID; liquidTypeRSRange.liquid_type_id = item.ID; liquidTypeRSRange.device_arm_id = Convert.ToInt32(item.Parent.Parent.ID); liquidTypeRSRange.liquid_id = liquid.liquid_id; liquidTypeRSRange.liquid_rs_status = 1; int i = LiquidTypeRSRangeDB.AddLiquidTypeRSRangeIntodb(liquidTypeRSRange); if (i == 1) { item.Children.Add(newItem); if (loadLiquidsEvent != null) { loadLiquidsEvent("", false); } OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("添加", operateContent, Shared.User.username,"液体管理", "", "", "液体[id:" + liquid.liquid_id + "]", "成功")); } } else { OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("添加", operateContent, Shared.User.username, "液体管理", "", "", "液体[id:" + liquid.liquid_id + "]", "失败")); } } else if (item.nodeType == LiquidNodeType.Range) { LiquidItem newItem = DeepCopyByReflection.Copy(copyLiquid); Liquid liquid = newItem.data as Liquid; liquid.liquid_id = ComUtility.GetGuid(); liquid.liquid_name = copyLiquid.Name + " " + Properties.Resources.strCopy; liquid.is_default_type = 0; liquid.liquid_status = 1; newItem.Name = copyLiquid.Name + " " + Properties.Resources.strCopy; int iresult = LiquidDB.AddLiquidIntodb(liquid); Hashtable hashtable = logAduitHelper.AddObj(liquid); string operateContent = string.Empty; foreach (DictionaryEntry d in hashtable) { operateContent += d.Key.ToString() + ":" + d.Value.ToString() + "\r\n"; } newItem.nDefault = 0; if (iresult == 1) { LiquidTypeRSRange liquidTypeRSRange = new LiquidTypeRSRange(); liquidTypeRSRange.liquid_range_id = item.ID; liquidTypeRSRange.liquid_type_id = item.Parent.Parent.ID; liquidTypeRSRange.device_arm_id = Convert.ToInt32(item.Parent.ID); liquidTypeRSRange.liquid_id = liquid.liquid_id; liquidTypeRSRange.liquid_rs_status = 1; int i = LiquidTypeRSRangeDB.AddLiquidTypeRSRangeIntodb(liquidTypeRSRange); if (i == 1) { item.Children.Add(newItem); OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("添加", operateContent, Shared.User.username, "液体管理", "", "", "液体[id:" + liquid.liquid_id + "]", "成功")); if (loadLiquidsEvent != null) { loadLiquidsEvent("", false); } } } else { OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("添加", operateContent, Shared.User.username, "液体管理", "", "", "液体[id:" + liquid.liquid_id + "]", "失败")); } } } private void menuDelete_Click(object sender, RoutedEventArgs e) { if (selectedLiquid == null) return; PlsToolTipWin plsToolTipWin; if (Shared.SoftwareInformation.currentculture== "zh-CN") { plsToolTipWin = new PlsToolTipWin("确定删除选中的液体参数吗? "); } else { plsToolTipWin = new PlsToolTipWin("Do you want to delete this liquid? "); } plsToolTipWin.Height = ActualHeight; plsToolTipWin.Width = ActualWidth; plsToolTipWin.btnClearData.Visibility = Visibility.Hidden; plsToolTipWin.lauchView = null; SolidColorBrush mybtn1_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(0, 0, 0, 0)); plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn1_Brush; plsToolTipWin.ShowDialog(); if (plsToolTipWin.DialogResult == true) { //liquidCollection.Remove((LiquidItem)treeviewLiquid.SelectedItem); int flag = LiquidDB.DeleteLiquidIntodb(selectedLiquid); LiquidMemento oldLiquids = new LiquidMemento(null); string maxKey = ""; oldLiquids = GetMaxKeyLiquidMemento(out maxKey); string operateContent = string.Empty; if (oldLiquids != null) { Liquid oldLiquid = oldLiquids.LiquidBack.SingleOrDefault(x => x.liquid_id.Equals(selectedLiquid.liquid_id)); Hashtable hashtable = logAduitHelper.LiquidDelObj(selectedLiquid); foreach (DictionaryEntry d in hashtable) { operateContent += d.Key.ToString() + ":" + d.Value.ToString() + "\r\n"; } if (flag > 0) { oldLiquids.LiquidBack.Remove(oldLiquid); } } if (flag > 0) { PlsSetProperty plsSetProperty = new PlsSetProperty($"液体:{((LiquidItem)treeviewLiquid.SelectedItem).Name}删除成功", false); plsSetProperty.closeEvent += PlsSetProperty_closeEvent; Window wnd = Application.Current.MainWindow; Grid parent = Utilities.FindVisualChild(wnd); parent.Children.Add(plsSetProperty); OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("删除", operateContent, Shared.User.username, "液体管理", "", "", "液体[id:" + selectedLiquid.liquid_id + "]", "成功")); GetLiquidTree(); if (loadLiquidsEvent != null) { loadLiquidsEvent(selectedLiquid.liquid_id, true); } } else { PlsSetProperty plsSetProperty = new PlsSetProperty($"液体:{((LiquidItem)treeviewLiquid.SelectedItem).Name}删除失败", false); plsSetProperty.closeEvent += PlsSetProperty_closeEvent; Window wnd = Application.Current.MainWindow; Grid parent = Utilities.FindVisualChild(wnd); parent.Children.Add(plsSetProperty); OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("删除", operateContent, Shared.User.username, "液体管理", "", "", "液体[id:" + selectedLiquid.liquid_id + "]", "失败")); } MainWindow mainWindow = ((MainWindow)Application.Current.MainWindow); mainWindow.liquidManagement.Update(); } } private void menuEdit_Click(object sender, RoutedEventArgs e) { } private void PlsSetProperty_closeEvent(object sender, EventArgs e) { Window wnd = Application.Current.MainWindow; Grid grid = Utilities.FindVisualChild(wnd); UIElement element = sender as UIElement; grid.Children.Remove(element); } /* private void menuNew_Click(object sender, RoutedEventArgs e) { if (menuFocusItem == null) return; Window wnd = Application.Current.MainWindow; Grid parent = Utilities.FindVisualChild(wnd); LiquidItem li = menuFocusItem.DataContext as LiquidItem; if (li.nodeType == LiquidNodeType.Type) { NewLiquidType newLiquidType = new NewLiquidType(); newLiquidType.closeEvent += NewLiquidType_closeEvent; ; newLiquidType.OKEvent += NewLiquidType_OKEvent; parent.Children.Add(newLiquidType); } } private void NewLiquidType_OKEvent(object sender, CustomRoutedEventArgs e) { string name = e.param as string; LiquidType lt = new LiquidType(); lt.liquid_type_id = Guid.NewGuid().ToString(); lt.liquid_type_name = name; lt.liquid_type_name_en = name; lt.is_default_type = 0; lt.liquid_type_status = "1"; int ret = LiquidTypeDB.AddLiquidTypeIntodb(lt); if(ret>0) { LiquidItem typeItem = new LiquidItem(LiquidNodeType.Type, lt.liquid_type_id, name, lt); liquidCollection.Add(typeItem); foreach (var arm in armList) { if (arm.channels == 0) continue; LiquidItem headItem = new LiquidItem(LiquidNodeType.Head, arm.device_arm_id.ToString(), arm.head_type, (object)arm); foreach (var range in liquidRanges) { LiquidItem rangeItem = new LiquidItem(LiquidNodeType.Range, range.liquid_range_id, range.liquid_range_name, (object)range); headItem.Children.Add(rangeItem); } typeItem.Children.Add(headItem); } } } private void NewLiquidType_closeEvent(object sender, EventArgs e) { Window wnd = Application.Current.MainWindow; Grid grid = Utilities.FindVisualChild(wnd); UIElement element = sender as UIElement; grid.Children.Remove(element); } */ private void TreeViewItem_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { TreeViewItem item = GetTemplatedAncestor(e.OriginalSource as FrameworkElement); if (item == null) return; item.IsSelected = true; LiquidItem li = item.DataContext as LiquidItem; ContextMenu menu = FindResource("liquidMenu") as ContextMenu; if (li.nodeType == LiquidNodeType.Liquid) { MenuItem mi = menu.Items[0] as MenuItem; //权限控制 var MenuLiquidManage = roleMenuAllList.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.MenuLiquidManage)); if (MenuLiquidManage != null) { var MenuLiquidCopy = MenuLiquidManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuCopy)); if (MenuLiquidCopy != null) { mi.IsEnabled = true; } else { mi.IsEnabled = false; } } mi = menu.Items[1] as MenuItem; if (copyLiquid == null) mi.IsEnabled = false; else mi.IsEnabled = true; Liquid liquid = li.data as Liquid; if (liquid.is_default_type == 1) { mi = menu.Items[2] as MenuItem; mi.IsEnabled = false; } else { mi = menu.Items[2] as MenuItem; //权限控制 if (MenuLiquidManage != null) { var MenuLiquidDelete = MenuLiquidManage.rolemenuchildren.FirstOrDefault(x => x.rolemenuname.Equals(MenuName.SubMenuDelete)); if (MenuLiquidDelete != null) { mi.IsEnabled = true; } else { mi.IsEnabled = false; } } selectedLiquid = liquid; } } else if (li.nodeType == LiquidNodeType.Range) { MenuItem mi = menu.Items[0] as MenuItem; mi.IsEnabled = false; mi = menu.Items[1] as MenuItem; if (copyLiquid == null) mi.IsEnabled = false; else mi.IsEnabled = true; mi = menu.Items[2] as MenuItem; mi.IsEnabled = false; } else { MenuItem mi = menu.Items[0] as MenuItem; mi.IsEnabled = false; mi = menu.Items[1] as MenuItem; mi.IsEnabled = false; mi = menu.Items[2] as MenuItem; mi.IsEnabled = false; } } private static T GetTemplatedAncestor(FrameworkElement element) where T : FrameworkElement { if (element is T) { return element as T; } FrameworkElement templatedParent = element.TemplatedParent as FrameworkElement; if (templatedParent != null) { return GetTemplatedAncestor(templatedParent); } return null; } private void cbLiquidType_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (selectedLiquid == null) return; selectedLiquid.liquid_type_id = cbLiquidType.SelectedValue.ToString(); } private void cbLiquidRange_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (selectedLiquid == null) return; selectedLiquid.liquid_range_id = cbLiquidRange.SelectedValue.ToString(); } private void cbLiquidArm_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (selectedLiquid == null) return; selectedLiquid.device_arm_id = cbLiquidArm.SelectedValue.ToString(); } LiquidItem item = null; public void SaveLiquid() { if (selectedLiquid == null) return; if (selectedLiquid.is_default_type == 1) return; selectedLiquid.liquid_category = selectedLiquid.liquid_type_id; selectedLiquid.liquid_volume_type = selectedLiquid.liquid_range_id; Liquid liquid = selectedLiquid as Liquid; //liquid.Copy(selectedLiquid); int flag = LiquidDB.UpdateLiquidIntodb(liquid); LiquidMemento oldLiquids = new LiquidMemento(null); string maxKey = ""; oldLiquids = GetMaxKeyLiquidMemento(out maxKey); string operateContent = string.Empty; if (oldLiquids != null) { Liquid oldLiquid = oldLiquids.LiquidBack.SingleOrDefault(x => x.liquid_id.Equals(liquid.liquid_id)); if (oldLiquid != null) { Hashtable hashtable = logAduitHelper.diffObj(oldLiquid, liquid); foreach (DictionaryEntry d in hashtable) { operateContent += d.Key.ToString() + ":" + d.Value.ToString() + "\r\n"; } if (flag > 0) { oldLiquids.LiquidBack.Remove(oldLiquid); Liquid newliquid = new Liquid(); newliquid = DeepCopyByReflection.Copy(liquid); oldLiquids.LiquidBack.Add(newliquid); } } } if (flag > 0) { PlsSetProperty plsSetProperty = new PlsSetProperty($"液体:{liquid.liquid_name} 保存成功", false); plsSetProperty.closeEvent += PlsSetProperty_closeEvent; System.Windows.Window wnd = Application.Current.MainWindow; Grid parent = Utilities.FindVisualChild(wnd); parent.Children.Add(plsSetProperty); OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("修改", operateContent, Shared.User.username, "液体管理", "", "", "液体[id:" + liquid.liquid_id + "]", "成功")); } else { PlsSetProperty plsSetProperty = new PlsSetProperty($"液体:{liquid.liquid_name} 保存失败", false); plsSetProperty.closeEvent += PlsSetProperty_closeEvent; System.Windows.Window wnd = Application.Current.MainWindow; Grid parent = Utilities.FindVisualChild(wnd); parent.Children.Add(plsSetProperty); OperateAuditLogDB.AddOperateAuditLogIntodb(operateAuditLogBll.GenerateOperateAuditLog("修改", operateContent, Shared.User.username, "液体管理", "", "", "液体[id:" + liquid.liquid_id + "]", "失败")); } LiquidTypeRSRange liquidTypeRSRange = new LiquidTypeRSRange(); liquidTypeRSRange.liquid_rs_status = 1; liquidTypeRSRange.liquid_id = selectedLiquid.liquid_id; liquidTypeRSRange.liquid_range_id = selectedLiquid.liquid_range_id; liquidTypeRSRange.liquid_type_id = selectedLiquid.liquid_type_id; liquidTypeRSRange.device_arm_id = Convert.ToInt32(selectedLiquid.device_arm_id); //LiquidTypeRSRangeDB.UpdateLiquidTypeRSRangeByLiquidIdIntodb(liquidTypeRSRange); //GetLiquidTree(); if (treeviewLiquid.SelectedItem != null) { ((LiquidItem)treeviewLiquid.SelectedItem).Name = selectedLiquid.liquid_name; LiquidItem i = (LiquidItem)treeviewLiquid.SelectedItem; item = i; Liquid liquid01 = i.data as Liquid; if (liquid01 != null) { if (liquid01.liquid_id == liquid.liquid_id) { i.data = selectedLiquid;//i.Copy(liquid); } } } if (calibrationParam != null) { calibrationParam.saveCalibrationParam(); } GetLiquidTree(); } } }