Explorar el Código

添加解析log和校准测试功能

yhluo hace 4 meses
padre
commit
600b3ce47f

+ 28 - 55
UAS_MES_HGS/FunctionCode/Make/Make_ImeiCheck.cs

@@ -21,21 +21,15 @@ namespace UAS_MES_NEW.Make
 
         LogStringBuilder sql;
 
-        DataTable dt;
+        DataTable dt, info;
 
-        DataTable info;
+        bool isSnCheck = false;
 
-        string imei1 = "";
-
-        bool isImei1 = false;
-
-        string oErrorMessage = "";
+        string SN = "", omakeCode = "";
 
-        string SN = "";
+        string oMsid = "", oErrorMessage = "";
 
-        string omakeCode = "";
-
-        string oMsid = "";
+        string imei1 = "";
         public Make_ImeiCheck()
         {
             InitializeComponent();
@@ -44,10 +38,9 @@ namespace UAS_MES_NEW.Make
         private void Make_LabelCheck_Load(object sender, EventArgs e)
         {
             asc.controllInitializeSize(this);
-            //聚焦SN号
             sncode.Focus();
-            //打开界面提示用户:请输入SN 
             OperateResult.AppendText(">>请输入SN\n", Color.Black);
+
             sql = new LogStringBuilder();
             dh = SystemInf.dh;
             StepCount.StepCode = User.CurrentStepCode;
@@ -64,7 +57,6 @@ namespace UAS_MES_NEW.Make
 
         private void sncode_KeyDown(object sender, KeyEventArgs e)
         {
-            //判断是enter事件
             if (e.KeyCode == Keys.Enter)
             {
                 if (sncode.Text == "")
@@ -72,52 +64,33 @@ namespace UAS_MES_NEW.Make
                     OperateResult.AppendText("<<输入不能为空\n", Color.Red);
                     return;
                 }
-                //输入的是SN
-                if (!isImei1)
+
+                if (!isSnCheck)
                 {
                     OperateResult.AppendText("<<" + sncode.Text + "\n", Color.Black);
-                    //查询是否存在该ms_id
                     sql.Clear();
-                    sql.Append("select max(ms_id) ms_id from makeserial where ms_sncode ='" + sncode.Text + "'");
+                    /*sql.Append("select max(ms_id) ms_id from makeserial where ms_sncode ='" + sncode.Text + "'");*/
+                    sql.Append("select max(MAL_ID) ms_id from makeaddresslist where MAL_SN1_USER = '" + sncode.Text + "'");
                     dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                     if (dt.Rows.Count == 0 || dt.Rows[0]["ms_id"].ToString() == "")
                     {
-                        //SN错误,不存在
-                        //请输入SN
                         OperateResult.AppendText("<<SN错误,序列号" + sncode.Text + "不存在\n", Color.Red, sncode);
                         OperateResult.AppendText(">>请输入SN\n", Color.Black);
                     }
-                    //存在该SN号
                     else
                     {
-                        //根据该ms_id查询ms_imei1,ms_makecode信息
                         sql.Clear();
-                        sql.Append("select ms_sncode from  makeserial  where ms_id='" + dt.Rows[0]["ms_id"].ToString() + "'");
+                        /*sql.Append("select ms_sncode from  makeserial  where ms_id='" + dt.Rows[0]["ms_id"].ToString() + "'");*/
+                        sql.Append("select MAL_SNCODE from makeaddresslist where MAL_ID = '" + dt.Rows[0]["ms_id"].ToString() + "'");
                         info = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                         if (info.Rows.Count > 0)
                         {
-                            //用变量记录imei1和makecode
-                            imei1 = info.Rows[0]["ms_sncode"].ToString();
+                            imei1 = info.Rows[0]["MAL_SNCODE"].ToString();
                             SN = sncode.Text;
-                            //>>SN对应的SN号为:xxxxxxxxx
-                            //>> 请输入彩盒上的SN
                             OperateResult.AppendText("<<序列号" + sncode.Text + "对应的SN号为:" + imei1 + "\n", Color.Green);
                             OperateResult.AppendText(">>请输入彩盒上的SN\n", Color.Black, sncode);
-                            //设定要输入imei1
-                            isImei1 = true;
-                            ////不为null 并且不为””才继续
-                            //if (info.Rows[0]["ms_imei1"].ToString() == null || info.Rows[0]["ms_imei1"].ToString() == "")
-                            //{
-                            //    // SN对应的SN不存在
-                            //    //>> 请输入SN
-                            //    OperateResult.AppendText("<<序列号" + sncode.Text + "对应的SN不存在\n", Color.Red, sncode);
-                            //    OperateResult.AppendText(">>请输入SN\n", Color.Black);
-                            //}
-                            //else
-                            ////存在该imei信息
-                            //{
 
-                            //}
+                            isSnCheck = true;
                         }
                         else
                         {
@@ -129,25 +102,28 @@ namespace UAS_MES_NEW.Make
                         }
                     }
                 }
-                //输入的是imei1
                 else
                 {
                     OperateResult.AppendText("<<" + sncode.Text + "\n", Color.Black);
                     if (imei1 == sncode.Text)
                     {
-                        //说明输入的imei1对比一致
-                        //判断工序属性attribute
-                        if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage))
+                        OperateResult.AppendText("<<SN核对成功\n", Color.Green, sncode);
+                        OperateResult.AppendText(">>请输入SN\n", Color.Black);
+                        SetCheck set = new SetCheck("OK", Color.Green);
+                        BaseUtil.SetFormCenter(set);
+                        set.ShowDialog();
+
+                        #region
+                        /*if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage))
                         {
                             //判断序列号下一工序(CHECKSTEPSNANDMACODE)
                             if (LogicHandler.CheckStepSNAndMacode("", User.UserSourceCode, SN, User.UserCode, out omakeCode, out oMsid, out oErrorMessage))
                             {
                                 //调用  SETSTEPRESULT ,获取返回的工单号,
-                                if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, SN, "标签核对", "OK", User.UserCode, out oErrorMessage))
+                                if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, SN, "校验核对", "OK", User.UserCode, out oErrorMessage))
                                 {
                                     //提示正确返回时传递的信息
-                                    if (oErrorMessage.Contains("AFTERSUCCESS"))
-                                        OperateResult.AppendText(">>" + oErrorMessage + "\n");
+                                    if (oErrorMessage.Contains("AFTERSUCCESS")) OperateResult.AppendText(">>" + oErrorMessage + "\n");
                                     //根据工单号查询makecraftdetail 表中的 mcd_okqty 计数,剩余数为ma_qty - nvl(mcd_inqty,0),刷新页面中工单信息的显示
                                     sql.Clear();
                                     sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode,pr_detail,");
@@ -192,20 +168,17 @@ namespace UAS_MES_NEW.Make
                             //判定工序属性不通过
                             OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
                             recordResult(SN, DateTime.Now.ToString(), "失败");
-                        }
+                        }*/
+                        #endregion
                     }
-                    //说明比对不一致
                     else
                     {
-                        //清空imei1变量的值
                         imei1 = "";
-                        //SN核对失败
-                        //>> 请输入SN
                         OperateResult.AppendText(">>SN核对失败,不一致\n", Color.Red, sncode);
                         OperateResult.AppendText(">>请输入SN\n", Color.Black);
                     }
-                    //imei1校对结束,下次输入的是SN
-                    isImei1 = false;
+                    // 校对结束,下次输入SN
+                    isSnCheck = false;
                 }
             }
         }

