using DataEntity.Rack;
using DataEntity.Share;
using DataRWDAL;
using DataRWDAL.Rack;
using HxEnum;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using XCommon.Log;
using XCore;
using XHandler.Class.DataEx;
using XImagingXhandler.XDAL;
using Convert = System.Convert;
using XHandler.View.Consumables;
namespace XHandler.View.MethodProperty
{
///
/// 夹爪保持开始 属性页面
///
public partial class BeginHoldingLabwareProperty : UserControl, IMethodProperty,IConsumableObserver
{
#region 变量
private MethodEx method = null;
public MethodHoldingLabware methodHoldingLabware { get; set; }
private int mark = 0;
#endregion
#region BLL
private AspirateBll aspirateBll = new AspirateBll();
private GripTransportBll gripTransportBll = new GripTransportBll();
#endregion
#region 构造函数
///
/// 构造函数
///
///
public BeginHoldingLabwareProperty(MethodEx method)
{
InitializeComponent();
#region 臂
// 获取机械臂信息
List armList = DataModule.getInstance().GetDeviceArm();
cbArm.ItemsSource = armList;
#endregion
#region 转运点位
// 加载转运点位
LoadGripPosition(Shared.ChanelArmId);
#endregion
#region 抓板方向
List gripTransportModels = gripTransportBll.GenerateGripTransportModel(Shared.SoftwareInformation.software_device_number);
cbGripModel.ItemsSource = gripTransportModels;
#endregion
#region 抓取耗材
// 抓
ObservableCollection dropdownNames = LabwareDB.GetLabware(2);
cbGripPickObject.ItemsSource = dropdownNames;
#endregion
#region 抓板位置
List gripTransportModelPoss = gripTransportBll.GetGripTransportModelPoss();
cbGripModelPos.ItemsSource = gripTransportModelPoss;
#endregion
methodHoldingLabware = new MethodHoldingLabware();
methodHoldingLabware.name = method.method_name;
methodHoldingLabware.label = method.method_name;
methodHoldingLabware.transportMode = 0;
methodHoldingLabware.status = (method.isEnabled == true ? "enable" : "disable");
methodHoldingLabware.strIndex = method.strIndex;
this.method = method;
if (method.tag != null)
{
methodHoldingLabware = (MethodHoldingLabware)method.tag;
}
this.DataContext = methodHoldingLabware;
}
#endregion
bool isConsumableUpdate = false;
///
/// 耗材变更后,更新节点
///
/// 耗材管理对象
public void ReceiveAndUpdate(ConsumableManagement consumableManagement)
{
isConsumableUpdate = true;
// 抓取耗材
ObservableCollection dropdownNames = LabwareDB.GetLabware(2);
cbGripPickObject.ItemsSource = dropdownNames;
cbGripPickObject.SelectedValue = methodHoldingLabware.gripPickLabwareValue;
}
#region 加载转运板位
///
/// 加载转运板位
///
///
private void LoadGripPosition(int armId)
{
List gripPositionList = new List();
// 获取台面点位
List lattices = aspirateBll.ProviderLatticeList(Shared.SoftwareInformation.software_device_number, armId);
// 获取台面以外点位
List positons = PositionDB.GetList(Shared.SoftwareInformation.software_information_id);
foreach (var lattice in lattices)
{
if (!lattice.lattice_num.Equals("请选择"))
{
GripTransportPosition gripPosition = new GripTransportPosition();
gripPosition.position_id = lattice.lattice_id;
gripPosition.position_name = lattice.lattice_num;
gripPosition.position_type = EnumManagement.GetEnumValue(PositonTypeEnum.Desktop);
gripPositionList.Add(gripPosition);
}
}
foreach (var positon in positons)
{
GripTransportPosition gripPosition = new GripTransportPosition();
gripPosition.position_id = positon.id;
gripPosition.position_name = positon.name;
gripPosition.position_type = positon.type;
gripPositionList.Add(gripPosition);
}
cbSourceLattice.ItemsSource = gripPositionList;
cbSourceLattice.SelectedIndex = 0;
}
#endregion
#region 初始化
///
/// 初始化
///
///
///
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
mark += 1;
try
{
if (mark > 1)
{
return;
}
List armList = (List)cbArm.ItemsSource;
DeviceArm gripper = armList.FirstOrDefault(it => it.arm_type == EnumManagement.GetEnumValue(ArmTypeEnum.Gripper));
cbArm.SelectedItem = gripper;
if (!string.IsNullOrEmpty(methodHoldingLabware.armValue))
{
// 机械臂
cbArm.SelectedValue = methodHoldingLabware.armValue;
// 抓板位
cbSourceLattice.SelectedValue = methodHoldingLabware.srcPositionValue;
// 抓板方向
cbGripModel.SelectedValue = methodHoldingLabware.gripModelValue;
// 抓取耗材
cbGripPickObject.SelectedValue = methodHoldingLabware.gripPickLabwareValue;
// 抓板位置
cbGripModelPos.SelectedValue = methodHoldingLabware.gripModelPosValue;
if (methodHoldingLabware.transportMode == 0)
rbAll.IsChecked = true;
else if (methodHoldingLabware.transportMode == 1)
rbExceptOne.IsChecked = true;
else if (methodHoldingLabware.transportMode == 2)
{
rbCount.IsChecked = true;
tbxlevel.Text = methodHoldingLabware.transportCount.ToString();
}
if (this.method != null)
{
this.method.method_Tipcontent = string.Format("从{0}抓板", methodHoldingLabware.srcPositionText);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 臂
///
/// 臂
///
///
///
private void cbArm_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (cbArm.SelectedIndex < 0)
{
return;
}
DeviceArm arm = (DeviceArm)cbArm.SelectedItem;
methodHoldingLabware.armText = arm.device_arm_name;
methodHoldingLabware.armValue = arm.device_arm_id.ToString();
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 转运板位
///
/// 转运板位
///
///
///
private void cbSourceLattice_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (cbSourceLattice.SelectedIndex < 0 || mark == 0)
{
return;
}
if (cbSourceLattice.SelectedIndex >= 0)
{
GripTransportPosition gripPosition = cbSourceLattice.SelectedItem as GripTransportPosition;
if (methodHoldingLabware != null)
{
methodHoldingLabware.srcPositionText = gripPosition.position_name;
methodHoldingLabware.srcPositionValue = gripPosition.position_id;
methodHoldingLabware.srcPositionType = gripPosition.position_type;
}
if (this.method != null)
{
this.method.method_Tipcontent = string.Format("从{0}抓板", methodHoldingLabware.srcPositionText);
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 抓板位置
///
/// 抓板位置
///
///
///
private void cbGripModelPos_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
GripTransportModel gripTransportModel = cbGripModelPos.SelectedItem as GripTransportModel;
if (methodHoldingLabware != null)
{
methodHoldingLabware.gripModelPosText = gripTransportModel.model_name;
methodHoldingLabware.gripModelPosValue = Convert.ToInt32(gripTransportModel.model_id);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 抓板方向
///
/// 抓板方向
///
///
///
private void cbGripModel_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
GripTransportModel gripTransportModel = cbGripModel.SelectedItem as GripTransportModel;
if (methodHoldingLabware != null)
{
methodHoldingLabware.gripModelText = gripTransportModel.model_name;
methodHoldingLabware.gripModelValue = Convert.ToInt32(gripTransportModel.model_id);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 抓取耗材
///
/// 抓取耗材
///
///
///
private void cbGripPickObject_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (isConsumableUpdate)
{
isConsumableUpdate = false;
return;
}
Labware gripTransportModel = cbGripPickObject.SelectedItem as Labware;
if (methodHoldingLabware != null)
{
methodHoldingLabware.gripPickLabwareText = gripTransportModel.labware_name;
methodHoldingLabware.gripPickLabwareValue = gripTransportModel.labware_id;
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 命令名称
///
/// 命令名称
///
///
///
private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodHoldingLabware != null)
{
methodHoldingLabware.name = tbxCommandName.Text;
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
public void SetTableName(string name, Labware labware)
{
}
private void rbAll_Checked(object sender, RoutedEventArgs e)
{
if (rbAll.IsChecked == true)
{
if (methodHoldingLabware != null)
{
methodHoldingLabware.transportMode = (int)GripTransportModeEnum.TransportAll;
}
}
}
private void rbExceptOne_Checked(object sender, RoutedEventArgs e)
{
if (rbExceptOne.IsChecked == true)
{
if (methodHoldingLabware != null)
{
methodHoldingLabware.transportMode = (int)GripTransportModeEnum.TransportExceptOne;
}
}
}
private void rbCount_Checked(object sender, RoutedEventArgs e)
{
if (rbCount.IsChecked == true)
{
if (methodHoldingLabware != null)
{
methodHoldingLabware.transportMode = (int)GripTransportModeEnum.TransportCount;
}
}
}
private void tbxlevel_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (methodHoldingLabware != null)
{
methodHoldingLabware.transportCount = Convert.ToInt32(tbxlevel.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
}
}