schangxiang@126.com
2025-11-04 ca398287db3f5ea01f03aac4a85edb13b28100a6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
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 加载文件数据
        /// <summary>
        /// 加载文件数据
        /// </summary>
        /// <param name="methodName"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        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
    }
}