using DataEntity.Share; using DataRWDAL; using DataRWDalDrive.DB; using HxEnum; using Microsoft.Win32; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using XCommon.Log; using XCore; using XHandler.Class; using XHandler.Class.DataEx; using XHandler.View.Com; using XHandler.View.MethodProperty; using XImagingXhandler.XDAL; namespace XHandler.View.BacteriaProperty { /// /// 文件涂布页面逻辑 /// public partial class FileCoatingProperty : UserControl, IMethodProperty { #region BLL private TransferFileBll transferFileBll = new TransferFileBll(); private CoatingFileBll coatingFileBll = new CoatingFileBll(); #endregion public MethodCoatingFile methodCoatingFile { get; set; } private int curLiquidTypeSelectedIndex = -1; private int curMixAspirateSelectIndex = -1; private int curMixDispenseSelectIndex = -1; #region 全局变量 private string isrun = ""; private string status = ""; private string name = ""; private string label = ""; private string filePath = ""; private string armText = ""; private string armValue = ""; private string labwaretipText = ""; private string labwaretipValue = ""; private int[] channels = new int[0] { }; private int beginLine = 0; private DataTable transferDataTable = new DataTable(); private string sourceLabware = ""; private string sourceWell = ""; private string destinationLabware = ""; private string destinationWell = ""; private string bacteriaText = ""; private string bacteriaValue = ""; private int coatingmodeValue = 0; private int choiceCategory = 0; // 挑菌方式 1:单选; 2:穿刺; 3:吸液; private int coatingCount = 0; private string liquididText = ""; private string liquididValue = ""; private string liquidrangeidText = ""; private string liquidrangeidValue = ""; private string liquidpidText = ""; private string liquidpidValue = ""; private bool bMix = false; private double mixvolume = 0.0d; private int mixcount = 0; private string mixAspiratePositionText = ""; private int mixAspiratePositionValue = 0; private double mixAspirateDistance = 0.0d; private double mixAspirateSpeed = 0.0d; private string mixDispensePositionText = ""; private int mixDispensePositionValue = 0; private double mixDispenseDistance = 0.0d; private double mixDispenseSpeed = 0.0d; private double coatingOffset = 0.0d; private double shakeDistanceValue = 0.0d; private double shakeCountValue = 0.0d; private int mark = 0; private Labware selectedLabware = null; private bool bEnableUltrasonic = true; private List ultrasonicObjects = new List(); private ObservableCollection dishPointlist = new ObservableCollection(); // 圆形皿绑定的点集合 #endregion #region 构造函数 public FileCoatingProperty(MethodEx method) { InitializeComponent(); mark = 0; curLiquidTypeSelectedIndex = 0; curMixAspirateSelectIndex = 2; curMixDispenseSelectIndex = 2; methodCoatingFile = new MethodCoatingFile(); methodCoatingFile.name = method.method_name; methodCoatingFile.label = method.method_name; methodCoatingFile.status = (method.isEnabled == true ? "enable" : "disable"); this.DataContext = methodCoatingFile; ObservableCollection bacterias = DataModule.getInstance().GetBacterias(); cbBacteria.ItemsSource = bacterias; List armList = DataModule.getInstance().GetDeviceArm(); cbArm.ItemsSource = armList; if (armList.Count == 2) //只有一个臂的情况下默认选中该臂 cbArm.SelectedIndex = 1; else cbArm.SelectedIndex = 0; ObservableCollection liquidTypeList = DataModule.getInstance().GetLiquidTypes(); cbLiquidType.ItemsSource = liquidTypeList; // 获取液体范围类型 ObservableCollection liquidRangeList = DataModule.getInstance().GetLiquidRanges(); cbLiquidRange.ItemsSource = liquidRangeList; ObservableCollection liquidList = new ObservableCollection(); Liquid liquid = new Liquid(); liquid.liquid_name = Properties.Resources.strPleaseSelect; liquidList.Add(liquid); cbLiquid.ItemsSource = liquidList; // 获取加液、取液位置类型 ObservableCollection mixPositionList = DataModule.getInstance().GetDispensePositionType(); cbMixAspiratePosition.ItemsSource = mixPositionList; cbMixDispensePosition.ItemsSource = mixPositionList; // 获取涂布方式 ObservableCollection coatingModeList = DataModule.getInstance().GetCoatingMode(); cbCoatingMode.ItemsSource = coatingModeList; cbCoatingMode.SelectedValue = methodCoatingFile.coatingModeValue; // 获取涂布通道数量 List dropdownNames = coatingFileBll.GenerateCoatingCountOfChannel(Shared.SoftwareInformation.software_device_number); cbCoatingCount.ItemsSource = dropdownNames; cbCoatingCount.SelectedIndex = 0; // 耗材名称 ObservableCollection labwares = DataRWDAL.LabwareDB.GetSpecialLabware(); comboboxLabwareType.ItemsSource = labwares; // 获取挑菌方式 ObservableCollection choiceModeList = DataModule.getInstance().GetChoiceMode(Shared.SoftwareInformation.software_device_number); cbPickMode.ItemsSource = choiceModeList; if (methodCoatingFile.choiceCategory == 0) { cbPickMode.SelectedIndex = 0; } tbxCommandLabel.Text = method.method_name; methodCoatingFile.strIndex = method.strIndex; if (method.tag != null) { methodCoatingFile = (MethodCoatingFile)method.tag; #region 全局变量赋值 isrun = methodCoatingFile.isrun; status = methodCoatingFile.status; name = methodCoatingFile.name; label = methodCoatingFile.label; armText = methodCoatingFile.armText; armValue = methodCoatingFile.armValue; labwaretipText = methodCoatingFile.labwaretipText; labwaretipValue = methodCoatingFile.labwaretipValue; channels = methodCoatingFile.channels; filePath = methodCoatingFile.filePath; beginLine = methodCoatingFile.beginLine; transferDataTable = methodCoatingFile.transferDataTable; sourceLabware = methodCoatingFile.sourceLabware; sourceWell = methodCoatingFile.sourceWell; destinationLabware = methodCoatingFile.destinationLabware; destinationWell = methodCoatingFile.destinationWell; bacteriaText = methodCoatingFile.bacteriaText; bacteriaValue = methodCoatingFile.bacteriaValue; coatingmodeValue = methodCoatingFile.coatingModeValue; choiceCategory = methodCoatingFile.choiceCategory; coatingCount = methodCoatingFile.coatingCount; liquididText = methodCoatingFile.liquididText; liquididValue = methodCoatingFile.liquididValue; liquidrangeidText = methodCoatingFile.liquidrangeidText; liquidrangeidValue = methodCoatingFile.liquidrangeidValue; liquidpidText = methodCoatingFile.liquidpidText; liquidpidValue = methodCoatingFile.liquidpidValue; bMix = methodCoatingFile.bMix; mixvolume = methodCoatingFile.mixvolume; mixcount = methodCoatingFile.mixcount; mixAspiratePositionText = methodCoatingFile.mixAspiratePositionText; mixAspiratePositionValue = methodCoatingFile.mixAspiratePositionValue; mixAspirateDistance = methodCoatingFile.mixAspirateDistance; mixAspirateSpeed = methodCoatingFile.mixAspirateSpeed; mixDispensePositionText = methodCoatingFile.mixDispensePositionText; mixDispensePositionValue = methodCoatingFile.mixDispensePositionValue; mixDispenseDistance = methodCoatingFile.mixDispenseDistance; mixDispenseSpeed = methodCoatingFile.mixDispenseSpeed; shakeDistanceValue = methodCoatingFile.shakeDistanceValue; shakeCountValue = methodCoatingFile.shakeCountValue; coatingOffset = methodCoatingFile.coatingOffset; if (methodCoatingFile.isEnableultrasonic) // 开启超声探测 { bEnableUltrasonic = methodCoatingFile.isEnableultrasonic; ultrasonicObjects = methodCoatingFile.ultrasonicObjectList; } else { bEnableUltrasonic = methodCoatingFile.isEnableultrasonic; } #endregion } } #endregion public void SetTableName(string tableName, Labware lb) { if (lb == null) return; if (string.IsNullOrEmpty(lb.labware_id)) return; if (string.IsNullOrEmpty(methodCoatingFile.armValue)) { MessageBox.Show(Properties.Resources.msgPlsSelectArm, "Tips"); return; } selectedLabware = lb; List latticeList = DataRWDAL.LatticeDB.GetLatticeDataFromdb(Shared.SoftwareInformation.software_device_number, Convert.ToInt32(methodCoatingFile.armValue)); Lattice lattice = latticeList.Find(s => s.lattice_num == tableName); if (lattice == null) { LoggerHelper.InfoLog("Error: Can't find lattice with lattice_num=" + tableName); return; } if (gridLiquidParam.Visibility == Visibility.Visible) { if (gridChoiceAgoAspirateProperty.Children.Count > 0) { ChoiceAgoAspirateChildProperty choiceAgoAspirateChildProperty = (ChoiceAgoAspirateChildProperty)gridChoiceAgoAspirateProperty.Children[0]; choiceAgoAspirateChildProperty.SetTableName(tableName, lb); } } else { methodCoatingFile.labwaretipText = lb.labware_name; methodCoatingFile.labwaretipValue = lb.labware_id; tbSelectTable.Tag = lb.labware_id; tbSelectTable.Text = lb.labware_name; } } #region 选择文件 private void btnSelectFile_Click(object sender, RoutedEventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Title = "请选择Excel文件"; dlg.FileName = string.Empty; dlg.FilterIndex = 1; dlg.RestoreDirectory = true; dlg.Filter = "csv files(*.csv)|*.csv|excel files(*.xls)|*.xls|All files(*.*)|*.*"; dlg.Multiselect = false; if (dlg.ShowDialog() == true) { string fullPath = dlg.FileName; methodCoatingFile.filePath = fullPath; tbExcelFile.Text = fullPath; SelectFile(fullPath); } ((MainWindow)Application.Current.MainWindow).testDesign.IsIgnore = true; //防止影响到主界面流程中已拖放的单命令顺序 } private void tbExcelFile_PreviewKeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { if (!string.IsNullOrEmpty(tbExcelFile.Text.Trim())) { if (System.IO.Path.HasExtension(tbExcelFile.Text.Trim())) { if (System.IO.File.Exists(tbExcelFile.Text.Trim())) { SelectFile(tbExcelFile.Text.Trim()); } } } } } private void SelectFile(string file) { string ext = System.IO.Path.GetExtension(file); DataTable transferData = null; if (string.Compare(ext, ".csv", true) == 0) transferData = ExcelAndCsvHelper.GetDataTableFromCsvFile(file, false); else transferData = ExcelAndCsvHelper.GetDataTableFromExcelFile(file, true); if (transferData != null) { methodCoatingFile.transferDataTable = transferData; dgTransferFileData.ItemsSource = transferData.DefaultView; List transferFileHeaders = transferFileBll.GetTransferFileHeaders(transferData); cbSourceDish.ItemsSource = transferFileHeaders; cbMachineCoordinate.ItemsSource = transferFileHeaders; cbTargetBoard.ItemsSource = transferFileHeaders; cbTargetWell.ItemsSource = transferFileHeaders; cbSourceDish.SelectedIndex = 0; cbMachineCoordinate.SelectedIndex = 0; cbTargetBoard.SelectedIndex = 0; cbTargetWell.SelectedIndex = 0; } } #endregion #region 菌落变更事件 private void cbBacteria_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbBacteria.SelectedIndex < 0) return; if (methodCoatingFile == null) return; Bacteria bacteria = cbBacteria.SelectedItem as Bacteria; methodCoatingFile.bacteriaValue = bacteria.bacteria_id; methodCoatingFile.bacteriaText = bacteria.bacteria_name; } #endregion #region 挑菌方式变更事件 private void cbPickMode_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbPickMode.SelectedIndex < 0) return; if (methodCoatingFile == null) return; DropdownName dpdItem = (DropdownName)cbPickMode.SelectedItem; methodCoatingFile.choiceCategory = Convert.ToInt32(dpdItem.dropdown_id); } #endregion #region 涂布方式变更事件 private void cbCoatingMode_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbCoatingMode.SelectedIndex < 0 || methodCoatingFile == null) { return; } DropdownName dpdItem = (DropdownName)cbCoatingMode.SelectedItem; methodCoatingFile.coatingModeValue = Convert.ToInt32(dpdItem.dropdown_id); bMix = false; if (dpdItem.dropdown_name.Equals(Properties.Resources.strHuiziMode)) { gridShake.Visibility = Visibility.Collapsed; gdMixParam.Visibility = Visibility.Hidden; } else if (dpdItem.dropdown_name.Equals(Properties.Resources.strZMode)) { gridShake.Visibility = Visibility.Collapsed; gdMixParam.Visibility = Visibility.Hidden; } else if (dpdItem.dropdown_name.Equals(Properties.Resources.strUpDownMode)) { gridShake.Visibility = Visibility.Visible; gdMixParam.Visibility = Visibility.Hidden; methodCoatingFile.shakeCountValue = Convert.ToInt32(tbxShakeCount.Text); methodCoatingFile.shakeDistanceValue = Convert.ToInt32(tbxShakeDistance.Text); } // 吸放液 else if (dpdItem.dropdown_name.Equals(Properties.Resources.strAspirateMode)) { gridShake.Visibility = Visibility.Collapsed; gdMixParam.Visibility = Visibility.Visible; bMix = true; } // 放液 else if (dpdItem.dropdown_name.Equals(Properties.Resources.strDispense)) { gridShake.Visibility = Visibility.Collapsed; gdMixParam.Visibility = Visibility.Hidden; } methodCoatingFile.bMix = bMix; } #endregion #region 臂变更事件 private void cbArm_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbArm.SelectedIndex < 0) return; string armName = ((DeviceArm)cbArm.SelectedItem).device_arm_name.ToString(); methodCoatingFile.channels = Shared.ChannelsId; DeviceArm arm = cbArm.SelectedItem as DeviceArm; methodCoatingFile.armText = arm.device_arm_name; methodCoatingFile.armValue = methodCoatingFile.choiceAgoAspirateData.armValue = arm.device_arm_id.ToString(); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 命令名称变更事件 private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { methodCoatingFile.name = tbxCommandName.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 从第N行变更事件 private void tbxbeginLine_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { methodCoatingFile.beginLine = Convert.ToInt32(tbxbeginLine.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 来源皿变更事件 private void cbSourceDish_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (mark != 0) { TransferFileHeader transferFileHeader = cbSourceDish.SelectedItem as TransferFileHeader; if (transferFileHeader != null) methodCoatingFile.sourceLabware = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 机械坐标变更事件 private void cbMachineCoordinate_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (mark != 0) { TransferFileHeader transferFileHeader = cbMachineCoordinate.SelectedItem as TransferFileHeader; if (transferFileHeader != null) methodCoatingFile.sourceWell = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 目标板变更事件 private void cbTargetBoard_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (mark != 0) { TransferFileHeader transferFileHeader = cbTargetBoard.SelectedItem as TransferFileHeader; if (transferFileHeader != null) methodCoatingFile.destinationLabware = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 目标孔变更事件 private void cbTargetWell_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (mark != 0) { TransferFileHeader transferFileHeader = cbTargetWell.SelectedItem as TransferFileHeader; if (transferFileHeader != null) methodCoatingFile.destinationWell = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 初期化 private void UserControl_Loaded(object sender, RoutedEventArgs e) { mark += 1; try { if (mark > 1) { return; } tbxRowNum.Text = "0"; tbxColumnNum.Text = "0"; tbxCloseTop.Text = "0"; tbxCloseLeft.Text = "0"; tbxDistanceOfX.Text = "0"; tbxDistanceOfY.Text = "0"; int[] ichs = channels; if (!string.IsNullOrEmpty(armText)) { tbxCommandName.Text = name; cbArm.SelectedValue = armValue; DeviceArm arm = cbArm.SelectedItem as DeviceArm; tbSelectTable.Tag = labwaretipValue; tbSelectTable.Text = labwaretipText; dgTransferFileData.ItemsSource = transferDataTable.DefaultView; tbExcelFile.Text = filePath; //更新所有下拉列表 List transferFileHeaders = transferFileBll.GetTransferFileHeaders(transferDataTable); cbSourceDish.ItemsSource = transferFileHeaders; cbMachineCoordinate.ItemsSource = transferFileHeaders; cbTargetBoard.ItemsSource = transferFileHeaders; cbTargetWell.ItemsSource = transferFileHeaders; cbSourceDish.Text = sourceLabware; cbMachineCoordinate.Text = sourceWell; cbTargetBoard.Text = destinationLabware; cbTargetWell.Text = destinationWell; cbBacteria.Text = bacteriaText; tbxCoatingOffset.Text = coatingOffset.ToString(); cbCoatingMode.SelectedValue = Convert.ToInt32(coatingmodeValue); if (coatingmodeValue.Equals("3")) // 上下移动 { tbxShakeCount.Text = shakeCountValue.ToString(); tbxShakeDistance.Text = shakeDistanceValue.ToString(); } cbPickMode.SelectedValue = choiceCategory.ToString(); cbCoatingCount.SelectedValue = coatingCount; cbLiquidType.SelectedValue = liquididValue; cbLiquidRange.SelectedValue = liquidrangeidValue; cbLiquid.SelectedValue = liquidpidValue; ObservableCollection liquidList = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(liquididValue, liquidrangeidValue, cbArm.SelectedValue.ToString()); Liquid liquid = new Liquid(); liquid.liquid_name = Properties.Resources.strPleaseSelect; liquidList.Insert(0, liquid); cbLiquid.ItemsSource = liquidList; cbLiquid.SelectedIndex = 0; cbLiquid.SelectedValue = liquidpidValue; if (bMix) { if (methodCoatingFile != null) { tbxMixVolume.Text = mixvolume.ToString(); tbxMixCount.Text = mixcount.ToString(); } else { tbxMixVolume.Text = methodCoatingFile.mixvolume.ToString(); tbxMixCount.Text = methodCoatingFile.mixcount.ToString(); } cbMixAspiratePosition.SelectedValue = mixAspiratePositionValue; tbxMixAspirateDistance.Text = mixAspirateDistance.ToString(); tbxMixAspirateSpeed.Text = mixAspirateSpeed.ToString(); cbMixDispensePosition.SelectedValue = mixDispensePositionValue; tbxMixDispenseDistance.Text = mixDispenseDistance.ToString(); tbxMixDispenseSpeed.Text = mixDispenseSpeed.ToString(); } } else { cbArm.SelectedIndex = 0; cbBacteria.SelectedIndex = 0; cbCoatingMode.SelectedIndex = 0; cbCoatingCount.SelectedIndex = 0; cbPickMode.SelectedIndex = 0; tbxShakeCount.Text = "5"; tbxShakeDistance.Text = "3"; cbLiquidType.SelectedValue = curLiquidTypeSelectedIndex; cbMixAspiratePosition.SelectedIndex = curMixAspirateSelectIndex; cbMixDispensePosition.SelectedIndex = curMixDispenseSelectIndex; ObservableCollection liquidList = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(liquididValue, liquidrangeidValue, cbArm.SelectedValue.ToString()); Liquid liquid = new Liquid(); liquid.liquid_name = Properties.Resources.strPleaseSelect; liquidList.Insert(0, liquid); cbLiquid.ItemsSource = liquidList; cbLiquid.SelectedIndex = 0; } // 开启超声探测 cbxEnableUltrasonic.IsChecked = bEnableUltrasonic; // 耗材名称默认选择 comboboxLabwareType.SelectedIndex = 0; #region 挑菌前环境设置 ChoiceAgoAspirateChildProperty property = new ChoiceAgoAspirateChildProperty(methodCoatingFile.choiceAgoAspirateData); gridChoiceAgoAspirateProperty.Children.Add(property); #endregion // 多块目标板涂布前要挑菌 cbPickEveryTime.IsChecked = methodCoatingFile.pickEveryTime; // 多块目标板挑菌前要换枪头 cbPickAgoChangeTipEveryTime.IsChecked = methodCoatingFile.pickAgoChangeTipEveryTime; cbPickEveryTime_Click(null, null); #region 涂布自动开关盖 ckbAutoOpenCloseCoverCoating.IsChecked = methodCoatingFile.autoOpenCloseCoverCoating; #endregion } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 构建圆形皿默认三个坐标 public ObservableCollection GenerateDefaultPointList() { ObservableCollection points = new ObservableCollection(); DropdownName point1 = new DropdownName(); point1.dropdown_id = "-10"; point1.dropdown_name = "0"; point1.index_id = 1; points.Add(point1); point1 = new DropdownName(); point1.dropdown_id = "0"; point1.dropdown_name = "0"; point1.index_id = 2; points.Add(point1); point1 = new DropdownName(); point1.dropdown_id = "10"; point1.dropdown_name = "0"; point1.index_id = 3; points.Add(point1); return points; } #endregion #region 构建圆形皿坐标数据 public ObservableCollection GenerateDishPointData(ObservableCollection pointlist) { ObservableCollection data = new ObservableCollection(); int countOfNum = 0; foreach (DropdownName point in pointlist) { DropdownName dropdownName = new DropdownName(); dropdownName.index_id = ++countOfNum; dropdownName.dropdown_id = point.dropdown_id.ToString(); dropdownName.dropdown_name = point.dropdown_name.ToString(); data.Add(dropdownName); } return data; } #endregion #region 枪头类型变更事件 private void tbSelectTable_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { methodCoatingFile.labwaretipValue = tbSelectTable.Tag.ToString(); methodCoatingFile.labwaretipText = tbSelectTable.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 同时涂布通道数 private void cbCoatingCount_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbCoatingCount.SelectedIndex < 0) return; if (methodCoatingFile == null) return; methodCoatingFile.coatingCount = Convert.ToInt32(((DropdownName)cbCoatingCount.SelectedItem).dropdown_id); } #endregion #region 液体类型变更事件 private void cbLiquidType_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (mark != 0) { if (methodCoatingFile != null) { methodCoatingFile.liquididText = ((LiquidType)cbLiquidType.SelectedItem).liquid_type_name.ToString(); if (methodCoatingFile.liquididText != "请选择类型") { methodCoatingFile.liquididValue = ((LiquidType)cbLiquidType.SelectedItem).liquid_type_id.ToString(); } else { methodCoatingFile.liquididValue = "0"; } } } //else //{ // if (cbLiquidType.SelectedIndex < 0) // return; // if (cbLiquidType.SelectedIndex == 0) // { // cbLiquidRange.SelectedIndex = 0; // cbLiquid.SelectedIndex = 0; // } // curLiquidTypeSelectedIndex = cbLiquidType.SelectedIndex; // if (cbLiquidType.SelectedIndex != 0) // { // methodCoatingFile.liquididText = ((LiquidType)cbLiquidType.SelectedItem).liquid_type_name.ToString(); // methodCoatingFile.liquididValue = ((LiquidType)cbLiquidType.SelectedItem).liquid_type_id.ToString(); // } //} } #endregion #region 加液范围变更事件 private void cbLiquidRange_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (mark != 0) { string typeID = cbLiquidType.SelectedValue as string; string rangeID = cbLiquidRange.SelectedValue as string; string armID = cbArm.SelectedValue.ToString(); ObservableCollection liquidList = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(typeID, rangeID, armID); Liquid liquid = new Liquid(); liquid.liquid_name = Properties.Resources.strPleaseSelect; liquidList.Insert(0, liquid); cbLiquid.ItemsSource = liquidList; cbLiquid.SelectedIndex = 0; if (methodCoatingFile != null) { if ((LiquidRange)cbLiquidRange.SelectedItem != null) { methodCoatingFile.liquidrangeidText = ((LiquidRange)cbLiquidRange.SelectedItem).liquid_range_name.ToString(); methodCoatingFile.liquidrangeidValue = ((LiquidRange)cbLiquidRange.SelectedItem).liquid_range_id.ToString(); } } } //else //{ // if (cbLiquidRange.SelectedIndex < 0) // return; // curLiquidRangeSelectedIndex = cbLiquidRange.SelectedIndex; // string typeID = cbLiquidType.SelectedValue as string; // string rangeID = cbLiquidRange.SelectedValue as string; // string armID = cbArm.SelectedValue.ToString(); // ObservableCollection liquidList = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(typeID, rangeID, armID); // Liquid liquid = new Liquid(); // liquid.liquid_name = Properties.Resources.strPleaseSelect; // liquidList.Insert(0, liquid); // if (cbLiquidRange.SelectedIndex != 0) // { // methodCoatingFile.liquidrangeidText = ((LiquidRange)cbLiquidRange.SelectedItem).liquid_range_name.ToString(); // methodCoatingFile.liquidrangeidValue = ((LiquidRange)cbLiquidRange.SelectedItem).liquid_range_id.ToString(); // } // cbLiquid.ItemsSource = liquidList; // cbLiquid.SelectedIndex = 0; //} } #endregion private void cbLiquid_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (mark != 0) { if (cbLiquid.SelectedIndex != 0) { if (methodCoatingFile != null) { Liquid liquid = cbLiquid.SelectedItem as Liquid; if (liquid != null) { methodCoatingFile.liquidpidText = liquid.liquid_name; methodCoatingFile.liquidpidValue = liquid.liquid_id; } } } } //else //{ // if (cbLiquid.SelectedIndex < 1) // return; // Liquid liquid = cbLiquid.SelectedItem as Liquid; // if (cbLiquid.SelectedIndex != 0) // { // methodCoatingFile.liquidpidText = liquid.liquid_name; // methodCoatingFile.liquidpidValue = liquid.liquid_id; // } //} } #region 混合体积 (μL)变更事件 private void tbxMixVolume_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { if (methodCoatingFile != null) { methodCoatingFile.mixvolume = Convert.ToDouble(tbxMixVolume.Text); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion private void tbxMixCount_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { if (methodCoatingFile != null) { methodCoatingFile.mixcount = Convert.ToInt32(tbxMixCount.Text); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #region 吸液距离类型 private void cbMixAspiratePosition_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (mark != 0) { if (cbMixAspiratePosition.SelectedItem != null) { DropdownName dpdItem = (DropdownName)cbMixAspiratePosition.SelectedItem; methodCoatingFile.mixAspiratePositionValue = Convert.ToInt32(dpdItem.dropdown_id); methodCoatingFile.mixAspiratePositionText = dpdItem.dropdown_name; } } } #endregion private void tbxMixAspirateDistance_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { if (methodCoatingFile != null) { methodCoatingFile.mixAspirateDistance = Convert.ToDouble(tbxMixAspirateDistance.Text); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void tbxMixAspirateSpeed_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { if (methodCoatingFile != null) { methodCoatingFile.mixAspirateSpeed = Convert.ToDouble(tbxMixAspirateSpeed.Text); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #region 加液距离类型 private void cbMixDispensePosition_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (mark != 0) { if (cbMixDispensePosition.SelectedItem != null) { DropdownName dpdItem = (DropdownName)cbMixDispensePosition.SelectedItem; methodCoatingFile.mixDispensePositionValue = Convert.ToInt32(dpdItem.dropdown_id); methodCoatingFile.mixDispensePositionText = dpdItem.dropdown_name; } } } #endregion #region 加液时, 在距离 private void tbxMixDispenseDistance_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { if (methodCoatingFile != null) { methodCoatingFile.mixDispenseDistance = Convert.ToDouble(tbxMixDispenseDistance.Text); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region μL/s 加液变更事件 private void tbxMixDispenseSpeed_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark != 0) { if (methodCoatingFile != null) { methodCoatingFile.mixDispenseSpeed = Convert.ToDouble(tbxMixDispenseSpeed.Text); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 挑菌涂布设置 上一步 private void btnPrevChoiceCoatingSetting_Click(object sender, RoutedEventArgs e) { if (stepBar.StepIndex > stepBar.Items.Count) { stepBar.Prev(); stepBar.Prev(); } else stepBar.Prev(); gridSelectFile.Visibility = Visibility.Collapsed; gridTipSetting.Visibility = Visibility.Collapsed; gridLiquidParam.Visibility = Visibility.Visible; scrollViewer.ScrollToTop(); } #endregion #region 挑菌涂布设置 完成 private void btnFinish_Click(object sender, RoutedEventArgs e) { stepBar.Next(); gridSelectFile.Visibility = Visibility.Collapsed; gridTipSetting.Visibility = Visibility.Visible; gridLiquidParam.Visibility = Visibility.Collapsed; scrollViewer.ScrollToTop(); } #endregion #region 选择文件 下一步 private void btnNext_Click(object sender, RoutedEventArgs e) { stepBar.Next(); gridSelectFile.Visibility = Visibility.Collapsed; gridUltrasonic.Visibility = Visibility.Visible; gridTipSetting.Visibility = Visibility.Collapsed; gridLiquidParam.Visibility = Visibility.Collapsed; scrollViewer.ScrollToTop(); } #endregion #region 挑菌前环境设置 下一步 private void btnNext1_Click(object sender, RoutedEventArgs e) { stepBar.Next(); gridUltrasonic.Visibility = Visibility.Collapsed; gridSelectFile.Visibility = Visibility.Collapsed; gridTipSetting.Visibility = Visibility.Visible; gridLiquidParam.Visibility = Visibility.Collapsed; scrollViewer.ScrollToTop(); } #endregion #region 挑菌前环境设置 上一步 private void btnPrev_Click(object sender, RoutedEventArgs e) { stepBar.Prev(); gridUltrasonic.Visibility = Visibility.Visible; gridSelectFile.Visibility = Visibility.Collapsed; gridTipSetting.Visibility = Visibility.Collapsed; gridLiquidParam.Visibility = Visibility.Collapsed; scrollViewer.ScrollToTop(); } #endregion #region 涂布文件变更事件 private void tbExcelFile_TextChanged(object sender, TextChangedEventArgs e) { efError.Text = string.IsNullOrEmpty(tbExcelFile.Text.Trim()) ? "不能为空" : ""; } #endregion #region 调高变更事件 private void tbxCoatingOffset_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodCoatingFile != null) { methodCoatingFile.coatingOffset = Convert.ToDouble(tbxCoatingOffset.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 超声探测属性 /// /// 探测耗材名称 /// /// /// private void comboboxLabwareType_SelectionChanged(object sender, SelectionChangedEventArgs e) { var labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); if (labwareT == null) { return; } // 先看类型,加载界面 if (labwareT.labware_type_id.Equals(EnumManagement.GetEnumValue(ConsumableTypeEnum.CircularDish).ToString())) // 圆形皿 { bdDish.Visibility = Visibility.Visible; bdLabware.Visibility = Visibility.Collapsed; if (methodCoatingFile.ultrasonicDishObjectList == null) // 圆形皿耗材超声属性 { // 构建圆形皿默认三个坐标 dishPointlist = GenerateDefaultPointList(); if (methodCoatingFile.ultrasonicDishObjectList == null) { methodCoatingFile.ultrasonicDishObjectList = new List(); } UltrasonicDishObject ultrasonicDishObject = new UltrasonicDishObject(); ultrasonicDishObject.labwareText = labwareT.labware_name; ultrasonicDishObject.labwareValue = labwareT.labware_id; ultrasonicDishObject.xDishAxisVal = 0d; ultrasonicDishObject.yDishAxisVal = 0d; ultrasonicDishObject.pointList = new ObservableCollection(); ultrasonicDishObject.pointList = dishPointlist; methodCoatingFile.ultrasonicDishObjectList.Add(ultrasonicDishObject); } else { var labT = methodCoatingFile.ultrasonicDishObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { if (labT.pointList != null && labT.pointList.Count != 0) { dishPointlist = new ObservableCollection(labT.pointList); } else { // 构建圆形皿默认三个坐标 dishPointlist = GenerateDefaultPointList(); labT.pointList = dishPointlist; } } else { // 构建圆形皿默认三个坐标 dishPointlist = GenerateDefaultPointList(); if (methodCoatingFile.ultrasonicDishObjectList == null) { methodCoatingFile.ultrasonicDishObjectList = new List(); } UltrasonicDishObject ultrasonicDishObject = new UltrasonicDishObject(); ultrasonicDishObject.labwareText = labwareT.labware_name; ultrasonicDishObject.labwareValue = labwareT.labware_id; ultrasonicDishObject.xDishAxisVal = 0d; ultrasonicDishObject.yDishAxisVal = 0d; ultrasonicDishObject.pointList = new ObservableCollection(); ultrasonicDishObject.pointList = dishPointlist; methodCoatingFile.ultrasonicDishObjectList.Add(ultrasonicDishObject); } } dgPointListData.ItemsSource = dishPointlist; } else { bdDish.Visibility = Visibility.Collapsed; bdLabware.Visibility = Visibility.Visible; if (methodCoatingFile.ultrasonicObjectList == null) { methodCoatingFile.ultrasonicObjectList = new List(); UltrasonicObject ultrasonicObject = new UltrasonicObject(); ultrasonicObject.labwareText = labwareT.labware_name; ultrasonicObject.labwareValue = labwareT.labware_id; ultrasonicObject.rowNum = Convert.ToInt32(tbxRowNum.Text); ultrasonicObject.columnNum = Convert.ToInt32(tbxColumnNum.Text); ultrasonicObject.closeTopVal = Convert.ToDouble(tbxCloseTop.Text); ultrasonicObject.closeLeftVal = Convert.ToDouble(tbxCloseLeft.Text); ultrasonicObject.xAxisVal = Convert.ToDouble(tbxDistanceOfX.Text); ultrasonicObject.yAxisVal = Convert.ToDouble(tbxDistanceOfY.Text); methodCoatingFile.ultrasonicObjectList.Add(ultrasonicObject); } else { var labT = methodCoatingFile.ultrasonicObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { tbxRowNum.Text = labT.rowNum.ToString(); tbxColumnNum.Text = labT.columnNum.ToString(); tbxCloseTop.Text = labT.closeTopVal.ToString(); tbxCloseLeft.Text = labT.closeLeftVal.ToString(); tbxDistanceOfX.Text = labT.xAxisVal.ToString(); tbxDistanceOfY.Text = labT.yAxisVal.ToString(); } else { if (methodCoatingFile.ultrasonicObjectList == null) { methodCoatingFile.ultrasonicObjectList = new List(); } UltrasonicObject ultrasonicObject = new UltrasonicObject(); var labTm = methodCoatingFile.ultrasonicObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); ultrasonicObject.labwareText = labwareT.labware_name; ultrasonicObject.labwareValue = labwareT.labware_id; ultrasonicObject.rowNum = Convert.ToInt32(tbxRowNum.Text); ultrasonicObject.columnNum = Convert.ToInt32(tbxColumnNum.Text); ultrasonicObject.closeTopVal = Convert.ToDouble(tbxCloseTop.Text); ultrasonicObject.closeLeftVal = Convert.ToDouble(tbxCloseLeft.Text); ultrasonicObject.xAxisVal = Convert.ToDouble(tbxDistanceOfX.Text); ultrasonicObject.yAxisVal = Convert.ToDouble(tbxDistanceOfY.Text); if (labTm == null) { methodCoatingFile.ultrasonicObjectList.Add(ultrasonicObject); } } } } } /// /// 探测行数 /// /// /// private void tbxRowNum_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodCoatingFile != null) { Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); if (labwareT == null) { return; } var labT = methodCoatingFile.ultrasonicObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { labT.rowNum = Convert.ToInt32(tbxRowNum.Text); } else { UltrasonicObject ultrasonicObject = new UltrasonicObject(); ultrasonicObject.labwareText = labwareT.labware_name; ultrasonicObject.labwareValue = labwareT.labware_id; ultrasonicObject.rowNum = Convert.ToInt32(tbxRowNum.Text); methodCoatingFile.ultrasonicObjectList.Add(ultrasonicObject); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 探测列数 /// /// /// private void tbxColumnNum_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodCoatingFile != null) { Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); if (labwareT == null) { return; } var labT = methodCoatingFile.ultrasonicObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { labT.columnNum = Convert.ToInt32(tbxColumnNum.Text); } else { UltrasonicObject ultrasonicObject = new UltrasonicObject(); ultrasonicObject.labwareText = labwareT.labware_name; ultrasonicObject.labwareValue = labwareT.labware_id; ultrasonicObject.columnNum = Convert.ToInt32(tbxColumnNum.Text); methodCoatingFile.ultrasonicObjectList.Add(ultrasonicObject); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 距顶边 /// /// /// private void tbxCloseTop_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodCoatingFile != null) { Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); if (labwareT == null) { return; } var labT = methodCoatingFile.ultrasonicObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { labT.closeTopVal = Convert.ToDouble(tbxCloseTop.Text); } else { UltrasonicObject ultrasonicObject = new UltrasonicObject(); ultrasonicObject.labwareText = labwareT.labware_name; ultrasonicObject.labwareValue = labwareT.labware_id; ultrasonicObject.closeTopVal = Convert.ToDouble(tbxCloseTop.Text); methodCoatingFile.ultrasonicObjectList.Add(ultrasonicObject); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 距左边 /// /// /// private void tbxCloseLeft_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodCoatingFile != null) { Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); if (labwareT == null) { return; } var labT = methodCoatingFile.ultrasonicObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { labT.closeLeftVal = Convert.ToDouble(tbxCloseLeft.Text); } else { UltrasonicObject ultrasonicObject = new UltrasonicObject(); ultrasonicObject.labwareText = labwareT.labware_name; ultrasonicObject.labwareValue = labwareT.labware_id; ultrasonicObject.closeLeftVal = Convert.ToDouble(tbxCloseLeft.Text); methodCoatingFile.ultrasonicObjectList.Add(ultrasonicObject); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// X间距 /// /// /// private void tbxDistanceOfX_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodCoatingFile != null) { Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); if (labwareT == null) { return; } var labT = methodCoatingFile.ultrasonicObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { labT.xAxisVal = Convert.ToDouble(tbxDistanceOfX.Text); } else { UltrasonicObject ultrasonicObject = new UltrasonicObject(); ultrasonicObject.labwareText = labwareT.labware_name; ultrasonicObject.labwareValue = labwareT.labware_id; ultrasonicObject.xAxisVal = Convert.ToDouble(tbxDistanceOfX.Text); methodCoatingFile.ultrasonicObjectList.Add(ultrasonicObject); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// Y间距 /// /// /// private void tbxDistanceOfY_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodCoatingFile != null) { Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); if (labwareT == null) { return; } var labT = methodCoatingFile.ultrasonicObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { labT.yAxisVal = Convert.ToDouble(tbxDistanceOfY.Text); } else { UltrasonicObject ultrasonicObject = new UltrasonicObject(); ultrasonicObject.labwareText = labwareT.labware_name; ultrasonicObject.labwareValue = labwareT.labware_id; ultrasonicObject.yAxisVal = Convert.ToDouble(tbxDistanceOfY.Text); methodCoatingFile.ultrasonicObjectList.Add(ultrasonicObject); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 点位 新增 /// /// /// private void btnAdd_Click(object sender, RoutedEventArgs e) { try { Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware); var labT = methodCoatingFile.ultrasonicDishObjectList.FirstOrDefault(x => x.labwareValue.Equals(labwareT.labware_id)); if (labT != null) { DropdownName dropdownName = new DropdownName(); dropdownName.index_id = dishPointlist.Count + 1; dropdownName.dropdown_id = "0"; dropdownName.dropdown_name = "0"; dishPointlist.Add(dropdownName); labT.pointList = dishPointlist; } else { methodCoatingFile.ultrasonicDishObjectList = new List(); UltrasonicDishObject ultrasonicDishObject = new UltrasonicDishObject(); ultrasonicDishObject.labwareText = labwareT.labware_name; ultrasonicDishObject.labwareValue = labwareT.labware_id; ultrasonicDishObject.xDishAxisVal = 0d; ultrasonicDishObject.yDishAxisVal = 0d; ultrasonicDishObject.pointList = new ObservableCollection(); DropdownName dropdownName = new DropdownName(); dropdownName.index_id = dishPointlist.Count + 1; dropdownName.dropdown_id = "0"; dropdownName.dropdown_name = "0"; dishPointlist.Add(dropdownName); ultrasonicDishObject.pointList = dishPointlist; methodCoatingFile.ultrasonicDishObjectList.Add(ultrasonicDishObject); } dgPointListData.ItemsSource = dishPointlist; } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 点位 删除 /// /// /// private void btnDelete_Click(object sender, RoutedEventArgs e) { try { int SelectedRow = dgPointListData.SelectedIndex;//尝试解析出所选行 if (SelectedRow < 0) { return; } FrameworkElement element = dgPointListData.Columns[0].GetCellContent(dgPointListData.Items[SelectedRow]); List