+ 336 - 0
UAS_MES_HGS/FunctionCode/Make/Make_ParseLog.Designer.cs

@@ -0,0 +1,336 @@
+namespace UAS_MES_NEW.Make
+{
+    partial class Make_ParseLog
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.Device = new System.Windows.Forms.ComboBox();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.txtPath = new System.Windows.Forms.TextBox();
+            this.Choose = new System.Windows.Forms.Button();
+            this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
+            this.logList = new System.Windows.Forms.ListView();
+            this.sn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.time = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.fileName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.onWatch = new System.Windows.Forms.Button();
+            this.claerBtn = new System.Windows.Forms.Button();
+            this.LockMakeCode = new UAS_MES_NEW.CustomControl.CustomCheckBox.LockCheckBox();
+            this.ma_code = new UAS_MES_NEW.CustomControl.TextBoxWithIcon.MaCodeSearchTextBox();
+            this.allParse = new System.Windows.Forms.Button();
+            this.label3 = new System.Windows.Forms.Label();
+            this.panel2 = new System.Windows.Forms.Panel();
+            this.panel4 = new System.Windows.Forms.Panel();
+            this.lstFiles = new System.Windows.Forms.ListBox();
+            this.panel3 = new System.Windows.Forms.Panel();
+            this.openFileDialog2 = new System.Windows.Forms.OpenFileDialog();
+            this.panel1.SuspendLayout();
+            this.panel2.SuspendLayout();
+            this.panel4.SuspendLayout();
+            this.panel3.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // Device
+            // 
+            this.Device.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+            this.Device.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.Device.FormattingEnabled = true;
+            this.Device.Items.AddRange(new object[] {
+            "测试设备"});
+            this.Device.Location = new System.Drawing.Point(193, 88);
+            this.Device.Name = "Device";
+            this.Device.Size = new System.Drawing.Size(328, 32);
+            this.Device.TabIndex = 2;
+            this.Device.SelectedIndexChanged += new System.EventHandler(this.Device_SelectedIndexChanged);
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Font = new System.Drawing.Font("微软雅黑", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label1.Location = new System.Drawing.Point(61, 86);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(101, 30);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "设备选择";
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Font = new System.Drawing.Font("微软雅黑", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label2.Location = new System.Drawing.Point(61, 159);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(123, 30);
+            this.label2.TabIndex = 4;
+            this.label2.Text = "文件夹选择";
+            // 
+            // txtPath
+            // 
+            this.txtPath.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.txtPath.Location = new System.Drawing.Point(193, 154);
+            this.txtPath.Name = "txtPath";
+            this.txtPath.Size = new System.Drawing.Size(474, 39);
+            this.txtPath.TabIndex = 3;
+            // 
+            // Choose
+            // 
+            this.Choose.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.Choose.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.Choose.Location = new System.Drawing.Point(693, 152);
+            this.Choose.Name = "Choose";
+            this.Choose.Size = new System.Drawing.Size(122, 38);
+            this.Choose.TabIndex = 4;
+            this.Choose.Text = "选择";
+            this.Choose.UseVisualStyleBackColor = true;
+            this.Choose.Click += new System.EventHandler(this.Choose_Click);
+            // 
+            // openFileDialog1
+            // 
+            this.openFileDialog1.FileName = "openFileDialog1";
+            this.openFileDialog1.RestoreDirectory = true;
+            // 
+            // logList
+            // 
+            this.logList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.sn,
+            this.time,
+            this.fileName});
+            this.logList.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.logList.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.logList.HideSelection = false;
+            this.logList.Location = new System.Drawing.Point(0, 0);
+            this.logList.Name = "logList";
+            this.logList.Size = new System.Drawing.Size(326, 530);
+            this.logList.TabIndex = 6;
+            this.logList.UseCompatibleStateImageBehavior = false;
+            this.logList.View = System.Windows.Forms.View.Details;
+            this.logList.Visible = false;
+            // 
+            // sn
+            // 
+            this.sn.Text = "序号";
+            this.sn.Width = 55;
+            // 
+            // time
+            // 
+            this.time.Text = "时间";
+            this.time.Width = 220;
+            // 
+            // fileName
+            // 
+            this.fileName.Text = "文件名称";
+            this.fileName.Width = 380;
+            // 
+            // panel1
+            // 
+            this.panel1.BackColor = System.Drawing.SystemColors.Control;
+            this.panel1.Controls.Add(this.onWatch);
+            this.panel1.Controls.Add(this.claerBtn);
+            this.panel1.Controls.Add(this.LockMakeCode);
+            this.panel1.Controls.Add(this.ma_code);
+            this.panel1.Controls.Add(this.allParse);
+            this.panel1.Controls.Add(this.label3);
+            this.panel1.Controls.Add(this.Device);
+            this.panel1.Controls.Add(this.label1);
+            this.panel1.Controls.Add(this.Choose);
+            this.panel1.Controls.Add(this.label2);
+            this.panel1.Controls.Add(this.txtPath);
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.panel1.Location = new System.Drawing.Point(0, 0);
+            this.panel1.Name = "panel1";
+            this.panel1.Size = new System.Drawing.Size(1304, 296);
+            this.panel1.TabIndex = 7;
+            // 
+            // onWatch
+            // 
+            this.onWatch.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.onWatch.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.onWatch.Location = new System.Drawing.Point(66, 232);
+            this.onWatch.Name = "onWatch";
+            this.onWatch.Size = new System.Drawing.Size(122, 38);
+            this.onWatch.TabIndex = 8;
+            this.onWatch.Text = "开启解析";
+            this.onWatch.UseVisualStyleBackColor = true;
+            this.onWatch.Click += new System.EventHandler(this.onWatch_Click);
+            // 
+            // claerBtn
+            // 
+            this.claerBtn.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.claerBtn.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.claerBtn.Location = new System.Drawing.Point(391, 231);
+            this.claerBtn.Name = "claerBtn";
+            this.claerBtn.Size = new System.Drawing.Size(122, 38);
+            this.claerBtn.TabIndex = 7;
+            this.claerBtn.Text = "清除";
+            this.claerBtn.UseVisualStyleBackColor = true;
+            this.claerBtn.Click += new System.EventHandler(this.claerBtn_Click);
+            // 
+            // LockMakeCode
+            // 
+            this.LockMakeCode.AutoSize = true;
+            this.LockMakeCode.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.LockMakeCode.LeaveEvent = false;
+            this.LockMakeCode.Location = new System.Drawing.Point(520, 25);
+            this.LockMakeCode.Margin = new System.Windows.Forms.Padding(4);
+            this.LockMakeCode.Name = "LockMakeCode";
+            this.LockMakeCode.Size = new System.Drawing.Size(72, 28);
+            this.LockMakeCode.TabIndex = 1;
+            this.LockMakeCode.Text = "锁定";
+            this.LockMakeCode.UseVisualStyleBackColor = true;
+            // 
+            // ma_code
+            // 
+            this.ma_code.AllPower = null;
+            this.ma_code.BackColor = System.Drawing.SystemColors.Control;
+            this.ma_code.Caller = null;
+            this.ma_code.Condition = null;
+            this.ma_code.DBTitle = null;
+            this.ma_code.FormName = null;
+            this.ma_code.Location = new System.Drawing.Point(193, 25);
+            this.ma_code.Margin = new System.Windows.Forms.Padding(4);
+            this.ma_code.Name = "ma_code";
+            this.ma_code.Power = null;
+            this.ma_code.ReturnData = null;
+            this.ma_code.SelectField = null;
+            this.ma_code.SetValueField = null;
+            this.ma_code.Size = new System.Drawing.Size(224, 32);
+            this.ma_code.TabIndex = 0;
+            this.ma_code.TableName = null;
+            this.ma_code.TextBoxEnable = true;
+            // 
+            // allParse
+            // 
+            this.allParse.Cursor = System.Windows.Forms.Cursors.Hand;
+            this.allParse.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.allParse.Location = new System.Drawing.Point(230, 232);
+            this.allParse.Name = "allParse";
+            this.allParse.Size = new System.Drawing.Size(122, 38);
+            this.allParse.TabIndex = 5;
+            this.allParse.Text = "批量解析";
+            this.allParse.UseVisualStyleBackColor = true;
+            this.allParse.Click += new System.EventHandler(this.allParse_Click);
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Font = new System.Drawing.Font("微软雅黑", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.label3.Location = new System.Drawing.Point(61, 23);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(57, 30);
+            this.label3.TabIndex = 6;
+            this.label3.Text = "工单";
+            // 
+            // panel2
+            // 
+            this.panel2.Controls.Add(this.panel4);
+            this.panel2.Controls.Add(this.panel3);
+            this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel2.Location = new System.Drawing.Point(0, 296);
+            this.panel2.Name = "panel2";
+            this.panel2.Size = new System.Drawing.Size(1304, 530);
+            this.panel2.TabIndex = 8;
+            // 
+            // panel4
+            // 
+            this.panel4.Controls.Add(this.lstFiles);
+            this.panel4.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.panel4.Location = new System.Drawing.Point(0, 0);
+            this.panel4.Name = "panel4";
+            this.panel4.Size = new System.Drawing.Size(978, 530);
+            this.panel4.TabIndex = 2;
+            // 
+            // lstFiles
+            // 
+            this.lstFiles.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.lstFiles.FormattingEnabled = true;
+            this.lstFiles.ItemHeight = 18;
+            this.lstFiles.Location = new System.Drawing.Point(0, 0);
+            this.lstFiles.Name = "lstFiles";
+            this.lstFiles.Size = new System.Drawing.Size(978, 530);
+            this.lstFiles.TabIndex = 0;
+            // 
+            // panel3
+            // 
+            this.panel3.Controls.Add(this.logList);
+            this.panel3.Dock = System.Windows.Forms.DockStyle.Right;
+            this.panel3.Location = new System.Drawing.Point(978, 0);
+            this.panel3.Name = "panel3";
+            this.panel3.Size = new System.Drawing.Size(326, 530);
+            this.panel3.TabIndex = 1;
+            // 
+            // openFileDialog2
+            // 
+            this.openFileDialog2.FileName = "openFileDialog2";
+            // 
+            // Make_ParseLog
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.SystemColors.Window;
+            this.ClientSize = new System.Drawing.Size(1304, 826);
+            this.Controls.Add(this.panel2);
+            this.Controls.Add(this.panel1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+            this.Name = "Make_ParseLog";
+            this.Text = "Make_ParseLog";
+            this.Load += new System.EventHandler(this.Make_ParseLog_Load);
+            this.panel1.ResumeLayout(false);
+            this.panel1.PerformLayout();
+            this.panel2.ResumeLayout(false);
+            this.panel4.ResumeLayout(false);
+            this.panel3.ResumeLayout(false);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.ComboBox Device;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox txtPath;
+        private System.Windows.Forms.Button Choose;
+        private System.Windows.Forms.OpenFileDialog openFileDialog1;
+        private System.Windows.Forms.ListView logList;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Panel panel2;
+        private System.Windows.Forms.ColumnHeader time;
+        private System.Windows.Forms.ColumnHeader fileName;
+        private System.Windows.Forms.ColumnHeader sn;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Button allParse;
+        private CustomControl.TextBoxWithIcon.MaCodeSearchTextBox ma_code;
+        private CustomControl.CustomCheckBox.LockCheckBox LockMakeCode;
+        private System.Windows.Forms.OpenFileDialog openFileDialog2;
+        private System.Windows.Forms.ListBox lstFiles;
+        private System.Windows.Forms.Button claerBtn;
+        private System.Windows.Forms.Panel panel4;
+        private System.Windows.Forms.Panel panel3;
+        private System.Windows.Forms.Button onWatch;
+    }
+}

+ 521 - 0
UAS_MES_HGS/FunctionCode/Make/Make_ParseLog.cs

@@ -0,0 +1,521 @@
+using BarTender;
+using DevExpress.Utils.OAuth.Provider;
+using DevExpress.Xpo.Logger;
+using DevExpress.XtraEditors.Controls;
+using DevExpress.XtraExport;
+using DevExpress.XtraPrinting;
+using NPOI.SS.Formula.Functions;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Security;
+using System.Security.AccessControl;
+using System.Security.Principal;
+using System.Text;
+using System.Threading.Tasks;
+using System.Web.Services.Description;
+using System.Web.UI.WebControls;
+using System.Windows.Forms;
+using System.Xml;
+using UAS_MES_NEW.CustomControl.ButtonUtil;
+using UAS_MES_NEW.CustomControl.TextBoxWithIcon;
+using UAS_MES_NEW.DataOperate;
+using UAS_MES_NEW.Entity;
+using UAS_MES_NEW.PublicMethod;
+using static DevExpress.Xpo.DB.DataStoreLongrunnersWatch;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.Tab;
+
+namespace UAS_MES_NEW.Make
+{
+    public partial class Make_ParseLog : Form
+    {
+        public Make_ParseLog()
+        {
+            InitializeComponent();
+        }
+
+        FileSystemWatcher watcher;
+
+        LogStringBuilder sql = new LogStringBuilder();
+        DataTable Dbfind;
+        DataTable dt;
+
+        DataHelper dh;
+        string currFileType = "",equiType = "";
+
+        string SN, omakeCode, oMsid, oErrorMessage = "";
+        List<string> fileList = new List<string>();
+
+        Timer formsTimer;
+        string outXmlFilePath;
+
+        private void Make_ParseLog_Load(object sender, EventArgs e)
+        {
+            dh = SystemInf.dh;
+
+            fileList.Add("C:\\Users\\MI\\Desktop");
+
+            formsTimer = new Timer();
+            formsTimer.Interval = 10000;
+            formsTimer.Tick += timer1_Tick;
+            //outXmlFilePath = "D:\\JANETSSR";
+
+            watcher = new FileSystemWatcher();
+            watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;
+            watcher.Created += OnFileCreated;
+            /*watcher.Changed += OnFileChanged;
+            watcher.Deleted += OnFileChanged;
+            watcher.Renamed += OnFileChanged;*/
+
+            //设置锁定工单
+            LockMakeCode.GetMakeCodeCtl(ma_code);
+            ma_code.SetLockCheckBox(LockMakeCode);
+            //工单号放大镜配置
+            ma_code.TableName = "make left join product on ma_prodcode=pr_code";
+            ma_code.SelectField = "ma_code # 工单号,pr_code # 产品编号,pr_detail # 产品名称";
+            ma_code.FormName = Name;
+            ma_code.SetValueField = new string[] { "ma_code", "pr_code", "pr_detail" };
+            ma_code.Condition = "ma_statuscode='STARTED'";
+            ma_code.DbChange += Ma_code_DbChange;
+        }
+
+        private void Ma_code_DbChange(object sender, EventArgs e)
+        {
+            Dbfind = ma_code.ReturnData;
+            BaseUtil.SetFormValue(this.Controls, Dbfind);
+            //获取工单的其他信息
+            sql.Clear();
+            sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode as pr_code ,pr_detail,");
+            sql.Append("pr_spec,ma_qty - nvl(mcd_inqty, 0) mcd_remainqty from make left join makecraftdetail on ");
+            sql.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'");
+            dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
+            if (dt.Rows.Count > 0)
+            {
+                BaseUtil.SetFormValue(this.Controls, dt);
+            }
+        }
+
+        private void Device_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (Device.SelectedIndex == -1) return;
+
+            switch (Device.SelectedIndex)
+            {
+                case 0:
+                    currFileType = "Log";
+                    equiType = "设备";
+                    break;
+            }
+            if (string.IsNullOrEmpty(ma_code.Text))
+            {
+                Device.SelectedIndex = -1;
+                txtPath.Text = "";
+                MessageBox.Show(this.ParentForm, "请选择工单", "提示");
+                return;
+            }
+
+            txtPath.Text = fileList[Device.SelectedIndex];
+            txtPath.Focus();
+            txtPath.SelectAll();
+            ma_code.Enabled = true;
+            txtPath.Enabled = false;
+        }
+
+        private void Choose_Click(object sender, EventArgs e)
+        {
+            FolderBrowserDialog dialog = new FolderBrowserDialog();
+            switch (Device.SelectedIndex)
+            {
+                case 0:
+                    dialog.Description = "请选择读取劲拓SPI设备文件夹";
+                    currFileType = "Log";
+                    equiType = "设备";
+                    break;
+            }
+            if (dialog.ShowDialog() == DialogResult.OK)
+            {
+                txtPath.Text = dialog.SelectedPath;
+                txtPath.Enabled = false;
+                Device.Enabled = false;
+                watcher.EnableRaisingEvents = false;
+            }
+        }
+
+        private void claerBtn_Click(object sender, EventArgs e)
+        {
+            lstFiles.Items.Clear();
+        }
+
+        private void allParse_Click(object sender, EventArgs e)
+        {
+            if (Device.SelectedIndex == 0)
+            {
+                if (string.IsNullOrEmpty(ma_code.Text))
+                {
+                    MessageBox.Show(this.ParentForm, "请选择工单", "提示");
+                    return;
+                }
+            }
+            if (Device.SelectedIndex == -1)
+            {
+                Device.Focus();
+                Device.SelectAll();
+                MessageBox.Show(this.ParentForm, "请选择设备", "提示");
+                return;
+            }
+            if (String.IsNullOrEmpty(txtPath.Text))
+            {
+                txtPath.Focus();
+                txtPath.SelectAll();
+                return;
+            }
+            string[] txtFiles = Directory.GetFiles(txtPath.Text, $"*.{currFileType}");
+            if (txtFiles.Length == 0)
+            {
+                LogMessage($"当前{txtPath.Text},没有{equiType}设备输出的{currFileType.ToLower()}文件");
+                return;
+            }
+            RefreshFileList();
+        }
+
+        private void onWatch_Click(object sender, EventArgs e)
+        {
+            if (Device.SelectedIndex == 0)
+            {
+                if (string.IsNullOrEmpty(ma_code.Text))
+                {
+                    MessageBox.Show(this.ParentForm, "请选择工单", "提示");
+                    return;
+                }
+            }
+            if (Device.SelectedIndex == -1)
+            {
+                Device.Focus();
+                Device.SelectAll();
+                MessageBox.Show(this.ParentForm, "请选择设备", "提示");
+                return;
+            }
+            if (String.IsNullOrEmpty(txtPath.Text))
+            {
+                txtPath.Focus();
+                txtPath.SelectAll();
+                return;
+            }
+            try
+            {
+                watcher.Path = txtPath.Text;
+                watcher.Filter = $"*.{currFileType}";
+
+                //formsTimer.Start();
+                //formsTimer.Stop();
+
+                if (onWatch.Text == "开启解析")
+                {
+                    watcher.EnableRaisingEvents = true;
+                    onWatch.Text = "关闭解析";
+                }
+                else
+                {
+                    watcher.EnableRaisingEvents = false;
+                    onWatch.Text = "开启解析";
+                }
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(this.ParentForm, ex.Message, "警告");
+            }
+        }
+
+        private void timer1_Tick(object sender, EventArgs e)
+        {
+            try
+            {
+                sql.Clear();
+                sql.Append($@"SELECT dd_date,dd_name,dd_status,dd_id FROM devicedata WHERE dd_status = 0");
+                dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
+                if (dt.Rows.Count > 0)
+                {
+                    string currentDate = DateTime.Now.ToString("yyyyMMddHHmmss");
+                    string currentDate1 = DateTime.Now.ToString("yyyy-MM-dd");
+                    XmlWriterSettings settings = new XmlWriterSettings
+                    {
+                        Indent = true
+                        //,Encoding = System.Text.Encoding.UTF8
+                    };
+                    foreach (DataRow dr in dt.Rows)
+                    {
+                        #region
+                        /*var hasFileAry = Directory.GetFiles(outXmlFilePath, $"*.{currFileType}");
+                        string xmlName;
+                        if (hasFileAry.Length > 0)
+                        {
+                            var lastFile = Directory.GetFiles(outXmlFilePath).Select(f => new FileInfo(f))
+                                            .Where(f => f.CreationTime.Date == DateTime.Today)
+                                            .OrderByDescending(f => f.CreationTime).FirstOrDefault().Name;
+
+                            string seqNumStr = lastFile.Substring(lastFile.Length - 7, 3);
+                            string fileSeqNum = (int.Parse(seqNumStr) + 1).ToString().PadLeft(seqNumStr.Length, '0'); ;
+                            xmlName = $"1.08_{currentDate}_{currentDate}{fileSeqNum}__RequestTotalProduction.xml";
+                        }
+                        else
+                        {
+                            xmlName = $"1.08_{currentDate}_{currentDate}001__RequestTotalProduction.xml";
+                        }*/
+                        #endregion
+                        string xmlName = $"1.08__{currentDate1}T101505_{currentDate}001__RequestTotalProduction.xml";
+                        string fullPath = Path.Combine(outXmlFilePath, xmlName);
+
+                        using (XmlWriter writer = XmlWriter.Create(fullPath, settings))
+                        {
+                            writer.WriteStartDocument();
+                            writer.WriteStartElement("RequestTotalProductionInfo");
+                            writer.WriteAttributeString("MachineName", dr["dd_name"].ToString());
+                            writer.WriteEndElement();
+                            writer.WriteEndDocument();
+                        }
+
+                        sql.Clear();
+                        sql.Append($"UPDATE devicedata SET dd_status = -1 WHERE dd_name = '{dr["dd_name"].ToString()}' and dd_status = 0");
+                        dh.ExecuteSql(sql.GetString(), "update");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogMessage($"写入指令文件异常: {ex.Message}");
+            }
+        }
+
+        private void OnFileCreated(object sender, FileSystemEventArgs e)
+        {
+            RefreshFileList();
+        }
+
+        private void OnFileChanged(object sender, FileSystemEventArgs e)
+        {
+            if (e.ChangeType == WatcherChangeTypes.Changed)
+            {
+                RefreshFileList();
+            }
+        }
+
+        private void RefreshFileList()
+        {
+            if (lstFiles.InvokeRequired)
+            {
+                lstFiles.Invoke(new Action(RefreshFileList));
+                lstFiles.BeginInvoke(new Action(RefreshFileList));
+                return;
+            }
+
+            try
+            {
+                if (!Directory.Exists(txtPath.Text))
+                {
+                    LogMessage($"目录不存在: {txtPath.Text}");
+                    return;
+                }
+
+                string[] txtFiles = Directory.GetFiles(txtPath.Text, $"*.{currFileType}");
+                if (txtFiles.Length == 0)
+                {
+                    return;
+                }
+                else
+                {
+                    foreach (string file in txtFiles)
+                    {
+                        if (!File.Exists(file))
+                        {
+                            LogMessage($"文件不存在: {file}");
+                        }
+
+                        string outFileMsg = CheckFileAccess(file);
+                        if (outFileMsg != "OK")
+                        {
+                            LogMessage(outFileMsg);
+                            continue;
+                        }
+
+                        if (Device.SelectedIndex == 0) // 测试设备
+                        {
+                            ParseLogInsert(file);
+                        }
+                        
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogMessage($"Error: 解析文件列表失败: {ex.Message}");
+            }
+        }
+
+        private void ParseLogInsert(string PathName)
+        {
+            try
+            {
+                StreamReader SR = File.OpenText(PathName);
+                string restOfStream = SR.ReadToEnd();
+                SR.Close();
+                SR.Dispose();
+
+                List<Log> logArr = new List<Log>() { };
+                string[] lines = restOfStream.Split(new string[] { "\r\n" }, StringSplitOptions.None);
+                int fileNum = string.IsNullOrEmpty(lines[lines.Length - 1]) ? lines.Length - 1 : lines.Length;
+                foreach (var item in lines)
+                {
+                    if (string.IsNullOrEmpty(item)) continue;
+                    string[] currItem = item.Split(',');
+                    if(equiType == "设备")
+                    {
+                        string[] resultArr = currItem[0].Split('=');
+                        Log itemLog = new Log()
+                        {
+                            SN = currItem[1],
+                            Result = resultArr[1],
+                        };
+                        logArr.Add(itemLog);
+                    }
+                }
+                if (InsertDb(logArr, PathName, fileNum))
+                {
+                    if (ConsoleLog(restOfStream, PathName))
+                    {
+                        File.WriteAllText(PathName, string.Empty);
+                        File.Delete(PathName);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogMessage($"Error: 文件 {PathName}, {ex.Message}");
+            }
+        }
+
+        private bool InsertDb(List<Log> logs, string PathName,int fileNum)
+        {
+            try
+            {
+                StringBuilder sql = new StringBuilder();
+                List<string> param = new List<string>() { };
+                foreach (var item in logs)
+                {
+                    if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, User.UserSourceCode, item.SN, User.UserCode, out omakeCode, out oMsid, out oErrorMessage))
+                    {
+                        if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, item.SN, "日志解析", "OK", User.UserCode, out oErrorMessage))
+                        {
+                            string sqlStr = $@"select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode,pr_detail,ma_qty - nvl(mcd_okqty, 0) remain_qty 
+                                        from make left join makecraftdetail on mcd_maid=ma_id left join product on pr_code = ma_prodcode 
+                                        where ma_code='" + omakeCode + "' and mcd_stepcode='" + User.CurrentStepCode + "'";
+                            dt = (DataTable)dh.ExecuteSql(sqlStr, "select");
+                            BaseUtil.SetFormValue(Controls, dt);
+                            //记录操作日志
+                            LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "日志解析", "日志解析成功", item.SN, "");
+
+                            param.Add(item.SN);
+                            string res = "";
+                            param.Add(res);
+                            string[] paramList = param.ToArray();
+                            dh.CallProcedure("cs_insert_testrejects", ref paramList);
+                            param.Clear();
+                            LogMessage($"文件: {PathName},共{fileNum}条记录已过站解析");
+
+                            if (logs.IndexOf(item) == logs.Count - 1)
+                            {
+                                return true;
+                            }
+                        }
+                        else
+                        {
+                            LogMessage($"处理过站NG:{oErrorMessage}");
+                            break;
+                        }
+                    }
+                    else
+                    {
+                        LogMessage($"过站核对NG:{oErrorMessage}");
+                    }
+                }
+                return false;
+            }
+            catch (Exception ex)
+            {
+                LogMessage($"处理解析写入error:{ex.Message}");
+                return false;
+            }
+        }
+
+        private bool ConsoleLog(string Content, string PathName)
+        {
+            try
+            {
+                string sourceDir = Path.GetDirectoryName(PathName);
+                string newFolderName = "Logs";
+                string newFolderPath = Path.Combine(sourceDir, newFolderName);
+
+                if (!Directory.Exists(newFolderPath))
+                {
+                    Directory.CreateDirectory(newFolderPath);
+                }
+                string newFileName = "Log_" + Path.GetFileName(PathName);
+                string newFilePath = Path.Combine(newFolderPath, newFileName);
+
+                File.AppendAllText(newFilePath, Content + Environment.NewLine);
+                return true;
+            }
+            catch (Exception ex)
+            {
+                MessageBox.Show(this.ParentForm, ex.Message, "警告");
+                return false;
+            }
+        }
+
+        private void LogMessage(string message)
+        {
+            if (lstFiles.InvokeRequired)
+            {
+                lstFiles.Invoke(new Action<string>(LogMessage), message);
+                return;
+            }
+            lstFiles.Items.Add($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] {message}");
+            lstFiles.TopIndex = lstFiles.Items.Count - 1;
+        }
+
+        public string CheckFileAccess(string filePath)
+        {
+            try
+            {
+                using (FileStream fileStream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.None))
+                {
+                    return "OK";
+                }
+            }
+            catch (IOException ex)
+            {
+                return "文件被占用: " + ex.Message;
+            }
+            catch (UnauthorizedAccessException ex)
+            {
+                return "权限不足,无法访问文件: " + ex.Message;
+            }
+            catch (Exception ex)
+            {
+                return ex.Message;
+            }
+        }
+
+
+        private class Log
+        {
+            public string SN { set; get; }
+
+            public string Result { set; get; }
+        }
+    }
+}

