using DataEntity.Device;
using DataEntity.Share;
using DataRWDAL;
using DataRWDAL.Device;
using HandyControl.Data;
using HxEnum;
using HxSocketImplement.Sockets;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Input;
using System.Xml;
using XCommon;
using XCommon.Log;
using XCommon.Tip;
using XHandler.Class.DataEx;
using XHandler.Controls.Run.Com;
using XHandler.View.MethodProperty;
using XImagingXhandler.XDAL;
using static HxEnum.StateEnum;
namespace XHandler.View
{
///
/// 设备编辑 页面
///
public partial class RunAgoTips : System.Windows.Window
{
#region 参数
private RunWnd m_lauchView = null;
private ObservableCollection m_deviceStatusList = new ObservableCollection();
#endregion
#region 构造函数
///
/// 构造函数
///
public RunAgoTips(RunWnd lauchView)
{
InitializeComponent();
m_lauchView = lauchView;
this.Owner = (Window)Shared.Main;
}
#endregion
#region 初始化
///
/// 初始化,枪头盒不支持叠放
///
///
///
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
#region 枪头类型
var platformNodeList = m_lauchView.xmlDocument.SelectSingleNode("root/env").SelectNodes("platform");
// 从台面获取所有枪头
List labwares = new List();
foreach (XmlNode platformNodeItem in platformNodeList)
{
var a = platformNodeItem.SelectNodes("labware");
if (platformNodeItem.SelectNodes("labware")==null|| platformNodeItem.SelectNodes("labware").Count==0)
{
continue;
}
string labwareId = platformNodeItem.SelectNodes("labware")[0].SelectSingleNode("labware_id").InnerText;
if(labwareId==null||labwareId.Equals(string.Empty))
{
continue;
}
Labware labWare = LabwareDB.GetLabware(labwareId);
if (labWare.labware_type_id == EnumManagement.GetEnumValue(ConsumableTypeEnum.TipsBox).ToString()) // 吸头盒
{
labwares.Add(labWare);
}
}
labwares = labwares.Distinct().ToList();
labwares = labwares.GroupBy(item => item.labware_id).Select(group => group.First()).ToList();
comboboxLabwareType.ItemsSource = labwares;
if (labwares.Count > 0)
{
comboboxLabwareType.SelectedIndex = 0;
}
#endregion
#region 设备状态
var deviceConfigResult = DeviceConfigDB.GetDeviceConfigListByProjectId(Shared.SoftwareInformation.software_information_id);
foreach (var item in deviceConfigResult)
{
DeviceStatusData deviceStatus = new DeviceStatusData();
deviceStatus.DeviceName = item.Name;
deviceStatus.DeviceId = item.EquipmentId;
deviceStatus.VirtualConnectionState = item.VirtualConnectionState == EnumManagement.GetEnumValue(VirtualConnectionStateEnum.Virtually) ? "是" : "否";
if (item.CommunicateType == EnumManagement.GetEnumValue(CommunicateTypeEnum.Socket)) //Socket
{
var checkConnectedResult = HxSocketParameterService.CheckConnected(item.Type, item.Ip, Convert.ToInt32(item.Port), item.EquipmentId);
if (checkConnectedResult != null && checkConnectedResult.status == StateEnum_Equipment.Completed)
{
deviceStatus.DeviceStatus = true;
}
else
{
deviceStatus.DeviceStatus = false;
}
}
m_deviceStatusList.Add(deviceStatus);
}
dgDeviceData.ItemsSource = m_deviceStatusList;
#endregion
}
catch (Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
}
}
#endregion
#region 清除缓存数据
///
/// 清除缓存数据
///
///
///
private void btnClearData_Click(object sender, RoutedEventArgs e)
{
if (m_lauchView != null)
{
// 清除Tip缓存数据
ControlCom.ClearTipData(m_lauchView);
}
string directoryBase = System.AppDomain.CurrentDomain.BaseDirectory;
string xmlFilePath = directoryBase + "Config\\" + "CurrentUsedTips.xml";
if (File.Exists(xmlFilePath))
{
File.Delete(xmlFilePath);
}
}
#endregion
#region 确定
///
/// 确定
///
///
///
private void btnOk_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
#endregion
#region 拖动窗体
///
/// 拖动窗体
///
///
///
private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
this.DragMove();
}
}
#endregion
#region 关闭页面
///
/// 关闭页面
///
///
///
private void btnClose_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
this.Close();
}
#endregion
#region ESC关闭画面
///
/// ESC关闭画面
///
///
///
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape)
{
this.DialogResult = false;
this.Close();
}
}
#endregion
#region 枪头类型选择变更
private void comboboxLabwareType_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (comboboxLabwareType.SelectedIndex < 0)
{
return;
}
// 根据选择的类型加载枪头数量
if (m_lauchView.xmlDocument != null)
{
Labware labwareT = (Labware)(comboboxLabwareType.SelectedItem as Labware);
XmlNode latticeXn = m_lauchView.xmlDocument.SelectSingleNode("root/env");
//XmlNodeList labwareNode = latticeXn.SelectNodes("platform[lattice_id=" + ControlCom.GetLatticeId(Convert.ToInt32(gripTransportData.srcPositionValue), false) + "]/labware");
//int countOfLabware = labwareNode.Count;
//var latticeDes = latticeXn.SelectSingleNode("platform[lattice_id=" + ControlCom.GetLatticeId(Convert.ToInt32(gripTransportData.srcPositionValue), false) + "]/labware[@id=" + (countOfLabware - gripTransportData.transportCount + 1).ToString() + "][labware_id='" + labwareT.labware_id + "']");
XmlNodeList platFormXmlNodeList = latticeXn.SelectNodes("platform");// [labware_id='" + labwareT.labware_id + "']");
int totalCountTip = ((int)labwareT.number_row * (int)labwareT.number_column);
int usedAllTotalTips = 0;
foreach (XmlNode p in platFormXmlNodeList)
{
XmlNodeList labwareNodeList = p.SelectNodes("labware");
int countOfLabware = labwareNodeList.Count;
XmlNode xn= p.SelectSingleNode("labware[@id=" + (countOfLabware).ToString() + "][labware_id='" + labwareT.labware_id + "']");
if (xn != null)
{
List lstResidueValidWells = ComUtility.GetValidWells(xn.SelectSingleNode("residueValidWells").InnerText);
usedAllTotalTips = usedAllTotalTips + (totalCountTip - lstResidueValidWells.Count());
}
}
tbkUsedCount.Text = usedAllTotalTips.ToString();
}
}
#endregion
#region 当前类型重置
///
/// 当前类型重置
///
///
///
private void btnResetCurrentTipType_Click(object sender, RoutedEventArgs e)
{
if(comboboxLabwareType.SelectedIndex<0)
{
ShowTip.ShowNotice("请选择枪头类型", InfoType.Warning);
return;
}
Labware labwareTip = (Labware)(comboboxLabwareType.SelectedItem as Labware);
if (m_lauchView != null)
{
// 清除Tip缓存数据
ControlCom.ClearTipData(m_lauchView, labwareTip);
}
string directoryBase = System.AppDomain.CurrentDomain.BaseDirectory;
string xmlFilePath = directoryBase + "Config\\" + "CurrentUsedTips.xml";
if (File.Exists(xmlFilePath))
{
File.Delete(xmlFilePath);
}
tbkUsedCount.Text = "0";
ShowTip.ShowNotice("重置成功", InfoType.Success);
}
#endregion
///
/// 全部重置
///
///
///
private void btnResetAllTipType_Click(object sender, RoutedEventArgs e)
{
if (m_lauchView != null)
{
// 清除Tip缓存数据
ControlCom.ClearTipData(m_lauchView);
}
string directoryBase = System.AppDomain.CurrentDomain.BaseDirectory;
string xmlFilePath = directoryBase + "Config\\" + "CurrentUsedTips.xml";
if (File.Exists(xmlFilePath))
{
File.Delete(xmlFilePath);
}
tbkUsedCount.Text = "0";
ShowTip.ShowNotice("重置成功", InfoType.Success);
}
}
}