using DataEntity; using DataRWDAL; using Microsoft.Win32; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Configuration; using System.Data; using System.IO; 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.Log; using XCore; using XHandler.Class; using XImagingXhandler.XDAL; using XCoreBLL; using DataEntity.Share; using XHandler.Class.DataEx; using System.Text.RegularExpressions; using HandyControl.Data; using XCommon.Tip; using System.Runtime.Remoting.Channels; using XHandler.Controls; namespace XHandler.View.MethodProperty { /// /// FileMoveLabware.xaml 的交互逻辑 /// public partial class FileMoveLabwareProperty : UserControl { FileMoveLabwareBll fileMoveLabwareBll = new FileMoveLabwareBll(); public MethodFileMoveLabware methodFileMoveLabware { get; set; } public MethodFileMoveLabware currmethodFileMoveLabware = null; public MethodEx method = null; private Labware selectedLabware = null; int curArmSelectedIndex = -1; #region 全局变量 string isrun = ""; string status = ""; string name = ""; string label = ""; string armText = ""; string armValue = ""; string filePath = ""; int beginLine = 0; DataTable transferDataTable = new DataTable(); string pickLattice = ""; string pickColumn = ""; string pickWell = ""; string pickPart = ""; string pickDirect = ""; string placeLattice = ""; string placeColumn = ""; string placeWell = ""; string placeDirect = ""; int transportMode = 0; int transportCount = 0; int mark = 0; string comment = ""; #endregion #region 构造 public FileMoveLabwareProperty() { InitializeComponent(); } #endregion #region 构造函数带参 public FileMoveLabwareProperty(MethodEx method) { try { InitializeComponent(); mark = 0; methodFileMoveLabware = new MethodFileMoveLabware(); methodFileMoveLabware.label = method.method_name; methodFileMoveLabware.name = method.method_name; methodFileMoveLabware.status = (method.isEnabled == true ? "enable" : "disable"); List armList = DataModule.getInstance().GetDeviceArm(); cbArm.ItemsSource = armList; if (armList.Count == 2) //只有一个臂的情况下默认选中该臂 { curArmSelectedIndex = 1; } else if (armList.Count == 5) { curArmSelectedIndex = 2; } else { curArmSelectedIndex = 0; } methodFileMoveLabware.strIndex = method.strIndex; this.method = method; if (method.tag != null) { methodFileMoveLabware = (MethodFileMoveLabware)method.tag; currmethodFileMoveLabware = methodFileMoveLabware; isrun = methodFileMoveLabware.isrun; status = methodFileMoveLabware.status; name = methodFileMoveLabware.name; label = methodFileMoveLabware.label; armText = methodFileMoveLabware.armText; armValue = methodFileMoveLabware.armValue; filePath = methodFileMoveLabware.filePath; beginLine = methodFileMoveLabware.beginLine; transferDataTable = methodFileMoveLabware.transferDataTable; pickLattice = methodFileMoveLabware.pickLattice; pickColumn = methodFileMoveLabware.pickColumn; pickWell = methodFileMoveLabware.pickWell; pickPart = methodFileMoveLabware.pickPart; pickDirect = methodFileMoveLabware.pickDirect; placeLattice = methodFileMoveLabware.placeLattice; placeColumn = methodFileMoveLabware.placeColumn; placeWell = methodFileMoveLabware.placeWell; placeDirect = methodFileMoveLabware.placeDirect; transportMode = methodFileMoveLabware.transportMode; transportCount = methodFileMoveLabware.transportCount; comment = methodFileMoveLabware.comment; } this.DataContext = methodFileMoveLabware; } catch(Exception ex) { LoggerHelper.ErrorLog("FileMoveLabwareProperty ERROR:", ex); } } #endregion private void UserControl_Loaded(object sender, RoutedEventArgs e) { mark += 1; try { if (mark > 1) { return; } if (!string.IsNullOrEmpty(armText)) { tbxCommandName.Text = name; tbxCommandComment.Text = comment; cbArm.SelectedValue = armValue; tbxbeginLine.Text = beginLine.ToString(); dgTransferFileData.ItemsSource = transferDataTable.DefaultView; tbExcelFile.Text = filePath; //更新所有下拉列表 List transferFileHeaders = fileMoveLabwareBll.GetTransferFileHeaders(transferDataTable); cbPickLattice.ItemsSource = transferFileHeaders; cbPickColumn.ItemsSource = transferFileHeaders; cbPickWell.ItemsSource = transferFileHeaders; cbPickDirect.ItemsSource = transferFileHeaders; cbPlaceLattice.ItemsSource = transferFileHeaders; cbPlaceColumn.ItemsSource = transferFileHeaders; cbPlaceWell.ItemsSource = transferFileHeaders; cbPlaceDirect.ItemsSource = transferFileHeaders; cbPickPart.ItemsSource = transferFileHeaders; cbPickPart.SelectedValue = pickPart; cbPickLattice.Text = pickLattice; cbPickColumn.Text = pickColumn; cbPickWell.Text = pickWell; cbPickDirect.Text = pickDirect; cbPlaceLattice.Text = placeLattice; cbPlaceColumn.Text = placeColumn; cbPlaceWell.Text = placeWell.ToString(); cbPlaceDirect.Text = placeDirect; if (transportMode == 0) { rbAll.IsChecked = true; } else if (transportMode == 1) { rbExceptOne.IsChecked = true; } else if (transportMode == 2) { rbCount.IsChecked = true; tbxlevel.Text = transportCount.ToString(); } if (currmethodFileMoveLabware != null) { methodFileMoveLabware = currmethodFileMoveLabware; } } else { cbArm.SelectedIndex = curArmSelectedIndex; rbAll.IsChecked = true; if (methodFileMoveLabware.transportMode == 0) rbAll.IsChecked = true; else if (methodFileMoveLabware.transportMode == 1) rbExceptOne.IsChecked = true; else if (methodFileMoveLabware.transportMode == 2) rbCount.IsChecked = true; if (currmethodFileMoveLabware != null) { methodFileMoveLabware = currmethodFileMoveLabware; } } //ReceiveAndUpdate(); } catch (Exception ex) { LoggerHelper.ErrorLog("UserControl_Loaded ERROR:", ex); } } private void cbPickPart_Loaded(object sender, RoutedEventArgs e) { try { List transferFileHeaders = fileMoveLabwareBll.GetTransferFileHeaders(transferDataTable); cbPickPart.ItemsSource = transferFileHeaders; cbPickPart.Text = pickPart; } catch (Exception ex) { LoggerHelper.ErrorLog("cbPickPart_Loaded ERROR:", ex); } } private void cbPickLattice_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPickLattice.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPickLattice.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.pickLattice = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPickLattice_SelectionChanged ERROR:", ex); } } private void cbPickColumn_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPickColumn.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPickColumn.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.pickColumn = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPickColumn_SelectionChanged ERROR:", ex); } } private void cbPickWell_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPickWell.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPickWell.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.pickWell = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPickWell_SelectionChanged ERROR:", ex); } } private void cbPickPart_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPickPart.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPickPart.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.pickPart = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPickPart_SelectionChanged ERROR:", ex); } } private void cbPickDirect_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPickDirect.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPickDirect.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.pickDirect = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPickDirect_SelectionChanged ERROR:", ex); } } private void cbPlaceLattice_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPlaceLattice.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPlaceLattice.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.placeLattice = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPlaceLattice_SelectionChanged ERROR:", ex); } } private void cbPlaceColumn_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPlaceColumn.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPlaceColumn.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.placeColumn = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPlaceColumn_SelectionChanged ERROR:", ex); } } private void cbPlaceWell_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPlaceWell.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPlaceWell.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.placeWell = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPlaceWell_SelectionChanged ERROR:", ex); } } private void cbPlaceDirect_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbPlaceDirect.SelectedIndex == -1) return; TransferFileHeader transferFileHeader = cbPlaceDirect.SelectedItem as TransferFileHeader; if (methodFileMoveLabware != null) { methodFileMoveLabware.placeDirect = transferFileHeader.header_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("cbPlaceDirect_SelectionChanged ERROR:", ex); } } private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e) { try { if (string.IsNullOrEmpty(tbxCommandName.Text)) { cnError.Text = "命令名称不能为空"; return; } if (methodFileMoveLabware != null) { methodFileMoveLabware.name = tbxCommandName.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("tbxCommandName_TextChanged ERROR:", ex); } } private void tbExcelFile_PreviewKeyDown(object sender, KeyEventArgs e) { try { 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()); } } } } } catch(Exception ex) { LoggerHelper.ErrorLog("tbExcelFile_PreviewKeyDown ERROR:", ex); } } private void SelectFile(string file) { try { string ext = System.IO.Path.GetExtension(file); DataTable transferData = null; if (string.Compare(ext, ".csv", true) == 0) transferData = ExcelAndCsvHelper.GetDataTableFromCsvFile(file); else transferData = ExcelAndCsvHelper.GetDataTableFromExcelFile(file, true); if (transferData != null) { if (methodFileMoveLabware != null) { methodFileMoveLabware.transferDataTable = transferData; } dgTransferFileData.ItemsSource = transferData.DefaultView; List transferFileHeaders = fileMoveLabwareBll.GetTransferFileHeaders(transferData); cbPickLattice.ItemsSource = transferFileHeaders; cbPickColumn.ItemsSource = transferFileHeaders; cbPickWell.ItemsSource = transferFileHeaders; cbPickPart.ItemsSource = transferFileHeaders; cbPickDirect.ItemsSource = transferFileHeaders; cbPlaceLattice.ItemsSource = transferFileHeaders; cbPlaceColumn.ItemsSource = transferFileHeaders; cbPlaceWell.ItemsSource = transferFileHeaders; cbPlaceDirect.ItemsSource = transferFileHeaders; cbPickLattice.SelectedIndex = 1; cbPickColumn.SelectedIndex = 2; cbPickWell.SelectedIndex = 3; cbPickPart.SelectedIndex = 4; cbPickDirect.SelectedIndex = 5; cbPlaceLattice.SelectedIndex = 6; cbPlaceColumn.SelectedIndex = 7; cbPlaceWell.SelectedIndex = 8; cbPlaceDirect.SelectedIndex = 9; } } catch (Exception ex) { LoggerHelper.ErrorLog("SelectFile ERROR:", ex); } } private void btnSelectFile_Click(object sender, RoutedEventArgs e) { try { OpenFileDialog dlg = new OpenFileDialog(); dlg.Title = "请选择Excel文件"; dlg.FileName = string.Empty; dlg.FilterIndex = 1; dlg.Filter = "excel files(*.xls)|*.xls|csv files(*.csv)|*.csv|All files(*.*)|*.*"; dlg.Multiselect = false; if (!string.IsNullOrEmpty(tbExcelFile.Text.Trim())) { try { if (System.IO.Path.HasExtension(tbExcelFile.Text.Trim())) dlg.InitialDirectory = System.IO.Path.GetDirectoryName(tbExcelFile.Text.Trim()); else dlg.InitialDirectory = tbExcelFile.Text.Trim(); } catch (Exception ex) { } } if (dlg.ShowDialog((MainWindow)Application.Current.MainWindow) == true) { string fullPath = dlg.FileName; if (methodFileMoveLabware != null) { methodFileMoveLabware.filePath = fullPath; } tbExcelFile.Text = fullPath; SelectFile(fullPath); } ((MainWindow)Application.Current.MainWindow).testDesign.IsIgnore = true; //防止影响到主界面流程中已拖放的单命令顺序 } catch (Exception ex) { LoggerHelper.ErrorLog("btnSelectFile_Click ERROR:", ex); } } private void tbxbeginLine_TextChanged(object sender, TextChangedEventArgs e) { } private void btnNext_Click(object sender, RoutedEventArgs e) { stepBar.Next(); gridSelectFile.Visibility = Visibility.Collapsed; gridTipSetting.Visibility = Visibility.Visible; scrollViewer.ScrollToTop(); } private void cbArm_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbArm.SelectedIndex < 0) { return; } curArmSelectedIndex = cbArm.SelectedIndex; string armName = ((DeviceArm)cbArm.SelectedItem).device_arm_name.ToString(); DeviceArm arm = cbArm.SelectedItem as DeviceArm; methodFileMoveLabware.armText = arm.device_arm_name; methodFileMoveLabware.armValue = arm.device_arm_id.ToString(); //ReceiveAndUpdate(); } catch (Exception ex) { LoggerHelper.ErrorLog("cbArm_SelectionChanged ERROR:", ex); } } private void rbAll_Checked(object sender, RoutedEventArgs e) { if (rbAll.IsChecked == true) { if (methodFileMoveLabware != null) { methodFileMoveLabware.transportMode = (int)GripTransportModeEnum.TransportAll; } } } private void rbExceptOne_Checked(object sender, RoutedEventArgs e) { if (rbExceptOne.IsChecked == true) { if (methodFileMoveLabware != null) { methodFileMoveLabware.transportMode = (int)GripTransportModeEnum.TransportExceptOne; } } } private void rbCount_Checked(object sender, RoutedEventArgs e) { if (rbCount.IsChecked == true) { if (methodFileMoveLabware != null) { methodFileMoveLabware.transportMode = (int)GripTransportModeEnum.TransportCount; } } } private void tbxlevel_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodFileMoveLabware != null) { methodFileMoveLabware.transportCount = Convert.ToInt32(tbxlevel.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("tbxlevel_TextChanged ERROR:", ex); } } private void btnPrev1_Click(object sender, RoutedEventArgs e) { try { if (stepBar.StepIndex > stepBar.Items.Count) { stepBar.Prev(); stepBar.Prev(); } else stepBar.Prev(); gridSelectFile.Visibility = Visibility.Visible; gridTipSetting.Visibility = Visibility.Collapsed; scrollViewer.ScrollToTop(); } catch (Exception ex) { LoggerHelper.ErrorLog("btnPrev1_Click ERROR:", ex); } } private void btnFinish_Click(object sender, RoutedEventArgs e) { try { stepBar.Next(); scrollViewer.ScrollToTop(); } catch (Exception ex) { LoggerHelper.ErrorLog("btnFinish_Click ERROR:", ex); } } #region 下载文件模板 private void btnDownloadTemplate_Click(object sender, RoutedEventArgs e) { //弹出保存对话框 try { string fileDir = string.Empty; SaveFileDialog dlg = new SaveFileDialog(); dlg.Title = "另存为"; dlg.FileName = $"{DateTime.Now.ToString("yyyyMMddHHmmss")}.csv"; // Default file name dlg.DefaultExt = ".xls"; // Default file extension dlg.Filter = "excel files(*.xls)|*.xls|csv files(*.csv)|*.csv";// Filter files by extension dlg.InitialDirectory = System.AppDomain.CurrentDomain.BaseDirectory; if (dlg.ShowDialog() == true) { string directoryBase = System.AppDomain.CurrentDomain.BaseDirectory; string sourceFilePath = directoryBase + "TempData\\movelabwareHX.csv"; File.Copy(sourceFilePath, dlg.FileName, true); ShowTip.ShowNotice(string.Format("{0}成功{1}{2}", "下载保存", Environment.NewLine, dlg.FileName), InfoType.Warning); } } catch (Exception ex) { ShowTip.ShowNotice(string.Format("{0}失败{1}{2}", "下载保存", Environment.NewLine, ""), InfoType.Warning); LoggerHelper.ErrorLog("btnDownloadTemplate_Click ERROR:", ex); } } #endregion private void tbxCommandComment_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodFileMoveLabware != null) { if (this.method != null) { this.method.method_Tipcontent = tbxCommandComment.Text; } methodFileMoveLabware.comment = tbxCommandComment.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("tbxCommandComment_TextChanged ERROR:", ex); } } } }