using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Data;
using XCore;
using XHandler.View;
using XImagingXhandler.XDAL;
using System.IO;
using XHandler.Class;
using XCommon.Log;
namespace XHandler.Controls
{
public class DataExportControl
{
string strCurrentCulture = "";
public RunWnd launchView = null;
DataExportBll dataExportBll = new DataExportBll();
///
/// 构造函数
///
public DataExportControl(string strCurrentCulture)
{
this.strCurrentCulture = strCurrentCulture;
}
#region 执行吸液,返回结果字符串
///
/// 执行吸液,返回结果字符串
///
/// 装载方法属性节点对象
/// 最终的移液数据表
/// 0:连接谁;1:仿真
///
public bool ExecuteDataExport( XmlNode methodNode, DataTable dataTable,bool isSimulator)
{
bool result = true;
try
{
if (launchView._cancelSource.IsCancellationRequested)
{
result = false;
return result;
}
if (strCurrentCulture.Equals("zh-CN"))
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + methodNode.SelectSingleNode("name").InnerText + "】" + Properties.MachineRunResource.strStart.ToString());
}
else
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + methodNode.SelectSingleNode("name").InnerText + "】start:");
}
#region 数据准备
string name = methodNode.SelectSingleNode("name").InnerText;
string filePath = methodNode.SelectSingleNode("filePath").InnerText;
MethodDataExport methodDataExport = dataExportBll.GenerateMethodDataExport(methodNode);
List reportColumns = methodDataExport.reportColumns;
string filePostfix = methodNode.SelectSingleNode("filePostfix").InnerText;
string fileName = methodNode.SelectSingleNode("fileName").InnerText;
List dropdownNames = dataExportBll.GenerateReportColumn();
#endregion
#region 数据验证
if (string.IsNullOrEmpty(fileName))
{
if (strCurrentCulture.Equals("zh-CN"))
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + name + "】" + Properties.DataExportResource.strFileNameEmpty.ToString());
}
else
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + name + "】:" + "file name is empty.");
}
result = false;
return result;
}
if(reportColumns.Count==0)
{
if (strCurrentCulture.Equals("zh-CN"))
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + name + "】" + Properties.DataExportResource.strColumnEmpty.ToString());
}
else
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + name + "】:" + "file column don't set.");
}
result = false;
return result;
}
if (string.IsNullOrEmpty(filePath))
{
if (strCurrentCulture.Equals("zh-CN"))
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + name + "】" + Properties.DataExportResource.strFilePathEmpty.ToString());
}
else
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + name + "】:" + "file path don't set.");
}
result = false;
return result;
}
#endregion
#region 执行
DataTable dt = new DataTable();
if(dataTable != null)
{
//创建表结构
foreach(DataColumn c in dataTable.Columns)
{
foreach (ReportColumn r in reportColumns)
{
DataColumn d = new DataColumn();
d.ColumnName = r.reportcolumn_sname;
if (r.reportcolumn_name == dropdownNames[0].dropdown_name && c.ColumnName == r.reportcolumn_name)//表Id
{
dt.Columns.Add(d);
break;
}
if (r.reportcolumn_name== dropdownNames[1].dropdown_name&&c.ColumnName==r.reportcolumn_name)//来源板名称
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[2].dropdown_name && c.ColumnName == r.reportcolumn_name)//来源板barcode
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[3].dropdown_name && c.ColumnName == r.reportcolumn_name)//来源板孔位
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[4].dropdown_name && c.ColumnName == r.reportcolumn_name)//目标板名称
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[5].dropdown_name && c.ColumnName == r.reportcolumn_name)//目标板barcode
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[6].dropdown_name && c.ColumnName == r.reportcolumn_name)//目标板孔位
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[7].dropdown_name && c.ColumnName == r.reportcolumn_name)//移液体积
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[8].dropdown_name && c.ColumnName == r.reportcolumn_name)//移液开始时间
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[9].dropdown_name && c.ColumnName == r.reportcolumn_name)//移液完成时间
{
dt.Columns.Add(d);
break;
}
if (c.ColumnName == dropdownNames[10].dropdown_name && c.ColumnName == r.reportcolumn_name)//移液完成结果
{
dt.Columns.Add(d);
break;
}
}
}
//复制表数据
for(int i=0;iXhandler: 【" + methodNode.SelectSingleNode("name").InnerText + "】" + Properties.MachineRunResource.strProgress.ToString() + Properties.MachineRunResource.strEnd.ToString());
}
else
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodNode.SelectSingleNode("name").InnerText + "】progress: complete;");
}
}
#endregion
}
catch(Exception ex)
{
LoggerHelper.ErrorLog("ERROR:", ex);
result = false;
}
return result;
}
#endregion
}
}