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