using DataEntity.Share;
using DriverLib.Engine;
using HxSocket;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Windows;
using System.Windows.Media;
using System.Xml;
using XCommon;
using XCommon.Log;
using XCore;
using XHandler.Class;
using XHandler.Controls.Run.Com;
using XHandler.View;
using XHandler.View.MethodProperty;
using XImagingXhandler.XDAL;
namespace XHandler.Controls
{
public class VariableImportControl
{
VariableImportBll variableImportBll = new VariableImportBll();
string strCurrentCulture = "";
public RunWnd launchView = null;
public VariableImportControl(string strCurrentCulture)
{
this.strCurrentCulture = strCurrentCulture;
}
#region 执行文件导入变量,返回结果字符串
public bool ExecuteVariableImport(XmlNode methodNode)
{
bool result = true;
string methodName = methodNode.SelectSingleNode("name").InnerText;
if (launchView._cancelSource.IsCancellationRequested)
{
result = false;
return result;
}
if (strCurrentCulture.Equals("zh-CN"))
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strStart.ToString());
}
else
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】> Xhandler: 【" + methodName + "】start:");
}
#region 数据准备
string filePath = methodNode.SelectSingleNode("filePath").InnerText;
MethodVariableImport methodVariableImport = variableImportBll.GenerateMethodVariableImportDataByXmlNode(methodNode);//获取移液表
methodVariableImport.transferDataTable = GetFileData(methodName, methodNode.SelectSingleNode("filePath").InnerText);
#endregion
if(methodVariableImport.transferDataTable!=null)
{
foreach(DataRow dataRow in methodVariableImport.transferDataTable.Rows)
{
Variable variable = new Variable();
variable.variablename = dataRow["paraName"].ToString();
variable.variableinitval = dataRow["paraValue"].ToString();
variable.variablecurval = variable.variableinitval;
//排除重复
var query=launchView.gloadVariable.FirstOrDefault(x => x.variablename.Equals(variable.variablename));
if (query != null)
{
if (strCurrentCulture.Equals("zh-CN"))
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.VariableImportResource.strVariableImportNameRepeat.ToString());
LoggerRunHelper.InfoLog("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.VariableImportResource.strVariableImportNameRepeat.ToString());
}
else
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】Variable name is repeat.");
LoggerRunHelper.InfoLog("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】Variable name is repeat.");
}
return false;
}
else
{
launchView.gloadVariable.Push(variable);
}
}
}
if (strCurrentCulture.Equals("zh-CN"))
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strEnd.ToString());
LoggerRunHelper.InfoLog("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】" + Properties.MachineRunResource.strEnd.ToString());
}
else
{
launchView.AddLogs("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】end.");
LoggerRunHelper.InfoLog("【" + DateTime.Now.ToString("HH:mm:ss:fff") + "】>Xhandler: 【" + methodName + "】end.");
}
return result;
}
#endregion
#region 加载文件数据
///
/// 加载文件数据
///
///
///
///
private DataTable GetFileData(string methodName, string file)
{
DataTable transferData = null;
if (!File.Exists(file))
{
if (strCurrentCulture.Equals("zh-CN"))
{
launchView.AddLogs($"【{DateTime.Now.ToString("HH:mm:ss:fff")}】> Xhandler: 【{methodName}】{Properties.TransferFileResource.strFileNotExists} {file}");
}
else
{
launchView.AddLogs($"【{DateTime.Now.ToString("HH:mm:ss:fff")}】> Xhandler: 【{methodName}】file not exists: {file}");
}
return transferData;
}
string ext = Path.GetExtension(file);
if (string.Compare(ext, ".csv", true) == 0)
{
transferData = ExcelAndCsvHelper.GetDataTableFromCsvFile(file, false);
}
else
{
transferData = ExcelAndCsvHelper.GetDataTableFromExcelFile(file, true);
}
return transferData;
}
#endregion
}
}