using DataEntity;
using DataEntity.Share;
using DataRWDAL;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using XCommon.Log;
using XCore;
using XHandler.Class.DataEx;
using XHandler.View.Com;
using XImagingXhandler.XDAL;
namespace XHandler.View.MethodProperty
{
///
/// 超声探测子页面
///
public partial class UltrasonicChildProperty : System.Windows.Controls.UserControl
{
#region 变量
private AspirateBll aspirateBll = new AspirateBll();
private int mark = 0;
public MethodUltrasonicChild m_ultrasonicData = null;
#endregion
#region 构造函数
public UltrasonicChildProperty(MethodUltrasonicChild ultrasonicData, bool isFromChoice = false)
{
mark = 0;
InitializeComponent();
m_ultrasonicData = ultrasonicData;
#region 台面位置
List list = new List();
List lattices = DataModule.getInstance().GetLattices();
for (int i = 0; i < Shared.SoftwareInformation.columns; i++)
{
for (int j = 0; j < Shared.SoftwareInformation.rows; j++)
{
int tmp = i * Shared.SoftwareInformation.rows + j;
Lattice latt = lattices[tmp];
if (latt.is_trash == 1)
continue;
list.Add(latt.lattice_num);
}
}
list.Insert(0, Properties.Resources.strPleaseSelect); // 请选择
comboboxTablePos.ItemsSource = list;
if (isFromChoice)
{
// 挑选转运
comboboxTablePos.IsEnabled = false;
}
#endregion
// 获取耗材类型下拉选择数据
ObservableCollection labwareList = GenerateLabwareType();
comboboxLabwareType.ItemsSource = labwareList;
// 圆形皿多探测点位DataGrid
dgPointListData.ItemsSource = m_ultrasonicData.pointList;
this.DataContext = m_ultrasonicData;
}
#endregion
#region 页面初始化
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
mark += 1;
try
{
if (mark > 1)
{
return;
}
if (m_ultrasonicData == null)
{
m_ultrasonicData = new MethodUltrasonicChild();
return;
}
// 台面位置
if (!string.IsNullOrEmpty(m_ultrasonicData.positionValue))
{
comboboxTablePos.SelectedItem = m_ultrasonicData.positionText;
}
else
{
comboboxTablePos.SelectedIndex = 0;
}
// 耗材名称
comboboxLabwareType.SelectedValue = m_ultrasonicData.labwareValue;
if (m_ultrasonicData.pointList == null)
{
// 构建圆形皿默认三个坐标
m_ultrasonicData.pointList = GenerateDefaultPointList();
}
tbxXAxis.Text = m_ultrasonicData.xDishAxisVal.ToString();
tbxYAxis.Text = m_ultrasonicData.yDishAxisVal.ToString();
tbxRowNum.Text = m_ultrasonicData.rowNum.ToString();
tbxColumnNum.Text = m_ultrasonicData.columnNum.ToString();
tbxCloseTop.Text = m_ultrasonicData.closeTopVal.ToString();
tbxCloseLeft.Text = m_ultrasonicData.closeLeftVal.ToString();
tbxDistanceOfX.Text = m_ultrasonicData.xAxisVal.ToString();
tbxDistanceOfY.Text = m_ultrasonicData.yAxisVal.ToString();
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 台面位置选择变更
private void comboboxTablePos_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (comboboxTablePos.SelectedIndex < 0)
{
return;
}
else if (comboboxTablePos.SelectedIndex == 0)
{
m_ultrasonicData.positionValue = "";
m_ultrasonicData.positionText = "";
return;
}
else
{
// 根据所选的台面加载圆皿中心坐标
Lattice lattice = null;
TabletopTemplate tabletopTemplate = TabletopTemplateDB.GetCurrentAppTabletopTemplateCollectionFromdb(); //增加台面模板判断
if (tabletopTemplate == null)
{
lattice = LatticeDB.GetLatticeDataByIdFromdb((string)comboboxTablePos.SelectedItem, Convert.ToInt32(Shared.ChanelArmId), Shared.SoftwareInformation.software_device_number);
}
else
{
lattice = LatticeDB.GetLatticeDataByLatticeNumAndTempIdFromdb((string)comboboxTablePos.SelectedItem, Convert.ToInt32(Shared.DeviceArmList.SingleOrDefault(x => x.arm_type.Equals(1)).device_arm_id), Shared.SoftwareInformation.software_device_number, tabletopTemplate.tabletopid);
}
tbxXAxis.Text = ((double)lattice.lattice_X + ((double)lattice.lattice_length / (double)2)).ToString("0.0");
tbxYAxis.Text = ((double)lattice.lattice_Y + ((double)lattice.lattice_width / (double)2)).ToString("0.0");
m_ultrasonicData.positionText = ((string)comboboxTablePos.SelectedItem).ToString();
m_ultrasonicData.positionValue = ((string)comboboxTablePos.SelectedItem).ToString();
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 耗材名称选择变更事件
private void comboboxLabwareType_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try
{
if (comboboxLabwareType.SelectedIndex == 0)
{
bdDish.Visibility = Visibility.Visible;
bdLabware.Visibility = Visibility.Collapsed;
}
else if (comboboxLabwareType.SelectedIndex == 1)
{
bdDish.Visibility = Visibility.Collapsed;
bdLabware.Visibility = Visibility.Visible;
}
if (m_ultrasonicData != null)
{
m_ultrasonicData.labwareValue = ((DropdownName)comboboxLabwareType.SelectedItem).dropdown_id.ToString();
m_ultrasonicData.labwareText = ((DropdownName)comboboxLabwareType.SelectedItem).dropdown_name.ToString();
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 圆形皿相关
#region X轴
private void tbxXAxis_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (m_ultrasonicData != null)
{
m_ultrasonicData.xDishAxisVal = Convert.ToDouble(tbxXAxis.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region Y轴
private void tbxYAxis_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (m_ultrasonicData != null)
{
m_ultrasonicData.yDishAxisVal = Convert.ToDouble(tbxYAxis.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 点位设置 新增
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
try
{
DropdownName dropdownName = new DropdownName();
dropdownName.index_id = m_ultrasonicData.pointList.Count + 1;
dropdownName.dropdown_id = "0";
dropdownName.dropdown_name = "0";
m_ultrasonicData.pointList.Add(dropdownName);
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 点位设置 删除
private void btnDelete_Click(object sender, RoutedEventArgs e)
{
try
{
int SelectedRow = dgPointListData.SelectedIndex;//尝试解析出所选行
if (SelectedRow < 0)
{
return;
}
var a = dgPointListData.Columns[0].GetCellContent(dgPointListData.Items[SelectedRow]);
List listBtn = ViewCom.GetChildObjects((DependencyObject)a, typeof(System.Windows.Controls.Label));
if (listBtn.Count > 0)
{
int grd = Convert.ToInt32(listBtn[0].Tag);
m_ultrasonicData.pointList.Remove(m_ultrasonicData.pointList.FirstOrDefault(x => x.index_id == grd));
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 点位设置 单元格编辑
private void dgPointListData_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
try
{
// 如果点击了放弃按钮或ESC
if (e.EditAction == DataGridEditAction.Cancel)
{
return;
}
// 获取编辑模式显示的元素,因为使用了模板,因此这里是ContentPresenter类型
ContentPresenter cp = e.EditingElement as ContentPresenter;
if (cp != null && VisualTreeHelper.GetChildrenCount(cp) > 0)
{
// 找到编辑框
System.Windows.Controls.TextBox textBox = VisualTreeHelper.GetChild(cp, 0) as System.Windows.Controls.TextBox;
// 如果找到
if (textBox != null)
{
#region Del
//验证输入值
//if (!Consumables.ConsumablesValidationRule.IsPositiveNumber(textBox.Text, out string message))
//{
// textBox.Text = "0";
// lnError.Text = message;
// return;
//}
//else if (!Consumables.ConsumablesValidationRule.IsRange(textBox.Text, 0.0, 1000.0, false, out message))
//{
// textBox.Text = "0";
// lnError.Text = message;
// return;
//}
//else
//{
// lnError.Text = "";
//}
//if (!verificationTextBox.VerificateTextBox(textBox, 11))
//{
// textBox.BorderThickness = new Thickness(2);
// textBox.BorderBrush = Brushes.Red;
// return;
//}
#endregion
int id = Convert.ToInt32(textBox.Tag);
var pointItem = m_ultrasonicData.pointList.FirstOrDefault(x => x.index_id == id);
DropdownName dropdown = new DropdownName();
dropdown.index_id = id;
if (textBox.Name == "tbXoffset")
{
dropdown.dropdown_id = textBox.Text;
pointItem.dropdown_id = textBox.Text;
}
else
{
dropdown.dropdown_name = textBox.Text;
pointItem.dropdown_name = textBox.Text;
}
var dataGrid = sender as System.Windows.Controls.DataGrid;
dataGrid.BeginEdit();
}
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#endregion
#region 非圆皿相关
#region 行数变更事件
private void tbxRowNum_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (m_ultrasonicData != null)
{
m_ultrasonicData.rowNum = Convert.ToInt32(tbxRowNum.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 列数变更事件
private void tbxColumnNum_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (m_ultrasonicData != null)
{
m_ultrasonicData.columnNum = Convert.ToInt32(tbxColumnNum.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 距顶边变更事件
private void tbxCloseTop_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (m_ultrasonicData != null)
{
m_ultrasonicData.closeTopVal = Convert.ToDouble(tbxCloseTop.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 距左边
private void tbxCloseLeft_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (m_ultrasonicData != null)
{
m_ultrasonicData.closeLeftVal = Convert.ToDouble(tbxCloseLeft.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region X间距
private void tbxDistanceOfX_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (m_ultrasonicData != null)
{
m_ultrasonicData.xAxisVal = Convert.ToDouble(tbxDistanceOfX.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region Y间距
private void tbxDistanceOfY_TextChanged(object sender, TextChangedEventArgs e)
{
try
{
if (m_ultrasonicData != null)
{
m_ultrasonicData.yAxisVal = Convert.ToDouble(tbxDistanceOfY.Text);
}
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#endregion
#region 私有方法
#region 构建耗材类型下拉选择数据
private ObservableCollection GenerateLabwareType()
{
ObservableCollection dropdownNames = new ObservableCollection();
DropdownName dropdownName = new DropdownName();
dropdownName.dropdown_id = "1";
dropdownName.dropdown_name = "圆形皿";
dropdownNames.Add(dropdownName);
dropdownName = new DropdownName();
dropdownName.dropdown_id = "2";
dropdownName.dropdown_name = "非圆形皿";
dropdownNames.Add(dropdownName);
return dropdownNames;
}
#endregion
#region 构建圆形皿默认三个坐标
private ObservableCollection GenerateDefaultPointList()
{
ObservableCollection points = new ObservableCollection();
DropdownName point1 = new DropdownName();
point1.dropdown_id = "-10";
point1.dropdown_name = "0";
points.Add(point1);
point1 = new DropdownName();
point1.dropdown_id = "0";
point1.dropdown_name = "0";
points.Add(point1);
point1 = new DropdownName();
point1.dropdown_id = "10";
point1.dropdown_name = "0";
points.Add(point1);
return points;
}
#endregion
#endregion
}
}