using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using XImagingXhandler.XDAL; using System.Data; using XCoreBLL.Resource; using System.Xml; using XCommon; using DataEntity.Share; using DataRWDAL; using DataEntity; namespace XCoreBLL { public class FileMoveLiquidBll { WellFileCalc wellFileCalc = new WellFileCalc(); #region 获取DataTable的表头名称数据集合 /// /// 获取DataTable的表头名称数据集合 /// /// /// public List GetTransferFileHeaders(DataTable dataTable) { List transferFileHeaders = new List(); TransferFileHeader transferFileHeader = new TransferFileHeader(); transferFileHeader.header_id = "0"; transferFileHeader.header_name = "请选择"; transferFileHeaders.Add(transferFileHeader); for (int i = 0; i < dataTable.Columns.Count; i++) { transferFileHeader = new TransferFileHeader(); transferFileHeader.header_id = dataTable.Columns[i].ColumnName; transferFileHeader.header_name = dataTable.Columns[i].ColumnName; transferFileHeaders.Add(transferFileHeader); } return transferFileHeaders; } #endregion public MethodFileMoveLiquid GenerateMethodFileMoveLiquidDataByXmlNode(XmlNode xmlNode) { MethodFileMoveLiquid methodFileMoveLiquid = new MethodFileMoveLiquid(); methodFileMoveLiquid.isrun = xmlNode.SelectSingleNode("isrun").InnerText; methodFileMoveLiquid.status = xmlNode.SelectSingleNode("status").InnerText; methodFileMoveLiquid.name = xmlNode.SelectSingleNode("name").InnerText; methodFileMoveLiquid.comment = xmlNode.SelectSingleNode("comment").InnerText; methodFileMoveLiquid.label = xmlNode.SelectSingleNode("label").InnerText; methodFileMoveLiquid.strIndex = xmlNode.SelectSingleNode("strIndex").InnerText; methodFileMoveLiquid.armText = xmlNode.SelectSingleNode("arm/text").InnerText; methodFileMoveLiquid.armValue = xmlNode.SelectSingleNode("arm/value").InnerText; methodFileMoveLiquid.headType = xmlNode.SelectSingleNode("headType").InnerText; methodFileMoveLiquid.labwaretipText = xmlNode.SelectSingleNode("labwaretip/text").InnerText; methodFileMoveLiquid.labwaretipValue = xmlNode.SelectSingleNode("labwaretip/value").InnerText; string strchs = xmlNode.SelectSingleNode("channels").InnerText; methodFileMoveLiquid.channels = ComUtility.GetChannelsFromXml(strchs); methodFileMoveLiquid.filePath = xmlNode.SelectSingleNode("filePath").InnerText; methodFileMoveLiquid.beginLine = Convert.ToInt32(xmlNode.SelectSingleNode("beginLine").InnerText); methodFileMoveLiquid.transferDataTable = GenerateTransferFileDataTable(xmlNode); methodFileMoveLiquid.sourceLabware = xmlNode.SelectSingleNode("sourceLabware").InnerText; methodFileMoveLiquid.sourceWell = xmlNode.SelectSingleNode("sourceWell").InnerText; methodFileMoveLiquid.aspVolume = xmlNode.SelectSingleNode("aspVolume").InnerText; methodFileMoveLiquid.aspOpenLid = xmlNode.SelectSingleNode("aspOpenLid").InnerText; methodFileMoveLiquid.aspCloseLid = xmlNode.SelectSingleNode("aspCloseLid").InnerText; methodFileMoveLiquid.destinationLabware = xmlNode.SelectSingleNode("destinationLabware").InnerText; methodFileMoveLiquid.destinationWell = xmlNode.SelectSingleNode("destinationWell").InnerText; methodFileMoveLiquid.dpsOpenLid = xmlNode.SelectSingleNode("dpsOpenLid").InnerText; methodFileMoveLiquid.dpsCloseLid = xmlNode.SelectSingleNode("dpsCloseLid").InnerText; methodFileMoveLiquid.dpsVolume = xmlNode.SelectSingleNode("dpsVolume").InnerText; methodFileMoveLiquid.tipSet = xmlNode.SelectSingleNode("tipSet").InnerText; methodFileMoveLiquid.changeTipsMode = Convert.ToInt32(xmlNode.SelectSingleNode("changeTipsMode").InnerText); methodFileMoveLiquid.changeToTipText = xmlNode.SelectSingleNode("changeToTipText").InnerText; methodFileMoveLiquid.changeToTipValue = Convert.ToInt32(xmlNode.SelectSingleNode("changeToTipValue").InnerText); methodFileMoveLiquid.jump0Volume = xmlNode.SelectSingleNode("jump0Volume").InnerText.ToLower() == "true" ? true : false; methodFileMoveLiquid.liquididText = xmlNode.SelectSingleNode("liquidid/text").InnerText; methodFileMoveLiquid.liquididValue = xmlNode.SelectSingleNode("liquidid/value").InnerText; methodFileMoveLiquid.liquidrangeidText = xmlNode.SelectSingleNode("liquidrangeid/text").InnerText; methodFileMoveLiquid.liquidrangeidValue = xmlNode.SelectSingleNode("liquidrangeid/value").InnerText; methodFileMoveLiquid.liquidpidText = xmlNode.SelectSingleNode("liquidpid/text").InnerText; methodFileMoveLiquid.liquidpidValue = xmlNode.SelectSingleNode("liquidpid/value").InnerText; //吸液前混合 methodFileMoveLiquid.baspMix = xmlNode.SelectSingleNode("baspMix").InnerText.ToLower() == "true" ? true : false; methodFileMoveLiquid.aspmixvolume = Convert.ToDouble(xmlNode.SelectSingleNode("aspmixvolume").InnerText); methodFileMoveLiquid.aspmixcount = Convert.ToInt32(xmlNode.SelectSingleNode("aspmixcount").InnerText); methodFileMoveLiquid.aspmixAspiratePositionText = xmlNode.SelectSingleNode("aspmixAspiratePosition/text").InnerText; methodFileMoveLiquid.aspmixAspiratePositionValue = Convert.ToInt32(xmlNode.SelectSingleNode("aspmixAspiratePosition/value").InnerText); methodFileMoveLiquid.aspmixAspirateDistance = Convert.ToDouble(xmlNode.SelectSingleNode("aspmixAspirateDistance").InnerText); methodFileMoveLiquid.aspmixAspirateSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("aspmixAspirateSpeed").InnerText); methodFileMoveLiquid.aspmixDispensePositionText = xmlNode.SelectSingleNode("aspmixDispensePosition/text").InnerText; methodFileMoveLiquid.aspmixDispensePositionValue = Convert.ToInt32(xmlNode.SelectSingleNode("aspmixDispensePosition/value").InnerText); methodFileMoveLiquid.aspmixDispenseDistance = Convert.ToDouble(xmlNode.SelectSingleNode("aspmixDispenseDistance").InnerText); methodFileMoveLiquid.aspmixDispenseSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("aspmixDispenseSpeed").InnerText); //排液后混合 methodFileMoveLiquid.bdpsMix = xmlNode.SelectSingleNode("bdpsMix").InnerText.ToLower() == "true" ? true : false; methodFileMoveLiquid.dpsmixvolume = Convert.ToDouble(xmlNode.SelectSingleNode("dpsmixvolume").InnerText); methodFileMoveLiquid.dpsmixcount = Convert.ToInt32(xmlNode.SelectSingleNode("dpsmixcount").InnerText); methodFileMoveLiquid.dpsmixAspiratePositionText = xmlNode.SelectSingleNode("dpsmixAspiratePosition/text").InnerText; methodFileMoveLiquid.dpsmixAspiratePositionValue = Convert.ToInt32(xmlNode.SelectSingleNode("dpsmixAspiratePosition/value").InnerText); methodFileMoveLiquid.dpsmixAspirateDistance = Convert.ToDouble(xmlNode.SelectSingleNode("dpsmixAspirateDistance").InnerText); methodFileMoveLiquid.dpsmixAspirateSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("dpsmixAspirateSpeed").InnerText); methodFileMoveLiquid.dpsmixDispensePositionText = xmlNode.SelectSingleNode("dpsmixDispensePosition/text").InnerText; methodFileMoveLiquid.dpsmixDispensePositionValue = Convert.ToInt32(xmlNode.SelectSingleNode("dpsmixDispensePosition/value").InnerText); methodFileMoveLiquid.dpsmixDispenseDistance = Convert.ToDouble(xmlNode.SelectSingleNode("dpsmixDispenseDistance").InnerText); methodFileMoveLiquid.dpsmixDispenseSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("dpsmixDispenseSpeed").InnerText); methodFileMoveLiquid.enableLiquidSensor = xmlNode.SelectSingleNode("enableLiquidSensor").InnerText.ToLower() == "true" ? true : false; methodFileMoveLiquid.liquidSensorCount = Convert.ToInt32(xmlNode.SelectSingleNode("liquidSensorCount").InnerText); methodFileMoveLiquid.liquidSensorDistance = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorDistance").InnerText); methodFileMoveLiquid.liquidSensorEndDistance = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorEndDistance").InnerText); methodFileMoveLiquid.liquidSensorSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorSpeed").InnerText); methodFileMoveLiquid.liquidSensorRadio = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorRadio").InnerText); methodFileMoveLiquid.liquidSensorDisIdText = xmlNode.SelectSingleNode("liquidSensorDisId/text").InnerText; methodFileMoveLiquid.liquidSensorDisIdValue = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorDisId/value").InnerText); methodFileMoveLiquid.enableLiquidFollow = xmlNode.SelectSingleNode("enableLiquidFollow").InnerText.ToLower() == "true" ? true : false; methodFileMoveLiquid.liquidFollowType = Convert.ToInt32(xmlNode.SelectSingleNode("liquidFollowType/value").InnerText); methodFileMoveLiquid.liquidFollowTypeName = xmlNode.SelectSingleNode("liquidFollowType/text").InnerText; methodFileMoveLiquid.liquidFollowSpeed = Convert.ToDouble(xmlNode.SelectSingleNode("liquidFollowSpeed").InnerText); methodFileMoveLiquid.liquidFollowDistance = Convert.ToDouble(xmlNode.SelectSingleNode("liquidFollowDistance").InnerText); methodFileMoveLiquid.liquidFollowArea = Convert.ToDouble(xmlNode.SelectSingleNode("liquidFollowArea").InnerText); methodFileMoveLiquid.enableMixFollow = xmlNode.SelectSingleNode("enableMixFollow").InnerText.ToLower() == "true" ? true : false; methodFileMoveLiquid.enableSensorBlock = xmlNode.SelectSingleNode("enableSensorBlock").InnerText.ToLower() == "true" ? true : false; //methodFileMoveLiquid.liquidSensorBlockDistance = Convert.ToDouble(xmlNode.SelectSingleNode("liquidSensorBlockDistance").InnerText); methodFileMoveLiquid.aspirateBlockDisIdText = xmlNode.SelectSingleNode("aspirateBlockDisId/text").InnerText; methodFileMoveLiquid.aspirateBlockDisIdValue = Convert.ToInt32(xmlNode.SelectSingleNode("aspirateBlockDisId/value").InnerText); methodFileMoveLiquid.dispenseBlockDisIdText = xmlNode.SelectSingleNode("dispenseBlockDisId/text").InnerText; methodFileMoveLiquid.dispenseBlockDisIdValue = Convert.ToInt32(xmlNode.SelectSingleNode("dispenseBlockDisId/value").InnerText); methodFileMoveLiquid.aspirateAirDisIdText = xmlNode.SelectSingleNode("aspirateAirDisId/text").InnerText; methodFileMoveLiquid.aspirateAirDisIdValue = Convert.ToInt32(xmlNode.SelectSingleNode("aspirateAirDisId/value").InnerText); return methodFileMoveLiquid; } public DataTable GenerateTransferFileDataTable(XmlNode xmlNode) { XmlNode xmlNode2 = xmlNode.SelectSingleNode("transferDataTable"); DataTable dataTable = new DataTable(); foreach (XmlNode childNode in xmlNode2.ChildNodes) { DataColumn dataColumn = new DataColumn(); dataColumn.ColumnName = childNode.Attributes["columnname"].Value.ToString(); dataTable.Columns.Add(dataColumn); } if (xmlNode2.ChildNodes[0] != null) { for (int i = 0; i < xmlNode2.ChildNodes[0].ChildNodes.Count; i++) { DataRow dataRow = dataTable.NewRow(); for (int j = 0; j < xmlNode2.ChildNodes.Count; j++) { dataRow[j] = xmlNode2.ChildNodes[j].ChildNodes[i].InnerText; } dataTable.Rows.Add(dataRow); } } return dataTable; } } }