using DataEntity.Share;
|
using DriverLib.Engine;
|
using HxEnum;
|
using System;
|
using System.Collections.Generic;
|
using System.Collections.ObjectModel;
|
using System.Data;
|
using System.Xml;
|
using XCommon;
|
using XCore;
|
using XCoreBLL.Resource;
|
using XImagingXhandler.XDAL;
|
|
namespace XCoreBLL
|
{
|
public class CutGumFileBll
|
{
|
string strCurrentCulture = "";
|
public CutGumFileBll()
|
{
|
strCurrentCulture = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
|
}
|
|
public MethodElectroFile GenerateMethodCoatingFileDataByXmlNode(XmlNode xmlNode)
|
{
|
MethodElectroFile methodElectroFile = new MethodElectroFile();
|
|
methodElectroFile.isrun = xmlNode.SelectSingleNode("isrun").InnerText;
|
methodElectroFile.status = xmlNode.SelectSingleNode("status").InnerText;
|
methodElectroFile.name = xmlNode.SelectSingleNode("name").InnerText;
|
methodElectroFile.label = xmlNode.SelectSingleNode("label").InnerText;
|
methodElectroFile.strIndex = xmlNode.SelectSingleNode("strIndex").InnerText;
|
methodElectroFile.armText = xmlNode.SelectSingleNode("arm/text").InnerText;
|
methodElectroFile.armValue = xmlNode.SelectSingleNode("arm/value").InnerText;
|
methodElectroFile.labwaretipText = xmlNode.SelectSingleNode("labwaretip/text").InnerText;
|
methodElectroFile.labwaretipValue = xmlNode.SelectSingleNode("labwaretip/value").InnerText;
|
|
string strchs = xmlNode.SelectSingleNode("channels").InnerText;
|
methodElectroFile.channels = ComUtility.GetChannelsFromXml(strchs);
|
|
methodElectroFile.filePath = xmlNode.SelectSingleNode("filePath").InnerText;
|
methodElectroFile.beginLine = Convert.ToInt32(xmlNode.SelectSingleNode("beginLine").InnerText);
|
//到原始路径下,重新获取一下数据表
|
|
methodElectroFile.transferDataTable = GenerateTransferFileDataTable(xmlNode);
|
methodElectroFile.sourceLabware = xmlNode.SelectSingleNode("sourceLabware").InnerText;
|
methodElectroFile.sourceWell = xmlNode.SelectSingleNode("sourceWell").InnerText;
|
methodElectroFile.destinationLabware = xmlNode.SelectSingleNode("destinationLabware").InnerText;
|
methodElectroFile.destinationWell = xmlNode.SelectSingleNode("destinationWell").InnerText;
|
methodElectroFile.liquididText = xmlNode.SelectSingleNode("liquidid/text").InnerText;
|
methodElectroFile.liquididValue = xmlNode.SelectSingleNode("liquidid/value").InnerText;
|
methodElectroFile.liquidrangeidText = xmlNode.SelectSingleNode("liquidrangeid/text").InnerText;
|
methodElectroFile.liquidrangeidValue = xmlNode.SelectSingleNode("liquidrangeid/value").InnerText;
|
methodElectroFile.liquidpidText = xmlNode.SelectSingleNode("liquidpid/text").InnerText;
|
methodElectroFile.liquidpidValue = xmlNode.SelectSingleNode("liquidpid/value").InnerText;
|
|
return methodElectroFile;
|
}
|
|
|
public DataTable GenerateTransferFileDataTable(XmlNode xmlNode)
|
{
|
XmlNode xmlNodeList = xmlNode.SelectSingleNode("transferDataTable");
|
|
DataTable dt = new DataTable();
|
|
foreach (XmlNode xn in xmlNodeList.ChildNodes)// 列名称
|
{
|
DataColumn dc = new DataColumn();
|
dc.ColumnName = xn.Attributes["columnname"].Value.ToString();
|
dt.Columns.Add(dc);
|
}
|
|
for (int j = 0; j < xmlNodeList.ChildNodes[0].ChildNodes.Count; j++)//行
|
{
|
DataRow dr = dt.NewRow();
|
for (int i = 0; i < xmlNodeList.ChildNodes.Count; i++)//列
|
{
|
dr[i] = xmlNodeList.ChildNodes[i].ChildNodes[j].InnerText;
|
}
|
|
dt.Rows.Add(dr);
|
}
|
return dt;
|
}
|
|
#region 检查所有属性设置是否满足要求
|
/// <summary>
|
/// 检查所有属性设置是否满足要求
|
/// </summary>
|
/// <param name="methodAspirate">切胶文件属性对象</param>
|
/// <returns>检查所有属性设置是否满足要求</returns>
|
public MethodPropertyInfo CheckProperty(MethodCoatingFile methodCoatingFile)
|
{
|
MethodPropertyInfo methodPropertyInfo = new MethodPropertyInfo();
|
|
if (strCurrentCulture == "zh-CN")
|
{
|
methodPropertyInfo.property_tips_info = CoatingFileResourceCHS.tipsInfo.ToString();
|
|
if (methodCoatingFile.filePath == null || methodCoatingFile.filePath == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceCHS.filePath.ToString();
|
}
|
if (methodCoatingFile.transferDataTable == null || methodCoatingFile.transferDataTable.Rows.Count == 0)
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceCHS.transferDataTable.ToString();
|
}
|
if (methodCoatingFile.sourceLabware == null || methodCoatingFile.sourceLabware == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceCHS.sourceLabware.ToString();
|
}
|
if (methodCoatingFile.sourceWell == null || methodCoatingFile.sourceWell == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceCHS.sourceWell.ToString();
|
}
|
if (methodCoatingFile.destinationLabware == null || methodCoatingFile.destinationLabware == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceCHS.destinationLabware.ToString();
|
}
|
if (methodCoatingFile.destinationWell == null || methodCoatingFile.destinationWell == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceCHS.destinationWell.ToString();
|
}
|
if (methodCoatingFile.bacteriaText == null || methodCoatingFile.bacteriaText == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceCHS.bacteriaText.ToString();
|
}
|
}
|
else if (strCurrentCulture == "en-US")
|
{
|
methodPropertyInfo.property_tips_info = CoatingFileResourceENU.tipsInfo.ToString();
|
|
if (methodCoatingFile.filePath == null || methodCoatingFile.filePath == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceENU.filePath.ToString();
|
}
|
if (methodCoatingFile.transferDataTable == null || methodCoatingFile.transferDataTable.Rows.Count == 0)
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceENU.transferDataTable.ToString();
|
}
|
if (methodCoatingFile.sourceLabware == null || methodCoatingFile.sourceLabware == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceENU.sourceLabware.ToString();
|
}
|
if (methodCoatingFile.sourceWell == null || methodCoatingFile.sourceWell == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceENU.sourceWell.ToString();
|
}
|
if (methodCoatingFile.destinationLabware == null || methodCoatingFile.destinationLabware == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceENU.destinationLabware.ToString();
|
}
|
if (methodCoatingFile.destinationWell == null || methodCoatingFile.destinationWell == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceENU.destinationWell.ToString();
|
}
|
if (methodCoatingFile.bacteriaText == null || methodCoatingFile.bacteriaText == "")
|
{
|
methodPropertyInfo.property_name_info = CoatingFileResourceENU.bacteriaText.ToString();
|
}
|
}
|
return methodPropertyInfo;
|
}
|
#endregion
|
|
#region 执行切胶文件,返回结果对象
|
/// <summary>
|
/// 执行切胶文件,返回结果对象
|
/// </summary>
|
/// <param name="CutGumMParam">切胶参数对象</param>
|
/// <param name="isSimulator">是否虚拟运行</param>
|
/// <returns>挑选执行结果</returns>
|
public HxResult ExecuteCutGum(CutGumMParam cutGumMParam, bool isSimulator)
|
{
|
HxResult ret = new HxResult();
|
if (!isSimulator)
|
{
|
ret = MethodAction.Instance.CutGum(cutGumMParam);
|
}
|
else
|
{
|
ret.Result = ResultType.Success;
|
}
|
|
return ret;
|
}
|
#endregion
|
|
#region 执行排胶文件,返回结果对象
|
/// <summary>
|
/// 执行排胶文件,返回结果对象
|
/// </summary>
|
/// <param name="SpitGumMParam">排胶参数对象</param>
|
/// <param name="isSimulator">是否虚拟运行</param>
|
/// <returns>挑选执行结果</returns>
|
public HxResult ExecuteSpitGum(SpitGumMParam spitGumMParam, bool isSimulator)
|
{
|
HxResult ret = new HxResult();
|
if (!isSimulator)
|
{
|
ret = MethodAction.Instance.SpitGum(spitGumMParam);
|
}
|
else
|
{
|
ret.Result = ResultType.Success;
|
}
|
|
return ret;
|
}
|
#endregion
|
|
#region 获取切胶通道数量
|
/// <summary>
|
/// 获取切胶通道数量
|
/// </summary>
|
/// <param name="softwareDeviceNumber"></param>
|
/// <returns></returns>
|
public List<DropdownName> GenerateCoatingCountOfChannel(string softwareDeviceNumber)
|
{
|
List<DropdownName> dropdownNames = new List<DropdownName>();
|
int channelCnt = Shared.ChannelCount;
|
|
#region Del
|
//if (softwareDeviceNumber.Equals(DeviceCategory.DeviceChoice))
|
//{
|
// channelCnt = 6;
|
//}
|
//else if (softwareDeviceNumber.Equals(DeviceCategory.DeviceLiteChoice) ||
|
// softwareDeviceNumber.Equals(DeviceCategory.DeviceT200))
|
//{
|
// channelCnt = 1;
|
//}
|
#endregion
|
|
for (int i = 1; i <= channelCnt; i++)
|
{
|
DropdownName dropdownName = new DropdownName();
|
dropdownName.dropdown_id = i.ToString();
|
dropdownName.dropdown_name = i.ToString();
|
dropdownNames.Add(dropdownName);
|
}
|
return dropdownNames;
|
}
|
#endregion
|
|
#region 把ObservableCollection<ManualChoiceData>转化为DataTable
|
public DataTable ManualChoiceDataTypeChangeToDataTable(ObservableCollection<ManualChoiceData> manualChoiceDatas)
|
{
|
DataTable dataTable = new DataTable();
|
DataColumn dc = new DataColumn();
|
dc.ColumnName = "SourcePlate";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "SourceBarcode";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "SourcePlateWell";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "TargetPlate";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "TargetBarcode";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "TargetPlateWell";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "CutAction";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "ChangeTip";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "IsNewPlateBatch";
|
dataTable.Columns.Add(dc);
|
|
dc = new DataColumn();
|
dc.ColumnName = "IsPlateLastWell";
|
dataTable.Columns.Add(dc);
|
|
if (manualChoiceDatas != null)
|
{
|
foreach (ManualChoiceData manualChoiceData in manualChoiceDatas)
|
{
|
DataRow dr = dataTable.NewRow();
|
dr["SourcePlate"] = manualChoiceData.sourceplate;
|
dr["SourceBarcode"] = manualChoiceData.sourceplate_num;
|
dr["SourcePlateWell"] = manualChoiceData.machine_coordinate;
|
dr["TargetPlate"] = manualChoiceData.targetplate;
|
dr["TargetBarcode"] = manualChoiceData.targetplate_num;
|
dr["TargetPlateWell"] = manualChoiceData.targetplate_well;
|
dr["CutAction"] = 1;
|
dr["ChangeTip"] = 1;
|
dr["IsNewPlateBatch"] = manualChoiceData.is_new_plate_batch;
|
dr["IsPlateLastWell"] = manualChoiceData.is_plate_last_well;
|
dataTable.Rows.Add(dr);
|
}
|
}
|
|
return dataTable;
|
}
|
#endregion
|
}
|
}
|