+ 126 - 0
UAS_MES_HGS/FunctionCode/Make/Make_ParseLog.resx

@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 23</value>
+  </metadata>
+  <metadata name="openFileDialog2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>224, 23</value>
+  </metadata>
+</root>

+ 11 - 2
UAS_MES_HGS/UAS_MES_HGS.csproj

@@ -621,6 +621,12 @@
     <Compile Include="FunctionCode\Make\Make_GetTestFileData.Designer.cs">
       <DependentUpon>Make_GetTestFileData.cs</DependentUpon>
     </Compile>
+    <Compile Include="FunctionCode\Make\Make_ParseLog.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="FunctionCode\Make\Make_ParseLog.Designer.cs">
+      <DependentUpon>Make_ParseLog.cs</DependentUpon>
+    </Compile>
     <Compile Include="FunctionCode\Make\Make_ReadWriteInfo.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -1403,6 +1409,9 @@
     <EmbeddedResource Include="FunctionCode\Make\Make_GetTestFileData.resx">
       <DependentUpon>Make_GetTestFileData.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="FunctionCode\Make\Make_ParseLog.resx">
+      <DependentUpon>Make_ParseLog.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="FunctionCode\Make\Make_ReadWriteInfo.resx">
       <DependentUpon>Make_ReadWriteInfo.cs</DependentUpon>
     </EmbeddedResource>
@@ -1906,11 +1915,11 @@
   <PropertyGroup>
     <PostBuildEvent>xcopy  $(ProjectDir)Resources $(ProjectDir)$(OutDir)Resources  /s /e /k /i /y</PostBuildEvent>
   </PropertyGroup>
-  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
+  <!-- <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
   <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
     <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
     <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
-  </Target>
+  </Target> -->
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">