#010 修复解析入库,分发,和前端界面显示逻辑,增加 解析前判断是否已经处理过,增加clms授权检测
This commit is contained in:
+12
-13
@@ -257,20 +257,19 @@ namespace BaseFunction
|
||||
{
|
||||
try
|
||||
{
|
||||
if (rleMessage != null)
|
||||
{
|
||||
//rleMessage.Text = str;
|
||||
//if (rleMessage != null)
|
||||
//{
|
||||
// //rleMessage.Text = str;
|
||||
|
||||
if (rleMessage != null && rleMessage.ElementTree != null && rleMessage.ElementTree.Control.InvokeRequired)
|
||||
{
|
||||
rleMessage.ElementTree.Control.Invoke(new Action(() => rleMessage.Text = str));
|
||||
}
|
||||
else if (rleMessage != null)
|
||||
{
|
||||
rleMessage.Text = str;
|
||||
}
|
||||
|
||||
}
|
||||
// if (rleMessage != null && rleMessage.ElementTree != null && rleMessage.ElementTree.Control.InvokeRequired)
|
||||
// {
|
||||
// rleMessage.ElementTree.Control.Invoke(new Action(() => rleMessage.Text = str));
|
||||
// }
|
||||
// else if (rleMessage != null)
|
||||
// {
|
||||
// rleMessage.Text = str;
|
||||
// }
|
||||
//}
|
||||
if (str.Contains("警告") || str.ToUpper().Contains("WARN"))
|
||||
{
|
||||
NLogger.Warn(str);
|
||||
|
||||
@@ -8,12 +8,12 @@ using Telerik.WinControls.UI;
|
||||
|
||||
namespace NSAnalysis
|
||||
{
|
||||
public partial class FAddTolerance : Telerik.WinControls.UI.ShapedForm
|
||||
public partial class FAddConfig : Telerik.WinControls.UI.ShapedForm
|
||||
{
|
||||
#region 全局变量
|
||||
|
||||
private CjlrDAL tmdal = new CjlrDAL();
|
||||
private FToleranceSetup gFTS;
|
||||
private FConfigSetup gFTS;
|
||||
|
||||
#endregion 全局变量
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace NSAnalysis
|
||||
|
||||
#endregion 鼠标事件
|
||||
|
||||
public FAddTolerance(FToleranceSetup fts)
|
||||
public FAddConfig(FConfigSetup fts)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
namespace NSAnalysis
|
||||
{
|
||||
partial class FAddTolerance
|
||||
partial class FAddConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
@@ -28,7 +28,7 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FAddTolerance));
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FAddConfig));
|
||||
Telerik.WinControls.UI.RadListDataItem radListDataItem4 = new Telerik.WinControls.UI.RadListDataItem();
|
||||
Telerik.WinControls.UI.RadListDataItem radListDataItem5 = new Telerik.WinControls.UI.RadListDataItem();
|
||||
Telerik.WinControls.UI.RadListDataItem radListDataItem6 = new Telerik.WinControls.UI.RadListDataItem();
|
||||
@@ -9,7 +9,7 @@ using Telerik.WinControls.UI;
|
||||
|
||||
namespace NSAnalysis
|
||||
{
|
||||
public partial class FToleranceSetup : Telerik.WinControls.UI.ShapedForm
|
||||
public partial class FConfigSetup : Telerik.WinControls.UI.ShapedForm
|
||||
{
|
||||
private CjlrDAL tmdal = new CjlrDAL();
|
||||
public int idgvSelectRowNumber = 0;
|
||||
@@ -30,7 +30,7 @@ namespace NSAnalysis
|
||||
|
||||
#endregion 鼠标事件
|
||||
|
||||
public FToleranceSetup()
|
||||
public FConfigSetup()
|
||||
{
|
||||
InitializeComponent();
|
||||
InitStatusComboBox();
|
||||
@@ -39,7 +39,7 @@ namespace NSAnalysis
|
||||
|
||||
private void FToleranceSetup_Load(object sender, EventArgs e)
|
||||
{
|
||||
dgvTolList.ColumnHeadersDefaultCellStyle.Font = new Font("Segoe UI", 10, FontStyle.Regular);
|
||||
dgvTolList.ColumnHeadersDefaultCellStyle.Font = new Font("Segoe UI", 8, FontStyle.Regular);
|
||||
lpcAddTol.labPicture.Click += lpcAddTol_Click;
|
||||
lpcAddTol.labText.Click += lpcAddTol_Click;
|
||||
rtbnSearch_Click(null, null);
|
||||
@@ -117,7 +117,7 @@ namespace NSAnalysis
|
||||
|
||||
private void lpcAddTol_Click(object sender, EventArgs e)
|
||||
{
|
||||
FAddTolerance fat = new FAddTolerance(this);
|
||||
FAddConfig fat = new FAddConfig(this);
|
||||
fat.ShowDialog(this);
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ namespace NSAnalysis
|
||||
if (buttonText == "修改" || buttonText == "Edit")
|
||||
{
|
||||
idgvSelectRowNumber = e.RowIndex;
|
||||
FEditTolerance sfeditcnc = new FEditTolerance(this);
|
||||
FEditConfig sfeditcnc = new FEditConfig(this);
|
||||
sfeditcnc.ShowDialog();
|
||||
}
|
||||
}
|
||||
Generated
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace NSAnalysis
|
||||
{
|
||||
partial class FToleranceSetup
|
||||
partial class FConfigSetup
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
@@ -30,7 +30,7 @@ namespace NSAnalysis
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FToleranceSetup));
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FConfigSetup));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
@@ -7,13 +7,13 @@ using Telerik.WinControls.UI;
|
||||
|
||||
namespace NSAnalysis
|
||||
{
|
||||
public partial class FEditTolerance : Telerik.WinControls.UI.ShapedForm
|
||||
public partial class FEditConfig : Telerik.WinControls.UI.ShapedForm
|
||||
{
|
||||
#region 全局变量
|
||||
|
||||
private CjlrDAL tmdal = new CjlrDAL();
|
||||
|
||||
private FToleranceSetup gFTS;
|
||||
private FConfigSetup gFTS;
|
||||
|
||||
#endregion 全局变量
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace NSAnalysis
|
||||
|
||||
#endregion 鼠标事件
|
||||
|
||||
public FEditTolerance(FToleranceSetup fts)
|
||||
public FEditConfig(FConfigSetup fts)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
namespace NSAnalysis
|
||||
{
|
||||
partial class FEditTolerance
|
||||
partial class FEditConfig
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
@@ -28,7 +28,7 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FEditTolerance));
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FEditConfig));
|
||||
Telerik.WinControls.UI.RadListDataItem radListDataItem6 = new Telerik.WinControls.UI.RadListDataItem();
|
||||
Telerik.WinControls.UI.RadListDataItem radListDataItem7 = new Telerik.WinControls.UI.RadListDataItem();
|
||||
Telerik.WinControls.UI.RadListDataItem radListDataItem1 = new Telerik.WinControls.UI.RadListDataItem();
|
||||
@@ -25,41 +25,6 @@ namespace NSAnalysis
|
||||
|
||||
#endregion RadButton鼠标事件
|
||||
|
||||
private string strSection = "Chery";
|
||||
|
||||
private void LoadSoftwareSetup()
|
||||
{
|
||||
#region Load Software Setup
|
||||
|
||||
rtbIOTAddress.Text = ConfigDfn.strIOTAddress;
|
||||
rtbCarTypebyVIN.Text = ConfigDfn.strIOTCarTypeAddress;
|
||||
|
||||
//rtbVWUploadPath.Text = ConfigDfn.strUploadPath;
|
||||
//rtbUploadPath2.Text = ConfigDfn.strUploadPath2;
|
||||
|
||||
if (ConfigDfn.iStartIOTFlag == 1)
|
||||
{
|
||||
cbStartIOT.Checked = true;
|
||||
rtbIOTAddress.Enabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cbStartIOT.Checked = false;
|
||||
rtbIOTAddress.Enabled = false;
|
||||
}
|
||||
|
||||
if (ConfigDfn.iAnalysisCSVFlag == 1)
|
||||
{
|
||||
cbAnalysisCSV.Checked = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cbAnalysisCSV.Checked = false;
|
||||
}
|
||||
|
||||
#endregion Load Software Setup
|
||||
}
|
||||
|
||||
public FSoftwareSetup()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -67,47 +32,17 @@ namespace NSAnalysis
|
||||
|
||||
private void FSoftwareSetup_Load(object sender, EventArgs e)
|
||||
{
|
||||
LoadSoftwareSetup();
|
||||
// 根据加载的全局变量,设置控件状态
|
||||
rtbReportPath.Text = ConfigDfn.strReportPath.Trim();
|
||||
|
||||
cbFileSorter.Checked = ConfigDfn.iEnableSort; //文件排序功能
|
||||
cbAnalysisCSV.Checked = ConfigDfn.iAnalysisCSVFlag == 1 ? true : false; //分析结果导出CSV功能
|
||||
}
|
||||
|
||||
private void rtbnSaveSetup_Click(object sender, EventArgs e)
|
||||
{
|
||||
//FileIni.WriteString(ConfigDfn.strConfigFile, strSection, "tavascanUploadPath", rtbVWUploadPath.Text.Trim());
|
||||
//FileIni.WriteString(ConfigDfn.strConfigFile, strSection, "blacklabelUploadPath", rtbUploadPath2.Text.Trim());
|
||||
//FileIni.WriteString(ConfigDfn.strConfigFile, strSection, "Level2Times", rtbTolPercentage.Text.Trim());
|
||||
//FileIni.WriteString(ConfigDfn.strConfigFile, strSection, "Level3Times", rtbLevel3.Text.Trim());
|
||||
|
||||
if (cbStartIOT.Checked)
|
||||
{
|
||||
FileIni.WriteString(ConfigDfn.strConfigFile, strSection, "StartIOTFlag", 1.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
FileIni.WriteString(ConfigDfn.strConfigFile, strSection, "StartIOTFlag", 0.ToString());
|
||||
}
|
||||
|
||||
if (cbAnalysisCSV.Checked)
|
||||
{
|
||||
FileIni.WriteString(ConfigDfn.strConfigFile, strSection, "AnalysisCSVFlag", 1.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
FileIni.WriteString(ConfigDfn.strConfigFile, strSection, "AnalysisCSVFlag", 0.ToString());
|
||||
}
|
||||
|
||||
MessageBox.Show("保存设置完成,请重启软件,参数即可生效! ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void rbtnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void rbtnReportCSV2_Click(object sender, EventArgs e)
|
||||
private void btn_browse_Click(object sender, EventArgs e) //浏览
|
||||
{
|
||||
FolderBrowserDialog mFolder = new FolderBrowserDialog();
|
||||
mFolder.Description = "请选择奇瑞报告存放的路径:";
|
||||
mFolder.Description = "请选择报告存放的路径:";
|
||||
mFolder.ShowDialog();
|
||||
if (Directory.Exists(mFolder.SelectedPath))
|
||||
{
|
||||
@@ -115,16 +50,23 @@ namespace NSAnalysis
|
||||
}
|
||||
}
|
||||
|
||||
private void cbStartIOT_CheckedChanged(object sender, EventArgs e)
|
||||
private void rtbnSaveSetup_Click(object sender, EventArgs e) //保存
|
||||
{
|
||||
if (cbStartIOT.Checked)
|
||||
{
|
||||
rtbIOTAddress.Enabled = true;
|
||||
//获取控件状态
|
||||
ConfigDfn.iEnableSort = cbFileSorter.Checked ;
|
||||
ConfigDfn.iAnalysisCSVFlag = cbAnalysisCSV.Checked ? 1 : 0;
|
||||
ConfigDfn.strReportPath = rtbReportPath.Text.Trim();
|
||||
|
||||
//保存配置
|
||||
ConfigDfn.SaveConfig();
|
||||
|
||||
MessageBox.Show("保存设置完成,请重启软件,参数即可生效! ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
this.Close();
|
||||
}
|
||||
else
|
||||
|
||||
private void rbtnCancel_Click(object sender, EventArgs e) //取消
|
||||
{
|
||||
rtbIOTAddress.Enabled = false;
|
||||
}
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
+71
-131
@@ -32,27 +32,21 @@
|
||||
this.radTitleBar1 = new Telerik.WinControls.UI.RadTitleBar();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.labTitle = new System.Windows.Forms.Label();
|
||||
this.cbStartIOT = new System.Windows.Forms.CheckBox();
|
||||
this.label20 = new System.Windows.Forms.Label();
|
||||
this.rtbIOTAddress = new Telerik.WinControls.UI.RadTextBox();
|
||||
this.label19 = new System.Windows.Forms.Label();
|
||||
this.cbFileSorter = new System.Windows.Forms.CheckBox();
|
||||
this.rtbnSaveSetup = new Telerik.WinControls.UI.RadButton();
|
||||
this.rbtnCancel = new Telerik.WinControls.UI.RadButton();
|
||||
this.cbAnalysisCSV = new System.Windows.Forms.CheckBox();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.rtbCarTypebyVIN = new Telerik.WinControls.UI.RadTextBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.rtbReportPath = new Telerik.WinControls.UI.RadTextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.radButton1 = new Telerik.WinControls.UI.RadButton();
|
||||
this.btn_browse = new Telerik.WinControls.UI.RadButton();
|
||||
this.label20 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.radTitleBar1)).BeginInit();
|
||||
this.radTitleBar1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtbIOTAddress)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtbnSaveSetup)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rbtnCancel)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtbCarTypebyVIN)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtbReportPath)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.radButton1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btn_browse)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// radTitleBar1
|
||||
@@ -114,52 +108,17 @@
|
||||
this.labTitle.TabIndex = 0;
|
||||
this.labTitle.Text = "软件设置";
|
||||
//
|
||||
// cbStartIOT
|
||||
// cbFileSorter
|
||||
//
|
||||
this.cbStartIOT.AutoSize = true;
|
||||
this.cbStartIOT.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.cbStartIOT.ForeColor = System.Drawing.Color.White;
|
||||
this.cbStartIOT.Location = new System.Drawing.Point(268, 75);
|
||||
this.cbStartIOT.Name = "cbStartIOT";
|
||||
this.cbStartIOT.Size = new System.Drawing.Size(63, 25);
|
||||
this.cbStartIOT.TabIndex = 489;
|
||||
this.cbStartIOT.Text = "启用";
|
||||
this.cbStartIOT.UseVisualStyleBackColor = true;
|
||||
this.cbStartIOT.CheckedChanged += new System.EventHandler(this.cbStartIOT_CheckedChanged);
|
||||
//
|
||||
// label20
|
||||
//
|
||||
this.label20.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.label20.ForeColor = System.Drawing.Color.White;
|
||||
this.label20.Location = new System.Drawing.Point(28, 76);
|
||||
this.label20.Name = "label20";
|
||||
this.label20.Size = new System.Drawing.Size(234, 21);
|
||||
this.label20.TabIndex = 488;
|
||||
this.label20.Text = "IOT上传功能启用:";
|
||||
this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// rtbIOTAddress
|
||||
//
|
||||
this.rtbIOTAddress.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(68)))));
|
||||
this.rtbIOTAddress.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.rtbIOTAddress.ForeColor = System.Drawing.Color.White;
|
||||
this.rtbIOTAddress.Location = new System.Drawing.Point(268, 116);
|
||||
this.rtbIOTAddress.Name = "rtbIOTAddress";
|
||||
this.rtbIOTAddress.Size = new System.Drawing.Size(565, 27);
|
||||
this.rtbIOTAddress.TabIndex = 487;
|
||||
((Telerik.WinControls.UI.RadTextBoxElement)(this.rtbIOTAddress.GetChildAt(0))).Text = "";
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.rtbIOTAddress.GetChildAt(0).GetChildAt(2))).ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(68)))));
|
||||
//
|
||||
// label19
|
||||
//
|
||||
this.label19.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.label19.ForeColor = System.Drawing.Color.White;
|
||||
this.label19.Location = new System.Drawing.Point(62, 119);
|
||||
this.label19.Name = "label19";
|
||||
this.label19.Size = new System.Drawing.Size(200, 21);
|
||||
this.label19.TabIndex = 486;
|
||||
this.label19.Text = "IOT测量数据接口地址:";
|
||||
this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.cbFileSorter.AutoSize = true;
|
||||
this.cbFileSorter.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.cbFileSorter.ForeColor = System.Drawing.Color.White;
|
||||
this.cbFileSorter.Location = new System.Drawing.Point(266, 92);
|
||||
this.cbFileSorter.Name = "cbFileSorter";
|
||||
this.cbFileSorter.Size = new System.Drawing.Size(63, 25);
|
||||
this.cbFileSorter.TabIndex = 489;
|
||||
this.cbFileSorter.Text = "启用";
|
||||
this.cbFileSorter.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// rtbnSaveSetup
|
||||
//
|
||||
@@ -167,9 +126,9 @@
|
||||
this.rtbnSaveSetup.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(19)))), ((int)(((byte)(46)))), ((int)(((byte)(53)))));
|
||||
this.rtbnSaveSetup.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.rtbnSaveSetup.ForeColor = System.Drawing.Color.White;
|
||||
this.rtbnSaveSetup.Location = new System.Drawing.Point(592, 598);
|
||||
this.rtbnSaveSetup.Location = new System.Drawing.Point(644, 576);
|
||||
this.rtbnSaveSetup.Name = "rtbnSaveSetup";
|
||||
this.rtbnSaveSetup.Size = new System.Drawing.Size(138, 47);
|
||||
this.rtbnSaveSetup.Size = new System.Drawing.Size(101, 47);
|
||||
this.rtbnSaveSetup.TabIndex = 476;
|
||||
this.rtbnSaveSetup.Text = "保存设置";
|
||||
this.rtbnSaveSetup.Click += new System.EventHandler(this.rtbnSaveSetup_Click);
|
||||
@@ -200,9 +159,9 @@
|
||||
this.rbtnCancel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(19)))), ((int)(((byte)(46)))), ((int)(((byte)(53)))));
|
||||
this.rbtnCancel.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.rbtnCancel.ForeColor = System.Drawing.Color.White;
|
||||
this.rbtnCancel.Location = new System.Drawing.Point(770, 599);
|
||||
this.rbtnCancel.Location = new System.Drawing.Point(785, 577);
|
||||
this.rbtnCancel.Name = "rbtnCancel";
|
||||
this.rbtnCancel.Size = new System.Drawing.Size(138, 47);
|
||||
this.rbtnCancel.Size = new System.Drawing.Size(101, 47);
|
||||
this.rbtnCancel.TabIndex = 477;
|
||||
this.rbtnCancel.Text = "取消";
|
||||
this.rbtnCancel.Click += new System.EventHandler(this.rbtnCancel_Click);
|
||||
@@ -232,55 +191,34 @@
|
||||
this.cbAnalysisCSV.AutoSize = true;
|
||||
this.cbAnalysisCSV.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.cbAnalysisCSV.ForeColor = System.Drawing.Color.White;
|
||||
this.cbAnalysisCSV.Location = new System.Drawing.Point(268, 202);
|
||||
this.cbAnalysisCSV.Location = new System.Drawing.Point(266, 206);
|
||||
this.cbAnalysisCSV.Name = "cbAnalysisCSV";
|
||||
this.cbAnalysisCSV.Size = new System.Drawing.Size(63, 25);
|
||||
this.cbAnalysisCSV.TabIndex = 513;
|
||||
this.cbAnalysisCSV.Text = "解析";
|
||||
this.cbAnalysisCSV.UseVisualStyleBackColor = true;
|
||||
this.cbAnalysisCSV.Visible = false;
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.label14.ForeColor = System.Drawing.Color.White;
|
||||
this.label14.Location = new System.Drawing.Point(25, 205);
|
||||
this.label14.Location = new System.Drawing.Point(23, 209);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(237, 21);
|
||||
this.label14.TabIndex = 512;
|
||||
this.label14.Text = "是否解析CSV文件:";
|
||||
this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// rtbCarTypebyVIN
|
||||
//
|
||||
this.rtbCarTypebyVIN.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(68)))));
|
||||
this.rtbCarTypebyVIN.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.rtbCarTypebyVIN.ForeColor = System.Drawing.Color.White;
|
||||
this.rtbCarTypebyVIN.Location = new System.Drawing.Point(268, 159);
|
||||
this.rtbCarTypebyVIN.Name = "rtbCarTypebyVIN";
|
||||
this.rtbCarTypebyVIN.Size = new System.Drawing.Size(567, 27);
|
||||
this.rtbCarTypebyVIN.TabIndex = 515;
|
||||
((Telerik.WinControls.UI.RadTextBoxElement)(this.rtbCarTypebyVIN.GetChildAt(0))).Text = "";
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.rtbCarTypebyVIN.GetChildAt(0).GetChildAt(2))).ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(68)))));
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.label10.ForeColor = System.Drawing.Color.White;
|
||||
this.label10.Location = new System.Drawing.Point(62, 162);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(200, 21);
|
||||
this.label10.TabIndex = 514;
|
||||
this.label10.Text = "获取车型接口地址:";
|
||||
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.label14.Visible = false;
|
||||
//
|
||||
// rtbReportPath
|
||||
//
|
||||
this.rtbReportPath.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(68)))));
|
||||
this.rtbReportPath.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.rtbReportPath.ForeColor = System.Drawing.Color.White;
|
||||
this.rtbReportPath.Location = new System.Drawing.Point(268, 243);
|
||||
this.rtbReportPath.Location = new System.Drawing.Point(266, 142);
|
||||
this.rtbReportPath.Name = "rtbReportPath";
|
||||
this.rtbReportPath.Size = new System.Drawing.Size(567, 27);
|
||||
this.rtbReportPath.Size = new System.Drawing.Size(538, 27);
|
||||
this.rtbReportPath.TabIndex = 516;
|
||||
((Telerik.WinControls.UI.RadTextBoxElement)(this.rtbReportPath.GetChildAt(0))).Text = "";
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.rtbReportPath.GetChildAt(0).GetChildAt(2))).ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(68)))));
|
||||
@@ -289,42 +227,54 @@
|
||||
//
|
||||
this.label1.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.label1.ForeColor = System.Drawing.Color.White;
|
||||
this.label1.Location = new System.Drawing.Point(25, 248);
|
||||
this.label1.Location = new System.Drawing.Point(23, 147);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(237, 21);
|
||||
this.label1.TabIndex = 517;
|
||||
this.label1.Text = "奇瑞报告存放的路径:";
|
||||
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// radButton1
|
||||
// btn_browse
|
||||
//
|
||||
this.radButton1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.radButton1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(19)))), ((int)(((byte)(46)))), ((int)(((byte)(53)))));
|
||||
this.radButton1.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.radButton1.ForeColor = System.Drawing.Color.White;
|
||||
this.radButton1.Location = new System.Drawing.Point(853, 244);
|
||||
this.radButton1.Name = "radButton1";
|
||||
this.radButton1.Size = new System.Drawing.Size(55, 31);
|
||||
this.radButton1.TabIndex = 518;
|
||||
this.radButton1.Text = "浏览";
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.radButton1.GetChildAt(0))).Text = "浏览";
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.radButton1.GetChildAt(0))).FocusBorderWidth = 5;
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.radButton1.GetChildAt(0))).EnableHighlight = true;
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.radButton1.GetChildAt(0))).EnableBorderHighlight = true;
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.radButton1.GetChildAt(0))).BorderHighlightThickness = 3;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).Width = 2F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).LeftWidth = 3F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).TopWidth = 3F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).RightWidth = 3F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).BottomWidth = 3F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).GradientStyle = Telerik.WinControls.GradientStyles.Solid;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).ForeColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(151)))), ((int)(((byte)(186)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).InnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(151)))), ((int)(((byte)(186)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).InnerColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(48)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).InnerColor3 = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(48)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).InnerColor4 = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(48)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.radButton1.GetChildAt(0).GetChildAt(2))).ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(151)))), ((int)(((byte)(186)))));
|
||||
this.btn_browse.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btn_browse.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(19)))), ((int)(((byte)(46)))), ((int)(((byte)(53)))));
|
||||
this.btn_browse.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.btn_browse.ForeColor = System.Drawing.Color.White;
|
||||
this.btn_browse.Location = new System.Drawing.Point(826, 138);
|
||||
this.btn_browse.Name = "btn_browse";
|
||||
this.btn_browse.Size = new System.Drawing.Size(80, 31);
|
||||
this.btn_browse.TabIndex = 518;
|
||||
this.btn_browse.Text = "浏览";
|
||||
this.btn_browse.Click += new System.EventHandler(this.btn_browse_Click);
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.btn_browse.GetChildAt(0))).Text = "浏览";
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.btn_browse.GetChildAt(0))).FocusBorderWidth = 5;
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.btn_browse.GetChildAt(0))).EnableHighlight = true;
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.btn_browse.GetChildAt(0))).EnableBorderHighlight = true;
|
||||
((Telerik.WinControls.UI.RadButtonElement)(this.btn_browse.GetChildAt(0))).BorderHighlightThickness = 3;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).Width = 2F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).LeftWidth = 3F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).TopWidth = 3F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).RightWidth = 3F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).BottomWidth = 3F;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).GradientStyle = Telerik.WinControls.GradientStyles.Solid;
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).ForeColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(151)))), ((int)(((byte)(186)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).InnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(151)))), ((int)(((byte)(186)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).InnerColor2 = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(48)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).InnerColor3 = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(48)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).InnerColor4 = System.Drawing.Color.FromArgb(((int)(((byte)(27)))), ((int)(((byte)(60)))), ((int)(((byte)(48)))));
|
||||
((Telerik.WinControls.Primitives.BorderPrimitive)(this.btn_browse.GetChildAt(0).GetChildAt(2))).ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(151)))), ((int)(((byte)(186)))));
|
||||
//
|
||||
// label20
|
||||
//
|
||||
this.label20.Font = new System.Drawing.Font("Segoe UI", 12F);
|
||||
this.label20.ForeColor = System.Drawing.Color.White;
|
||||
this.label20.Location = new System.Drawing.Point(26, 93);
|
||||
this.label20.Name = "label20";
|
||||
this.label20.Size = new System.Drawing.Size(234, 21);
|
||||
this.label20.TabIndex = 488;
|
||||
this.label20.Text = "是否启用分发功能:";
|
||||
this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// FSoftwareSetup
|
||||
//
|
||||
@@ -334,18 +284,14 @@
|
||||
this.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(44)))), ((int)(((byte)(109)))), ((int)(((byte)(124)))));
|
||||
this.BorderWidth = 0;
|
||||
this.ClientSize = new System.Drawing.Size(935, 672);
|
||||
this.Controls.Add(this.radButton1);
|
||||
this.Controls.Add(this.btn_browse);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.rtbReportPath);
|
||||
this.Controls.Add(this.rtbCarTypebyVIN);
|
||||
this.Controls.Add(this.label10);
|
||||
this.Controls.Add(this.cbAnalysisCSV);
|
||||
this.Controls.Add(this.label14);
|
||||
this.Controls.Add(this.rbtnCancel);
|
||||
this.Controls.Add(this.cbStartIOT);
|
||||
this.Controls.Add(this.cbFileSorter);
|
||||
this.Controls.Add(this.label20);
|
||||
this.Controls.Add(this.rtbIOTAddress);
|
||||
this.Controls.Add(this.label19);
|
||||
this.Controls.Add(this.rtbnSaveSetup);
|
||||
this.Controls.Add(this.radTitleBar1);
|
||||
this.Font = new System.Drawing.Font("宋体", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
@@ -358,12 +304,10 @@
|
||||
((System.ComponentModel.ISupportInitialize)(this.radTitleBar1)).EndInit();
|
||||
this.radTitleBar1.ResumeLayout(false);
|
||||
this.radTitleBar1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtbIOTAddress)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtbnSaveSetup)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rbtnCancel)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtbCarTypebyVIN)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.rtbReportPath)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.radButton1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.btn_browse)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -374,18 +318,14 @@
|
||||
private Telerik.WinControls.UI.RadTitleBar radTitleBar1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label labTitle;
|
||||
private System.Windows.Forms.CheckBox cbStartIOT;
|
||||
private System.Windows.Forms.Label label20;
|
||||
private Telerik.WinControls.UI.RadTextBox rtbIOTAddress;
|
||||
private System.Windows.Forms.Label label19;
|
||||
private System.Windows.Forms.CheckBox cbFileSorter;
|
||||
private Telerik.WinControls.UI.RadButton rtbnSaveSetup;
|
||||
private Telerik.WinControls.UI.RadButton rbtnCancel;
|
||||
private System.Windows.Forms.CheckBox cbAnalysisCSV;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private Telerik.WinControls.UI.RadTextBox rtbCarTypebyVIN;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private Telerik.WinControls.UI.RadTextBox rtbReportPath;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private Telerik.WinControls.UI.RadButton radButton1;
|
||||
private Telerik.WinControls.UI.RadButton btn_browse;
|
||||
private System.Windows.Forms.Label label20;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace NSAnalysis
|
||||
{
|
||||
@@ -20,7 +21,17 @@ namespace NSAnalysis
|
||||
|
||||
public event Action<string> OnLog; // 日志事件
|
||||
|
||||
public event Action<string> OnFileParsed; // 解析完成后通知文件名
|
||||
public event Action<string, string> OnFileParsed; // 解析完成后通知文件名
|
||||
|
||||
// 关键流程节点日志事件
|
||||
public event Action<string> OnProcessStep; // 处理步骤日志事件
|
||||
|
||||
// 封装 OnProcessStep 事件
|
||||
private void emitProcessStep(string message)
|
||||
{
|
||||
OnProcessStep?.Invoke(message);
|
||||
//Console.WriteLine(message); // 控制台输出
|
||||
}
|
||||
|
||||
public FileSorter()
|
||||
{
|
||||
@@ -49,29 +60,28 @@ namespace NSAnalysis
|
||||
{
|
||||
Trace($"[ProcessFiles] 源文件地址不存在或错误: {sourceDir}");
|
||||
|
||||
//记录到数据库
|
||||
try
|
||||
{
|
||||
//插入分发详情
|
||||
CjlrTaskReleaseDetailModel detailModel = new CjlrTaskReleaseDetailModel
|
||||
{
|
||||
ModelsName = modelName, // 这里可以根据需要填写车型名称
|
||||
ModelsCode = modelCode,
|
||||
Position = position, // 这里可以根据需要填写位置
|
||||
SourceFile = "",
|
||||
TargetFile = "",
|
||||
TaskFileName = "",
|
||||
TaskStatus = 2, // 假设1表示已处理, 2表示未处理
|
||||
TaskDetail = $"源文件地址不存在或错误: {sourceDir}",
|
||||
CreateDate = DateTime.Now
|
||||
};
|
||||
_dal.InsertTaskDetail(detailModel);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Trace($"[ProcessFiles] 记录错误到数据库失败: {ex.Message}");
|
||||
}
|
||||
|
||||
////记录到数据库
|
||||
//try
|
||||
//{
|
||||
// //插入分发详情
|
||||
// CjlrTaskReleaseDetailModel detailModel = new CjlrTaskReleaseDetailModel
|
||||
// {
|
||||
// ModelsName = modelName, // 这里可以根据需要填写车型名称
|
||||
// ModelsCode = modelCode,
|
||||
// Position = position, // 这里可以根据需要填写位置
|
||||
// SourceFile = "",
|
||||
// TargetFile = "",
|
||||
// TaskFileName = "",
|
||||
// TaskStatus = 2, // 假设1表示已处理, 2表示未处理
|
||||
// TaskDetail = $"源文件地址不存在或错误: {sourceDir}",
|
||||
// CreateDate = DateTime.Now
|
||||
// };
|
||||
// _dal.InsertTaskDetail(detailModel);
|
||||
//}
|
||||
//catch (Exception ex)
|
||||
//{
|
||||
// Trace($"[ProcessFiles] 记录错误到数据库失败: {ex.Message}");
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,7 +92,7 @@ namespace NSAnalysis
|
||||
DataTable dt = _dal.SelectTaskByCondition("", "", "start");
|
||||
|
||||
//打印 dt
|
||||
PrintDataTable(dt);
|
||||
//PrintDataTable(dt);
|
||||
if (dt == null || dt.Rows.Count == 0)
|
||||
{
|
||||
Trace("未发现移动任务.");
|
||||
@@ -116,12 +126,24 @@ namespace NSAnalysis
|
||||
// 解析入库
|
||||
AnalysisNxsCSV(file);
|
||||
|
||||
if (!ConfigDfn.iEnableSort)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// 分发逻辑
|
||||
if (MatchCsvValue(file, matchStr, readRowIndex, readColIndex))
|
||||
{
|
||||
string destFile = Path.Combine(targetDir, Path.GetFileName(file));
|
||||
if (File.Exists(destFile))
|
||||
{
|
||||
// 生成备份文件名,格式如:xxx.csv.bak_20240613_153012
|
||||
string backupFile = destFile + ".bak_" + DateTime.Now.ToString("yyyyMMdd_HHmmss");
|
||||
File.Move(destFile, backupFile);
|
||||
Trace($"目标文件已存在,已重命名为备份文件: {backupFile}");
|
||||
}
|
||||
File.Move(file, destFile);
|
||||
Trace($"移动完成,: {file} -> {destFile}");
|
||||
emitProcessStep($"---> 5、文件移动完成: -> {destFile}");
|
||||
|
||||
//插入分发详情
|
||||
CjlrTaskReleaseDetailModel detailModel = new CjlrTaskReleaseDetailModel
|
||||
@@ -141,6 +163,7 @@ namespace NSAnalysis
|
||||
else
|
||||
{
|
||||
Trace($"未匹配到文件: {file}");
|
||||
emitProcessStep($"---> 5、未匹配到文件: {file}");
|
||||
|
||||
//记录到数据库
|
||||
CjlrTaskReleaseDetailModel detailModel = new CjlrTaskReleaseDetailModel
|
||||
@@ -177,6 +200,8 @@ namespace NSAnalysis
|
||||
/// <returns>匹配成功返回true,否则false</returns>
|
||||
public static bool MatchCsvValue(string filePath, string targetValue, int rowIndex, int colIndex)
|
||||
{
|
||||
// 记录日志 输入
|
||||
MyBase.TraceWriteLine($"[MatchCsvValue] 检查文件: {filePath}, 行索引: {rowIndex}, 列索引: {colIndex}, 目标值: {targetValue}");
|
||||
try
|
||||
{
|
||||
string[] lines = File.ReadAllLines(filePath);
|
||||
@@ -200,27 +225,66 @@ namespace NSAnalysis
|
||||
}
|
||||
}
|
||||
|
||||
// 编写一个打印 DataTable 对象的方法,输入是对象
|
||||
public static void PrintDataTable(DataTable dt)
|
||||
// 生成单侧统计信息的方法
|
||||
private void GenerateSingleSideStatistics(string GroupName, string Position)
|
||||
{
|
||||
if (dt == null || dt.Rows.Count == 0)
|
||||
#region 统计信息显示
|
||||
|
||||
DataTable sampleData = _dal.SelectMeasureResultByCarID(ConfigDfn.strEquipNo, GroupName);
|
||||
if (sampleData == null || sampleData.Rows.Count == 0)
|
||||
{
|
||||
MyBase.TraceWriteLine("[PrintDataTable] DataTable is empty or null.");
|
||||
MyBase.TraceWriteLine("没有测量数据,无法生成统计信息。");
|
||||
// 触发日志事件
|
||||
emitProcessStep(Position + " 没有测量数据,无法生成统计信息。");
|
||||
return;
|
||||
}
|
||||
foreach (DataColumn column in dt.Columns)
|
||||
|
||||
// 提取分析结果
|
||||
AnalysisResult analysis = AnalysisResult.AnalyzeMeasureData(sampleData);
|
||||
//AnalysisResult.DisplayAnalysisResult(analysis);
|
||||
|
||||
//表格行数
|
||||
int dtRowCount = analysis.TotalCount;
|
||||
//超差个数
|
||||
double OutCount = analysis.OutCount;
|
||||
//Ok个数
|
||||
double OKCount = analysis.OKCount;
|
||||
//异常个数
|
||||
double RejectedCount = analysis.RejectedCount;
|
||||
//合格率
|
||||
double FPYPercent = analysis.FPYPercent;
|
||||
|
||||
TMeasureResultModel tmrm = new TMeasureResultModel();
|
||||
|
||||
FPYPercent = OKCount / (OKCount + OutCount);
|
||||
if (FPYPercent >= ConfigDfn.dFPY)
|
||||
{
|
||||
Console.Write($"{column.ColumnName}\t");
|
||||
tmrm.Result = 1;
|
||||
}
|
||||
MyBase.TraceWriteLine("");
|
||||
foreach (DataRow row in dt.Rows)
|
||||
else if (FPYPercent >= ConfigDfn.dFPY2 && FPYPercent < ConfigDfn.dFPY)
|
||||
{
|
||||
foreach (var item in row.ItemArray)
|
||||
tmrm.Result = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.Write($"{item}\t");
|
||||
}
|
||||
MyBase.TraceWriteLine("");
|
||||
tmrm.Result = 2;
|
||||
}
|
||||
|
||||
tmrm.CarID = ConfigDfn.strEquipNo;
|
||||
tmrm.CarType = ConfigDfn.strCarModel;
|
||||
tmrm.SumMeasureItems = dtRowCount;
|
||||
tmrm.GoodMeasureItems = (int)OKCount;
|
||||
tmrm.NoGoodMeasureItems = (int)OutCount;
|
||||
tmrm.RejectMeasureItems = (int)RejectedCount;
|
||||
tmrm.FPY = FPYPercent.ToString("F4");
|
||||
tmrm.Remark = Position; //区分左右侧
|
||||
tmrm.MeasureDate = ConfigDfn.strMeasureTime;
|
||||
_dal.InsertTMeasureResult(tmrm);
|
||||
|
||||
MyBase.TraceWriteLine("将总结果插入数据库完毕。");
|
||||
emitProcessStep($"---> 3、统计信息已生成: 位置: {Position}, 总测量项: {dtRowCount}, 合格项: {OKCount}, 不合格项: {OutCount}, 异常项: {RejectedCount}, FPY: {FPYPercent:F4}");
|
||||
|
||||
#endregion 统计信息显示
|
||||
}
|
||||
|
||||
// 导入CSV文件到数据库
|
||||
@@ -228,6 +292,18 @@ namespace NSAnalysis
|
||||
{
|
||||
var records = new List<CJLR_MeaDataModel>();
|
||||
var lineNo = 0; // 行号计数器
|
||||
var groupName = string.Empty; // 组名变量
|
||||
var position = string.Empty; // 位置变量
|
||||
|
||||
emitProcessStep($"正在处理: {filePath}");
|
||||
|
||||
// 判断文件是否已经处理过
|
||||
if (_dal.IsFileProcessed(filePath))
|
||||
{
|
||||
MyBase.TraceWriteLine($"文件已处理过,跳过: {filePath}");
|
||||
emitProcessStep($"---> 2、文件已处理过,跳过: {filePath}");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
@@ -310,13 +386,35 @@ namespace NSAnalysis
|
||||
|
||||
// 获取车号
|
||||
MyBase.TraceWriteLine("--------------------------------------------------------");
|
||||
|
||||
ConfigDfn.strEquipNo = firstRecord.ProductNum;
|
||||
MyBase.TraceWriteLine("车号:" + ConfigDfn.strEquipNo);
|
||||
//获取车型
|
||||
ConfigDfn.strCarModel = firstRecord.Model;
|
||||
|
||||
ConfigDfn.strCarModel = firstRecord.Model; //获取车型
|
||||
MyBase.TraceWriteLine("车型:" + ConfigDfn.strCarModel);
|
||||
|
||||
// 从 firstRecord.GroupName 中提取位置 ,使用下划线分隔 例如:X540_R,提取 R 作为位置
|
||||
groupName = firstRecord.GroupName;
|
||||
MyBase.TraceWriteLine("组名:" + firstRecord.GroupName);
|
||||
// 如果 GroupName 为空,则使用默认位置
|
||||
if (string.IsNullOrEmpty(firstRecord.GroupName))
|
||||
{
|
||||
MyBase.TraceWriteLine("组名为空,使用默认位置。");
|
||||
ConfigDfn.strEquipPosition = "Default"; // 默认位置
|
||||
}
|
||||
else
|
||||
{
|
||||
// 使用下划线分隔 GroupName,提取最后一部分作为位置
|
||||
var parts2 = firstRecord.GroupName.Split('_');
|
||||
|
||||
ConfigDfn.strEquipPosition = parts2.Length > 1 ? parts2[parts2.Length - 1] : firstRecord.GroupName; // 如果没有下划线,直接使用原值
|
||||
}
|
||||
|
||||
// 打印提取后位置
|
||||
MyBase.TraceWriteLine("位置:" + ConfigDfn.strEquipPosition);
|
||||
|
||||
MyBase.TraceWriteLine("测量时间:" + ConfigDfn.strMeasureTime);
|
||||
|
||||
emitProcessStep($"---> 1、解析到, 车号:{ConfigDfn.strEquipNo} 车型:{ConfigDfn.strCarModel} 位置:{ConfigDfn.strEquipPosition} 测量时间:{ConfigDfn.strMeasureTime}");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -338,15 +436,28 @@ namespace NSAnalysis
|
||||
// 逐条插入数据到数据库
|
||||
foreach (var record in records)
|
||||
{
|
||||
_dal.InsertCJLRMeaData(record);
|
||||
_dal.InsertOrUpdateCJLRMeaData(record);
|
||||
}
|
||||
|
||||
MyBase.TraceWriteLine("CSV文件导入到数据库成功!");
|
||||
|
||||
// 记录处理文件到数据库
|
||||
_dal.InsertProcessedFile(filePath);
|
||||
|
||||
emitProcessStep($"---> 2、CSV文件导入到数据库成功");
|
||||
|
||||
#region 处理单侧统计信息
|
||||
|
||||
GenerateSingleSideStatistics(groupName, ConfigDfn.strEquipPosition);
|
||||
|
||||
#endregion 处理单侧统计信息
|
||||
|
||||
MyBase.TraceWriteLine("--------------------------------------------------------");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MyBase.TraceWriteLine("导入CSV文件时发生错误:" + ex.Message);
|
||||
emitProcessStep($"---> 2、导入CSV文件时发生错误: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -368,7 +479,25 @@ namespace NSAnalysis
|
||||
// 解析完成后触发事件
|
||||
if (!string.IsNullOrEmpty(ConfigDfn.strEquipNo))
|
||||
{
|
||||
OnFileParsed?.Invoke(ConfigDfn.strEquipNo);
|
||||
// 构造 事件参数
|
||||
Trace($"触发事件,车号: {ConfigDfn.strEquipNo} 位置: {ConfigDfn.strEquipPosition}");
|
||||
OnFileParsed?.Invoke(ConfigDfn.strEquipNo, ConfigDfn.strEquipPosition);
|
||||
}
|
||||
|
||||
// 每次解析完一个文件后,检查是否有双侧测量结果
|
||||
bool isMeasureComplete = _dal.HasBothSidesMeasureResult(ConfigDfn.strEquipNo);
|
||||
|
||||
if (isMeasureComplete)
|
||||
{
|
||||
MyBase.TraceWriteLine("双侧测量结果已完成,开始生成客户报告。");
|
||||
emitProcessStep($"---> 4、双侧测量结果已完成,开始生成客户报告,车号: {ConfigDfn.strEquipNo}");
|
||||
// 生成客户报告
|
||||
GenCustomerReport(ConfigDfn.strEquipNo);
|
||||
}
|
||||
else
|
||||
{
|
||||
MyBase.TraceWriteLine("双侧测量结果未完成,跳过客户报告生成。");
|
||||
emitProcessStep($"---> 4、双侧测量结果未完成,跳过客户报告生成,车号: {ConfigDfn.strEquipNo}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -377,76 +506,102 @@ namespace NSAnalysis
|
||||
}
|
||||
}
|
||||
|
||||
private void GenCustomerReport()
|
||||
// 生成客户报告函数
|
||||
private void GenCustomerReport(string strCarID)
|
||||
{
|
||||
//#region 解析完报告后,重新生成客户模板报告
|
||||
// 从数据库获取测量数据
|
||||
DataTable dtCSVContent = _dal.SelectPointDimensionByCarID(strCarID);
|
||||
|
||||
//string filePath = strSaveReprotPath + DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + strCarID + ".csv"; //wsp 后期还要再改
|
||||
//string strWithoutLCarVin = strCarID.Substring(1);
|
||||
//StringBuilder sb = new StringBuilder();
|
||||
////添加表头
|
||||
//sb.Append("Measurement Info Name");
|
||||
//sb.Append(",");
|
||||
//sb.Append("Measurement Info");
|
||||
//sb.AppendLine();
|
||||
//sb.Append("Date_Time");
|
||||
//sb.Append(",");
|
||||
//sb.Append(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
|
||||
//sb.AppendLine();
|
||||
//for (int i = 0; i < listCSVTitleInfo.Count; i++)
|
||||
//{
|
||||
// if (listCSVTitleInfo[i].Contains("prodnum"))
|
||||
// {
|
||||
// listCSVTitleInfo[i] = listCSVTitleInfo[i].Replace("prodnum", "Part_ident");
|
||||
// }
|
||||
// if (listCSVTitleInfo[i].Contains(strWithoutLCarVin))
|
||||
// {
|
||||
// listCSVTitleInfo[i] = listCSVTitleInfo[i].Replace(strWithoutLCarVin, strCarID);
|
||||
// }
|
||||
// sb.Append(listCSVTitleInfo[i]);
|
||||
// sb.AppendLine();
|
||||
//}
|
||||
//sb.AppendLine();
|
||||
//sb.AppendLine();
|
||||
//sb.AppendLine();
|
||||
//sb.AppendLine();
|
||||
//sb.AppendLine();
|
||||
////添加测量数据
|
||||
//sb.Append("Characteristic");
|
||||
//sb.Append(",");
|
||||
//sb.Append("Extension");
|
||||
//sb.Append(",");
|
||||
//sb.Append("Measured_Value");
|
||||
//sb.AppendLine();
|
||||
//foreach (DataRow row in dtCSVContent.Rows)
|
||||
//{
|
||||
// sb.Append(row.ItemArray[2]);
|
||||
// sb.Append(",");
|
||||
// sb.Append(row.ItemArray[3]);
|
||||
// sb.Append(",");
|
||||
// sb.Append(row.ItemArray[7]);
|
||||
// sb.AppendLine();
|
||||
//}
|
||||
|
||||
//sb.Append("POP");
|
||||
//sb.Append(",");
|
||||
//sb.Append("P");
|
||||
//sb.Append(",");
|
||||
//sb.Append(Math.Round(FPYPercent * 100.00d, 2).ToString("F2"));
|
||||
//sb.AppendLine();
|
||||
//// 将数据写入CSV文件
|
||||
//File.WriteAllText(filePath, sb.ToString());
|
||||
//MyBase.TraceWriteLine("客户csv报告生成完毕,路径为:" + filePath);
|
||||
|
||||
//#endregion 解析完报告后,重新生成客户模板报告
|
||||
if (dtCSVContent == null || dtCSVContent.Rows.Count == 0)
|
||||
{
|
||||
MyBase.TraceWriteLine("没有找到测量数据,无法生成客户报告。");
|
||||
return;
|
||||
}
|
||||
|
||||
// 生成报告
|
||||
string fileName = strCarID + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";
|
||||
|
||||
// 确保报告路径存在
|
||||
if (!Directory.Exists(ConfigDfn.strReportPath))
|
||||
{
|
||||
Directory.CreateDirectory(ConfigDfn.strReportPath);
|
||||
MyBase.TraceWriteLine($"创建报告目录: {ConfigDfn.strReportPath}");
|
||||
}
|
||||
string savePath = Path.Combine(ConfigDfn.strReportPath, fileName);
|
||||
|
||||
GenerateCsvReport(strCarID, dtCSVContent, ConfigDfn.strCSVReportTemplatePath, savePath);
|
||||
|
||||
MyBase.TraceWriteLine($"客户报告已生成: {savePath}");
|
||||
emitProcessStep($"---> 5、客户报告已生成: {savePath}");
|
||||
}
|
||||
|
||||
// 生成CSV报告函数
|
||||
private void GenerateCsvReport(string strCarID, DataTable measureData, string templatePath, string savePath)
|
||||
{
|
||||
// 读取模板内容
|
||||
var templateLines = File.ReadAllLines(templatePath);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
// 替换模板中的变量
|
||||
foreach (var line in templateLines)
|
||||
{
|
||||
string replaced = line
|
||||
.Replace("{DateTime}", DateTime.Now.ToString("yyyy/MM/dd HH:mm"))
|
||||
.Replace("{CarID}", strCarID);
|
||||
sb.AppendLine(replaced);
|
||||
}
|
||||
|
||||
// 空行分隔
|
||||
sb.AppendLine();
|
||||
sb.AppendLine();
|
||||
|
||||
// 添加测量数据表头
|
||||
sb.AppendLine("Characteristic,Extension,Measured_Value");
|
||||
|
||||
// 添加测量数据内容
|
||||
foreach (DataRow row in measureData.Rows)
|
||||
{
|
||||
sb.AppendFormat("{0},{1},{2}\n",
|
||||
row["PointName"], row["DimensionName"], row["DimensionValue"]);
|
||||
}
|
||||
|
||||
// 可根据实际需求添加统计行 sb.AppendLine("POP,P,99.99");
|
||||
|
||||
// 写入文件
|
||||
File.WriteAllText(savePath, sb.ToString(), Encoding.UTF8);
|
||||
}
|
||||
|
||||
// 日志记录方法
|
||||
private void Trace(string msg)
|
||||
{
|
||||
OnLog?.Invoke(msg);
|
||||
MyBase.TraceWriteLine(msg); // 保持原有日志
|
||||
}
|
||||
|
||||
// 打印 DataTable 对象的方法,输入是对象
|
||||
public static void PrintDataTable(DataTable dt)
|
||||
{
|
||||
if (dt == null || dt.Rows.Count == 0)
|
||||
{
|
||||
Console.WriteLine("[PrintDataTable] DataTable is empty or null.");
|
||||
return;
|
||||
}
|
||||
foreach (DataColumn column in dt.Columns)
|
||||
{
|
||||
Console.WriteLine($"{column.ColumnName}\t");
|
||||
}
|
||||
Console.WriteLine("");
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
foreach (var item in row.ItemArray)
|
||||
{
|
||||
Console.WriteLine($"{item}\t");
|
||||
}
|
||||
Console.WriteLine("");
|
||||
}
|
||||
}
|
||||
|
||||
// 测试方法
|
||||
public void test()
|
||||
{
|
||||
+231
-4
@@ -4,8 +4,6 @@ using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using Telerik.WinControls;
|
||||
|
||||
namespace NSAnalysis.DAL
|
||||
{
|
||||
@@ -34,6 +32,7 @@ namespace NSAnalysis.DAL
|
||||
return dt;
|
||||
}
|
||||
|
||||
// 查询指定车辆ID的测量结果
|
||||
public DataTable SelectTMeasureResultByTime(string strCarID, string strStartTime, string strEndTime)
|
||||
{
|
||||
DataTable dt = new DataTable();
|
||||
@@ -98,6 +97,43 @@ namespace NSAnalysis.DAL
|
||||
}
|
||||
|
||||
// 从CJLR_MeaData 中查询 总测量项 Good测量项 NoGood测量项 Reject测量项 FPY
|
||||
public DataTable SelectMeasureResultByCarID(string strCarID,string strGroupName)
|
||||
{
|
||||
string strSql = @"
|
||||
SELECT
|
||||
ProductNum AS CarID,
|
||||
COUNT(*) AS TotalCount,
|
||||
SUM(CASE WHEN UPPER(Classification) IN ('OK','OK ','Acceptable','Acceptable ') THEN 1 ELSE 0 END) AS PassCount,
|
||||
SUM(CASE WHEN UPPER(Classification) IN ('NG1','NG1 ','NG2','NG2 ') THEN 1 ELSE 0 END) AS NGCount,
|
||||
SUM(CASE WHEN Classification = 'Rejected' THEN 1 ELSE 0 END) AS RejectCount,
|
||||
CAST(
|
||||
SUM(CASE WHEN UPPER(Classification) IN ('OK','OK ','Acceptable','Acceptable ') THEN 1 ELSE 0 END) AS FLOAT
|
||||
) /
|
||||
|
||||
NULLIF(
|
||||
SUM(CASE WHEN UPPER(Classification) IN ('NG1','NG1 ','NG2','NG2 ','OK','OK ','ACCEPTABLE','ACCEPTABLE ','Rejected') THEN 1 ELSE 0 END),
|
||||
0
|
||||
) * 100 AS FPY
|
||||
|
||||
FROM CJLR.dbo.CJLR_MeaData
|
||||
WHERE ProductNum = @CarID and GroupName = @GroupName
|
||||
GROUP BY ProductNum
|
||||
|
||||
";
|
||||
|
||||
SqlParameter[] parameters = new SqlParameter[]
|
||||
{
|
||||
new SqlParameter("@CarID", strCarID),
|
||||
new SqlParameter("@GroupName", strGroupName)
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
DataTable dt = SQLHelper.ExecuteQuery(strSql, parameters, CommandType.Text);
|
||||
return dt;
|
||||
}
|
||||
|
||||
public DataTable SelectMeasureResultByCarID(string strCarID)
|
||||
{
|
||||
string strSql = @"
|
||||
@@ -125,18 +161,19 @@ NULLIF(
|
||||
SqlParameter[] parameters = new SqlParameter[]
|
||||
{
|
||||
new SqlParameter("@CarID", strCarID)
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
DataTable dt = SQLHelper.ExecuteQuery(strSql, parameters, CommandType.Text);
|
||||
return dt;
|
||||
}
|
||||
|
||||
// 每个测量点的上下限和偏差分析(包含合并的测量时间)
|
||||
public DataTable SelectMeasureDataByCarID(string strCarID)
|
||||
{
|
||||
string strSql = @"SELECT
|
||||
PointName,
|
||||
Model,
|
||||
DimensionName,
|
||||
DimensionValue,
|
||||
NominalValue,
|
||||
@@ -199,6 +236,39 @@ ProductNum,
|
||||
return SQLHelper.ExecuteQuery(strSql.ToString(), parameters.ToArray(), CommandType.Text);
|
||||
}
|
||||
|
||||
// check 是否有左右两侧的测量结果
|
||||
public bool HasBothSidesMeasureResult(string carId)
|
||||
{
|
||||
string sql = @"
|
||||
SELECT CASE
|
||||
WHEN COUNT(DISTINCT Remark) = 2 THEN 1
|
||||
ELSE 0
|
||||
END AS HasBothSides
|
||||
FROM CJLR.dbo.TMeasureResult
|
||||
WHERE CarID = @CarID AND Remark IN ('L', 'R')";
|
||||
SqlParameter[] paras = new SqlParameter[]
|
||||
{
|
||||
new SqlParameter("@CarID", carId)
|
||||
};
|
||||
DataTable dt = SQLHelper.ExecuteQuery(sql, paras, CommandType.Text);
|
||||
return dt.Rows.Count > 0 && Convert.ToInt32(dt.Rows[0]["HasBothSides"]) == 1;
|
||||
}
|
||||
|
||||
// 查询指定车辆ID的测量点维度数据
|
||||
public DataTable SelectPointDimensionByCarID(string carId)
|
||||
{
|
||||
string sql = @"
|
||||
SELECT PointName, DimensionName, DimensionValue
|
||||
FROM CJLR.dbo.CJLR_MeaData
|
||||
WHERE ProductNum = @CarID
|
||||
ORDER BY Id";
|
||||
SqlParameter[] paras = new SqlParameter[]
|
||||
{
|
||||
new SqlParameter("@CarID", carId)
|
||||
};
|
||||
return SQLHelper.ExecuteQuery(sql, paras, CommandType.Text);
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -328,6 +398,122 @@ ProductNum,
|
||||
return SQLHelper.ExecuteNonQuery(strSql, paras, CommandType.Text);
|
||||
}
|
||||
|
||||
public int InsertOrUpdateCJLRMeaData(CJLR_MeaDataModel record)
|
||||
{
|
||||
// 判断是否存在
|
||||
string checkSql = @"
|
||||
SELECT Id FROM CJLR_MeaData
|
||||
WHERE ProductNum = @ProdNum
|
||||
AND PointName = @MeasPointName
|
||||
AND DimensionName = @DimensionName
|
||||
AND MeasureDate = @Date
|
||||
AND MeasureTime = @Time";
|
||||
SqlParameter[] checkParas = new SqlParameter[]
|
||||
{
|
||||
new SqlParameter("@ProdNum", record.ProductNum),
|
||||
new SqlParameter("@MeasPointName", record.PointName),
|
||||
new SqlParameter("@DimensionName", record.DimensionName),
|
||||
new SqlParameter("@Date", record.MeasureDate),
|
||||
new SqlParameter("@Time", record.MeasureTime)
|
||||
};
|
||||
DataTable dt = SQLHelper.ExecuteQuery(checkSql, checkParas, CommandType.Text);
|
||||
|
||||
if (dt.Rows.Count > 0)
|
||||
{
|
||||
// 已存在,执行更新
|
||||
int id = Convert.ToInt32(dt.Rows[0]["Id"]);
|
||||
string updateSql = @"
|
||||
UPDATE CJLR_MeaData SET
|
||||
GroupName = @MeasGroupName,
|
||||
Model = @Model,
|
||||
Station = @Station,
|
||||
Method = @MeasMethod,
|
||||
Standard = @TestStandard,
|
||||
DimensionValue = @DimensionValue,
|
||||
DimensionUnit = @DimensionUnit,
|
||||
IsManual = @DimensionManualOverride,
|
||||
Classification = @DimensionClassification,
|
||||
ToleranceName0 = @ToleranceName0,
|
||||
ToleranceLower0 = @ToleranceLower0,
|
||||
ToleranceUpper0 = @ToleranceUpper0,
|
||||
ToleranceName1 = @ToleranceName1,
|
||||
ToleranceLower1 = @ToleranceLower1,
|
||||
ToleranceUpper1 = @ToleranceUpper1,
|
||||
NominalValue = @MeasPointNominal,
|
||||
SequenceNum = @SeqNr,
|
||||
CreatedAt = @CreatedAt
|
||||
WHERE Id = @Id";
|
||||
SqlParameter[] updateParas = new SqlParameter[]
|
||||
{
|
||||
new SqlParameter("@MeasGroupName", record.GroupName ?? (object)DBNull.Value),
|
||||
new SqlParameter("@Model", record.Model ?? (object)DBNull.Value),
|
||||
new SqlParameter("@Station", record.Station ?? (object)DBNull.Value),
|
||||
new SqlParameter("@MeasMethod", record.Method ?? (object)DBNull.Value),
|
||||
new SqlParameter("@TestStandard", record.Standard ?? (object)DBNull.Value),
|
||||
new SqlParameter("@DimensionValue", record.DimensionValue),
|
||||
new SqlParameter("@DimensionUnit", record.DimensionUnit ?? (object)DBNull.Value),
|
||||
new SqlParameter("@DimensionManualOverride", record.IsManual ? 1 : 0),
|
||||
new SqlParameter("@DimensionClassification", record.Classification ?? (object)DBNull.Value),
|
||||
new SqlParameter("@ToleranceName0", record.ToleranceName0 ?? (object)DBNull.Value),
|
||||
new SqlParameter("@ToleranceLower0", record.ToleranceLower0),
|
||||
new SqlParameter("@ToleranceUpper0", record.ToleranceUpper0),
|
||||
new SqlParameter("@ToleranceName1", record.ToleranceName1 ?? (object)DBNull.Value),
|
||||
new SqlParameter("@ToleranceLower1", record.ToleranceLower1),
|
||||
new SqlParameter("@ToleranceUpper1", record.ToleranceUpper1),
|
||||
new SqlParameter("@MeasPointNominal", record.NominalValue),
|
||||
new SqlParameter("@SeqNr", record.SequenceNum),
|
||||
new SqlParameter("@CreatedAt", DateTime.Now),
|
||||
new SqlParameter("@Id", id)
|
||||
};
|
||||
return SQLHelper.ExecuteNonQuery(updateSql, updateParas, CommandType.Text);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 不存在,执行插入
|
||||
string insertSql = @"
|
||||
INSERT INTO CJLR_MeaData (
|
||||
PointName, GroupName, ProductNum, Model, Station, Method,
|
||||
Standard, DimensionName, DimensionValue, DimensionUnit,
|
||||
IsManual, Classification, ToleranceName0,
|
||||
ToleranceLower0, ToleranceUpper0, ToleranceName1,
|
||||
ToleranceLower1, ToleranceUpper1, NominalValue, MeasureDate, MeasureTime, SequenceNum,CreatedAt
|
||||
) VALUES (
|
||||
@MeasPointName, @MeasGroupName, @ProdNum, @Model, @Station, @MeasMethod,
|
||||
@TestStandard, @DimensionName, @DimensionValue, @DimensionUnit,
|
||||
@DimensionManualOverride, @DimensionClassification, @ToleranceName0,
|
||||
@ToleranceLower0, @ToleranceUpper0, @ToleranceName1,
|
||||
@ToleranceLower1, @ToleranceUpper1, @MeasPointNominal, @Date, @Time, @SeqNr,@CreatedAt
|
||||
)";
|
||||
SqlParameter[] insertParas = new SqlParameter[]
|
||||
{
|
||||
new SqlParameter("@MeasPointName", record.PointName ?? (object)DBNull.Value),
|
||||
new SqlParameter("@MeasGroupName", record.GroupName ?? (object)DBNull.Value),
|
||||
new SqlParameter("@ProdNum", record.ProductNum ?? (object)DBNull.Value),
|
||||
new SqlParameter("@Model", record.Model ?? (object)DBNull.Value),
|
||||
new SqlParameter("@Station", record.Station ?? (object)DBNull.Value),
|
||||
new SqlParameter("@MeasMethod", record.Method ?? (object)DBNull.Value),
|
||||
new SqlParameter("@TestStandard", record.Standard ?? (object)DBNull.Value),
|
||||
new SqlParameter("@DimensionName", record.DimensionName ?? (object)DBNull.Value),
|
||||
new SqlParameter("@DimensionValue", record.DimensionValue),
|
||||
new SqlParameter("@DimensionUnit", record.DimensionUnit ?? (object)DBNull.Value),
|
||||
new SqlParameter("@DimensionManualOverride", record.IsManual ? 1 : 0),
|
||||
new SqlParameter("@DimensionClassification", record.Classification ?? (object)DBNull.Value),
|
||||
new SqlParameter("@ToleranceName0", record.ToleranceName0 ?? (object)DBNull.Value),
|
||||
new SqlParameter("@ToleranceLower0", record.ToleranceLower0),
|
||||
new SqlParameter("@ToleranceUpper0", record.ToleranceUpper0),
|
||||
new SqlParameter("@ToleranceName1", record.ToleranceName1 ?? (object)DBNull.Value),
|
||||
new SqlParameter("@ToleranceLower1", record.ToleranceLower1),
|
||||
new SqlParameter("@ToleranceUpper1", record.ToleranceUpper1),
|
||||
new SqlParameter("@MeasPointNominal", record.NominalValue),
|
||||
new SqlParameter("@Date", record.MeasureDate == default ? DateTime.Now : record.MeasureDate),
|
||||
new SqlParameter("@Time", record.MeasureTime == default ? DateTime.Now.TimeOfDay : record.MeasureTime),
|
||||
new SqlParameter("@SeqNr", record.SequenceNum),
|
||||
new SqlParameter("@CreatedAt", DateTime.Now)
|
||||
};
|
||||
return SQLHelper.ExecuteNonQuery(insertSql, insertParas, CommandType.Text);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Update Function
|
||||
@@ -405,5 +591,46 @@ ProductNum,
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region 记录文件是否已经处理
|
||||
|
||||
|
||||
// 判断文件是否已处理
|
||||
public bool IsFileProcessed(string fileName)
|
||||
{
|
||||
string sql = "SELECT COUNT(*) FROM CJLR_ProcessedFiles WHERE FileName = @FileName";
|
||||
SqlParameter[] paras = { new SqlParameter("@FileName", fileName) };
|
||||
DataTable dt = SQLHelper.ExecuteQuery(sql, paras, CommandType.Text);
|
||||
return dt.Rows.Count > 0 && Convert.ToInt32(dt.Rows[0][0]) > 0;
|
||||
}
|
||||
|
||||
// 记录已处理文件
|
||||
public int InsertProcessedFile(string fileName, string taskCode = null, string position = null)
|
||||
{
|
||||
string sql = @"INSERT INTO CJLR_ProcessedFiles (FileName, TaskCode, Position) VALUES (@FileName, @TaskCode, @Position)";
|
||||
SqlParameter[] paras = {
|
||||
new SqlParameter("@FileName", fileName),
|
||||
new SqlParameter("@TaskCode", (object)taskCode ?? DBNull.Value),
|
||||
new SqlParameter("@Position", (object)position ?? DBNull.Value)
|
||||
};
|
||||
return SQLHelper.ExecuteNonQuery(sql, paras, CommandType.Text);
|
||||
}
|
||||
|
||||
// 获取已处理文件名列表
|
||||
public List<string> GetProcessedFileNames()
|
||||
{
|
||||
string sql = "SELECT FileName FROM CJLR_ProcessedFiles";
|
||||
DataTable dt = SQLHelper.ExecuteQuery(sql, CommandType.Text);
|
||||
var list = new List<string>();
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
list.Add(row["FileName"].ToString());
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
|
||||
namespace NSAnalysis.Model
|
||||
{
|
||||
public class CJLR_MeaDataModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string PointName { get; set; }
|
||||
public string GroupName { get; set; }
|
||||
public string ProductNum { get; set; }
|
||||
public string Model { get; set; }
|
||||
public string Station { get; set; }
|
||||
public string Method { get; set; }
|
||||
public string Standard { get; set; }
|
||||
public string DimensionName { get; set; }
|
||||
public string DimensionValue { get; set; }
|
||||
public string DimensionUnit { get; set; }
|
||||
public bool IsManual { get; set; }
|
||||
public string Classification { get; set; }
|
||||
public string ToleranceName0 { get; set; }
|
||||
public string ToleranceLower0 { get; set; }
|
||||
public string ToleranceUpper0 { get; set; }
|
||||
public string ToleranceName1 { get; set; }
|
||||
public string ToleranceLower1 { get; set; }
|
||||
public string ToleranceUpper1 { get; set; }
|
||||
public string NominalValue { get; set; }
|
||||
public DateTime MeasureDate { get; set; }
|
||||
public TimeSpan MeasureTime { get; set; }
|
||||
public int SequenceNum { get; set; }
|
||||
public DateTime CreatedAt { get; set; }
|
||||
|
||||
// 位置
|
||||
public string Position { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -56,6 +56,5 @@
|
||||
/// Remark 备注
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,6 @@ namespace NSAnalysis.DAL
|
||||
|
||||
public static int iFlag = 0;
|
||||
|
||||
|
||||
private static SqlConnection GetConn()
|
||||
{
|
||||
conn = new SqlConnection(connStr);
|
||||
@@ -36,8 +35,6 @@ namespace NSAnalysis.DAL
|
||||
// 这里建议抛出异常而不是返回未打开的连接
|
||||
throw;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
#region 执行不带参数的增删改SQL语句或存储过程 返回int类型 返回受影响的行数
|
||||
@@ -97,7 +94,6 @@ namespace NSAnalysis.DAL
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
#endregion 执行带参数的增删改SQL语句或存储过程 返回int类型 返回受影响的行数
|
||||
|
||||
#region 执行不带参数的查询SQL语句或存储过程 返回DataTable类型
|
||||
|
||||
+52
-25
@@ -52,7 +52,7 @@ namespace NSAnalysis
|
||||
|
||||
public static string strSkinName = "";
|
||||
public static string strHelpDocumentName = "";
|
||||
public static int iDeleteFlieTime;
|
||||
|
||||
public static string strImagePath = "";
|
||||
|
||||
/// <summary>
|
||||
@@ -84,8 +84,8 @@ namespace NSAnalysis
|
||||
public static double dFPY2 = 0.6;
|
||||
|
||||
public static string strCarModel = ""; //车型
|
||||
public static string strEquipNo = "";
|
||||
public static string strEquipName = "";
|
||||
public static string strEquipNo = ""; // 车号
|
||||
public static string strEquipPosition = ""; //位置
|
||||
public static string strIOTAddress = "";
|
||||
public static string strIOTCarTypeAddress = "";
|
||||
public static int iStartIOTFlag = 1;
|
||||
@@ -93,15 +93,17 @@ namespace NSAnalysis
|
||||
public static string strShowCarLR = "";
|
||||
public static string strCOMPort = "";
|
||||
|
||||
public static int iCreateReportFlag = 0;
|
||||
public static bool iEnableSort = false;
|
||||
public static string strStationName = "";
|
||||
public static string strUploadPath = "";
|
||||
public static string strUploadPath2 = "";
|
||||
public static double dLevel2 = 1.5;
|
||||
|
||||
public static double dLevel3 = 2.0;
|
||||
public static string strReportPath = "";
|
||||
public static string strReportPath2 = "";
|
||||
public static string strReportPath = ""; //保存CSV报告的路径
|
||||
|
||||
// csv报告模板路径
|
||||
public static string strCSVReportTemplatePath = Application.StartupPath + "\\File\\CSVReportTemplate.csv";
|
||||
|
||||
/// <summary>
|
||||
/// 公差带百分比
|
||||
@@ -122,34 +124,56 @@ namespace NSAnalysis
|
||||
{
|
||||
string strSection = "";
|
||||
|
||||
#region 读取系统配置参数
|
||||
|
||||
strSection = "Chery";
|
||||
iDeleteFlieTime = FileIni.ReadInt(ConfigDfn.strConfigFile, strSection, "DeleteDebugFileIntervalTime");
|
||||
|
||||
strSkinName = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "ConfigSkinName");
|
||||
strTheme += strSkinName;
|
||||
strHelpDocumentName = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "SoftwareHelpDocument");
|
||||
strImagePath = strImageFile + FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "CNCPictureName");
|
||||
bLanguage = FileIni.ReadBool(ConfigDfn.strConfigFile, strSection, "Language", 0);
|
||||
bRememberMe = FileIni.ReadBool(ConfigDfn.strConfigFile, strSection, "RememberMe", 0);
|
||||
strNextSenseCSVEH3Path = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "NextsenseCSVEH3Path");
|
||||
|
||||
//密码
|
||||
strPwd = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "Password");
|
||||
iCreateReportFlag = FileIni.ReadInt(ConfigDfn.strConfigFile, strSection, "CreateReportFlag");
|
||||
strUploadPath = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "tavascanUploadPath");
|
||||
strUploadPath2 = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "blacklabelUploadPath");
|
||||
dLevel2 = double.Parse(FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "Level2Times"));
|
||||
dLevel3 = double.Parse(FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "Level3Times"));
|
||||
strReportPath = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "ReportCSVPath");
|
||||
strReportPath2 = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "ReportCSVPath2");
|
||||
// 启用分发功能
|
||||
iEnableSort = FileIni.ReadBool(ConfigDfn.strConfigFile, strSection, "EnableSort");
|
||||
|
||||
// 启用解析
|
||||
iAnalysisCSVFlag = FileIni.ReadInt(ConfigDfn.strConfigFile, strSection, "AnalysisCSVFlag");
|
||||
iRecordEncoderFlag = FileIni.ReadInt(strConfigFile, strSection, "RecordEncoderFlag");
|
||||
iIncludeRangeFlag = FileIni.ReadInt(strConfigFile, strSection, "IncludeRangeFlag");
|
||||
iMeasureItemsCount = FileIni.ReadInt(strConfigFile, strSection, "MeasureCarItemsCount");
|
||||
|
||||
// 保存报告
|
||||
strReportPath = FileIni.ReadString(ConfigDfn.strConfigFile, strSection, "ReportCSVPath");
|
||||
}
|
||||
|
||||
|
||||
#endregion 读取系统配置参数
|
||||
// 保存配置,从全局变量中读取数据,写入到配置文件中
|
||||
public static void SaveConfig()
|
||||
{
|
||||
try
|
||||
{
|
||||
MyBase.TraceWriteLine("保存配置文件——>开始");
|
||||
if (File.Exists(strConfigFile))
|
||||
{
|
||||
string strSection = "Chery";
|
||||
FileIni.WriteString(strConfigFile, strSection, "ConfigSkinName", strSkinName);
|
||||
FileIni.WriteString(strConfigFile, strSection, "SoftwareHelpDocument", strHelpDocumentName);
|
||||
FileIni.WriteString(strConfigFile, strSection, "CNCPictureName", Path.GetFileName(strImagePath));
|
||||
FileIni.WriteBool(strConfigFile, strSection, "Language", bLanguage);
|
||||
FileIni.WriteBool(strConfigFile, strSection, "RememberMe", bRememberMe );
|
||||
FileIni.WriteString(strConfigFile, strSection, "Password", strPwd);
|
||||
FileIni.WriteBool(strConfigFile, strSection, "EnableSort", iEnableSort);
|
||||
FileIni.WriteInt(strConfigFile, strSection, "AnalysisCSVFlag", iAnalysisCSVFlag);
|
||||
FileIni.WriteString(strConfigFile, strSection, "ReportCSVPath", strReportPath);
|
||||
MyBase.TraceWriteLine("保存配置文件——>完成");
|
||||
}
|
||||
else
|
||||
{
|
||||
MyBase.TraceWriteLine("配置文件不存在!");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MyBase.TraceWriteLine("保存配置文件错误:" + ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public static void LoadConfigFile()
|
||||
@@ -159,9 +183,8 @@ namespace NSAnalysis
|
||||
MyBase.TraceWriteLine("加载配置文件——>开始");
|
||||
if (File.Exists(strConfigFile))
|
||||
{
|
||||
LoadConfig();
|
||||
|
||||
DatabaseDfn.LoadConfig();
|
||||
LoadConfig(); //加载软件配置
|
||||
DatabaseDfn.LoadConfig(); //加载数据库配置
|
||||
MyBase.TraceWriteLine("加载配置文件——>完成");
|
||||
}
|
||||
else
|
||||
@@ -184,6 +207,10 @@ namespace NSAnalysis
|
||||
if (!Directory.Exists(ConfigDfn.strDFQFolder))
|
||||
Directory.CreateDirectory(ConfigDfn.strDFQFolder);
|
||||
|
||||
//创建保存报告的路径
|
||||
if (!Directory.Exists(ConfigDfn.strReportPath))
|
||||
Directory.CreateDirectory(ConfigDfn.strReportPath);
|
||||
|
||||
#endregion 检测文件夹,没有则创建
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
+129
-389
@@ -2,9 +2,9 @@
|
||||
|
||||
using NSAnalysis.DAL;
|
||||
using NSAnalysis.Model;
|
||||
using NSAnalysis.Properties;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
@@ -23,8 +23,6 @@ namespace NSAnalysis
|
||||
|
||||
#region 全局变量
|
||||
|
||||
private int[] yValues = new int[3];
|
||||
private string[] xValues = new string[3];
|
||||
private DataTable dtCSVContent = new DataTable();
|
||||
|
||||
private CjlrDAL tmdal = new CjlrDAL();
|
||||
@@ -59,6 +57,9 @@ namespace NSAnalysis
|
||||
|
||||
#endregion 分页全局变量
|
||||
|
||||
private Dictionary<Control, PointF> originalRatios = new Dictionary<Control, PointF>();
|
||||
private Dictionary<Control, SizeF> originalSizes = new Dictionary<Control, SizeF>();
|
||||
|
||||
#endregion 全局变量
|
||||
|
||||
#region 主窗口事件
|
||||
@@ -78,7 +79,7 @@ namespace NSAnalysis
|
||||
{
|
||||
//初始化全局变量
|
||||
|
||||
MyBase.rleMessage = rleMessage;
|
||||
//MyBase.rleMessage = rleMessage;
|
||||
rdtpStartTime.Text = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
rdtpEndTime.Text = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
|
||||
@@ -89,7 +90,7 @@ namespace NSAnalysis
|
||||
|
||||
// 订阅处理中事件
|
||||
fileSorter.OnFileParsed += FileSorter_OnFileParsed;
|
||||
|
||||
fileSorter.OnProcessStep += FileSorter_OnProcessStep;
|
||||
|
||||
|
||||
//绑定按钮
|
||||
@@ -107,22 +108,49 @@ namespace NSAnalysis
|
||||
|
||||
iLastMesureCount = tmdal.SelectTMeasureResultCount();
|
||||
|
||||
#region 清空信息
|
||||
ClearLabel(); //清空信息
|
||||
InitTableColumns();
|
||||
StoreControlRatios(this);
|
||||
}
|
||||
|
||||
private void FileSorter_OnProcessStep(string obj)
|
||||
{
|
||||
if (lbCSVFiles.InvokeRequired)
|
||||
{
|
||||
lbCSVFiles.Invoke(new Action<string>(FileSorter_OnProcessStep), obj);
|
||||
return;
|
||||
}
|
||||
|
||||
// 控件初始化检查
|
||||
if (lbCSVFiles == null)
|
||||
return;
|
||||
|
||||
// 超过100条时清空
|
||||
if (lbCSVFiles.Items.Count > 100)
|
||||
{
|
||||
lbCSVFiles.Items.Clear();
|
||||
}
|
||||
|
||||
lbCSVFiles.Items.Add(obj);
|
||||
|
||||
// 滚动到底部
|
||||
if (lbCSVFiles.Items.Count > 0)
|
||||
{
|
||||
lbCSVFiles.TopIndex = lbCSVFiles.Items.Count - 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ClearLabel()
|
||||
{
|
||||
labVIN.Text = "";
|
||||
labOKCount.Text = "";
|
||||
labNGCount.Text = "";
|
||||
labRejectCount.Text = "";
|
||||
labSumMeasureCount.Text = "";
|
||||
labMeaTime.Text = "";
|
||||
labResultPercent.Text = "";
|
||||
labResult.Text = "";
|
||||
labCarType.Text = "";
|
||||
|
||||
#endregion 清空信息
|
||||
|
||||
InitTableColumns();
|
||||
|
||||
labOKCount_L.Text = "";
|
||||
labNGCount_L.Text = "";
|
||||
labRejectCount_L.Text = "";
|
||||
labSumMeasureCount_L.Text = "";
|
||||
labMeaTime_L.Text = "";
|
||||
}
|
||||
|
||||
private void InitTableColumns()
|
||||
@@ -250,19 +278,18 @@ namespace NSAnalysis
|
||||
});
|
||||
}
|
||||
|
||||
private void DisplayMeasureData(string strCarID)
|
||||
private void DisplayMeasureData(string strCarID) // 其中 string strCarID 是车身ID_L 或 车身ID_R
|
||||
{
|
||||
try
|
||||
{
|
||||
#region 左侧统计和饼图、合格率
|
||||
|
||||
MyBase.TraceWriteLine("正在查询车ID为:" + strCarID + " 的测量结果。");
|
||||
DataTable sampleData = tmdal.SelectMeasureResultByCarID(strCarID);
|
||||
|
||||
if (sampleData == null || sampleData.Rows.Count == 0)
|
||||
{
|
||||
MyBase.TraceWriteLine("[DisplayMeasureData] 没有找到车ID为:" + strCarID + " 的测量数据。");
|
||||
return;
|
||||
}
|
||||
AnalysisResult analysis = AnalysisResult.AnalyzeMeasureData(sampleData);
|
||||
AnalysisResult.DisplayAnalysisResult(analysis);
|
||||
|
||||
// 记录正在查询
|
||||
//AnalysisResult.DisplayAnalysisResult(analysis);
|
||||
|
||||
//表格行数
|
||||
int dtRowCount = analysis.TotalCount;
|
||||
@@ -274,66 +301,15 @@ namespace NSAnalysis
|
||||
double RejectedCount = analysis.RejectedCount;
|
||||
//合格率
|
||||
double FPYPercent = analysis.FPYPercent;
|
||||
|
||||
// 更新统计信息显示
|
||||
labVIN.Text = strCarID;
|
||||
labCarType.Text = ConfigDfn.strCarModel;
|
||||
TMeasureResultModel tmrm = new TMeasureResultModel();
|
||||
labNGCount.Text = OutCount.ToString();
|
||||
labOKCount.Text = OKCount.ToString();
|
||||
labRejectCount.Text = RejectedCount.ToString();
|
||||
labMeaTime.Text = ConfigDfn.strMeasureTime;
|
||||
labSumMeasureCount.Text = dtRowCount.ToString();
|
||||
FPYPercent = OKCount / (OKCount + OutCount);
|
||||
if (FPYPercent >= ConfigDfn.dFPY)
|
||||
{
|
||||
labResultPercent.Text = Math.Round(FPYPercent * 100.00d, 2).ToString("F2") + "%";
|
||||
labResult.Text = "合格";
|
||||
labResultPercent.ForeColor = Color.LimeGreen;
|
||||
labResult.ForeColor = Color.LimeGreen;
|
||||
pbResult.Image = Resources.OK;
|
||||
tmrm.Result = 1;
|
||||
}
|
||||
else if (FPYPercent >= ConfigDfn.dFPY2 && FPYPercent < ConfigDfn.dFPY)
|
||||
{
|
||||
labResultPercent.Text = Math.Round(FPYPercent * 100.00d, 2).ToString("F2") + "%";
|
||||
labResult.Text = "合格";
|
||||
labResultPercent.ForeColor = Color.Yellow;
|
||||
labResult.ForeColor = Color.Yellow;
|
||||
pbResult.Image = Resources.OK;
|
||||
tmrm.Result = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
labResultPercent.Text = Math.Round(FPYPercent * 100.00d, 2).ToString("F2") + "%";
|
||||
labResult.Text = "不合格";
|
||||
labResultPercent.ForeColor = Color.Red;
|
||||
labResult.ForeColor = Color.Red;
|
||||
pbResult.Image = Resources.NG;
|
||||
tmrm.Result = 2;
|
||||
}
|
||||
xValues[0] = "合格 : " + OKCount.ToString();
|
||||
xValues[1] = "不合格 : " + OutCount.ToString();
|
||||
xValues[2] = "异常 : " + RejectedCount.ToString();
|
||||
yValues[0] = (int)OKCount;
|
||||
yValues[1] = (int)OutCount;
|
||||
yValues[2] = (int)RejectedCount;
|
||||
chartResultPie.Series[0].Points.DataBindXY(xValues, yValues);
|
||||
|
||||
string strTargetRate = Math.Round(ConfigDfn.dFPY2 * 100.00d, 2).ToString("F2") + "%";
|
||||
|
||||
tmrm.CarID = strCarID;
|
||||
tmrm.CarType = ConfigDfn.strCarModel;
|
||||
tmrm.SumMeasureItems = dtRowCount;
|
||||
tmrm.GoodMeasureItems = (int)OKCount;
|
||||
tmrm.NoGoodMeasureItems = (int)OutCount;
|
||||
tmrm.RejectMeasureItems = (int)RejectedCount;
|
||||
tmrm.FPY = FPYPercent.ToString("F4");
|
||||
tmrm.Remark = "";
|
||||
tmrm.MeasureDate = ConfigDfn.strMeasureTime;
|
||||
tmdal.InsertTMeasureResult(tmrm);
|
||||
MyBase.TraceWriteLine("将总结果插入数据库完毕。");
|
||||
|
||||
#endregion 左侧统计和饼图、合格率
|
||||
//labPosition_L.Text = "左侧";
|
||||
labOKCount_L.Text = OKCount.ToString();
|
||||
labNGCount_L.Text = OutCount.ToString();
|
||||
labRejectCount_L.Text = RejectedCount.ToString();
|
||||
labSumMeasureCount_L.Text = dtRowCount.ToString();
|
||||
labMeaTime_L.Text = ConfigDfn.strMeasureTime;
|
||||
|
||||
#region 表单区填充
|
||||
|
||||
@@ -379,28 +355,18 @@ namespace NSAnalysis
|
||||
}
|
||||
}
|
||||
|
||||
private void FileSorter_OnFileParsed(string strCarID)
|
||||
private void FileSorter_OnFileParsed(string strCarID, string Position) //形如
|
||||
{
|
||||
// 线程安全更新 UI
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new Action<string>(FileSorter_OnFileParsed), strCarID);
|
||||
Invoke(new Action<string, string>(FileSorter_OnFileParsed), strCarID, Position);
|
||||
return;
|
||||
}
|
||||
|
||||
// 这里可以更新界面控件,例如 ListBox、Label 等
|
||||
// 例如:listBoxParsedFiles.Items.Add(fileName);
|
||||
// 或 rleMessage.Text = $"已解析: {fileName}";
|
||||
rleMessage.Text = $"已解析: {strCarID}";
|
||||
|
||||
|
||||
// 显示数据, 此时为左侧或右侧数据
|
||||
// 显示数据 并更新单侧汇总结果, 此时为左侧或右侧数据
|
||||
DisplayMeasureData(strCarID);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// 通过给定的文件流,判断文件的编码类型
|
||||
/// <param name="fs">文件流</param>
|
||||
/// <returns>文件的编码类型</returns>
|
||||
@@ -816,312 +782,40 @@ namespace NSAnalysis
|
||||
e.Row.HeaderCell.Value = string.Format("{0}", e.Row.Index + 1);
|
||||
}
|
||||
|
||||
private void tmrMonitorDBToCreateReport_Tick(object sender, EventArgs e)
|
||||
{
|
||||
tmrMonitorDBToCreateReport.Stop();
|
||||
int iCurrentMeasureCount = tmdal.SelectTMeasureResultCount();
|
||||
if (iCurrentMeasureCount > iLastMesureCount && (iCurrentMeasureCount == (iLastMesureCount + 1)))
|
||||
{
|
||||
MyBase.TraceWriteLine("监控数据库,开始生成ipn文件:");
|
||||
DataTable dtMeaResult = tmdal.SelectNewestTMeasureResult();
|
||||
string strVIN = dtMeaResult.Rows[0]["CarID"].ToString();
|
||||
DateTime dateMeaDate = Convert.ToDateTime(dtMeaResult.Rows[0]["Remark"].ToString());
|
||||
DataTable dtMeaContent = tmdal.SelectCJLRMeaDataByCarID(strVIN);
|
||||
string strCarType = dtMeaContent.Rows[0][2].ToString();
|
||||
int iMeaCount = dtMeaContent.Rows.Count;
|
||||
|
||||
#region 解析完报告后,重新生成客户模板报告
|
||||
|
||||
string filePath = "";
|
||||
if (strCarType.ToLower().Contains("tava"))
|
||||
{
|
||||
filePath = ConfigDfn.strReportPath + "\\" + strCarType + "_" + strVIN + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".ipn";
|
||||
}
|
||||
else
|
||||
{
|
||||
filePath = ConfigDfn.strReportPath2 + "\\" + strCarType + "_" + strVIN + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".ipn";
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
#region 添加表头
|
||||
|
||||
sb.Append("GAUGE ID");
|
||||
sb.Append("\t");
|
||||
sb.Append("JSN");
|
||||
sb.Append("\t");
|
||||
sb.Append("MO");
|
||||
sb.Append("\t");
|
||||
sb.Append("DAY");
|
||||
sb.Append("\t");
|
||||
sb.Append("YR");
|
||||
sb.Append("\t");
|
||||
sb.Append("HR");
|
||||
sb.Append("\t");
|
||||
sb.Append("MIN");
|
||||
sb.Append("\t");
|
||||
sb.Append("SEC");
|
||||
sb.Append("\t");
|
||||
sb.Append("MODEL");
|
||||
sb.Append("\t");
|
||||
sb.Append("AuxID1");
|
||||
sb.Append("\t");
|
||||
sb.Append("AuxID2");
|
||||
sb.Append("\t");
|
||||
sb.Append("QUAL");
|
||||
sb.Append("\t");
|
||||
sb.Append("SHIFT");
|
||||
sb.Append("\t");
|
||||
sb.Append("DATA TYPE");
|
||||
sb.Append("\t");
|
||||
sb.Append("FIXTURE");
|
||||
sb.Append("\t");
|
||||
for (int i = 0; i < iMeaCount / 2; i++)
|
||||
{
|
||||
string strMeaPointName = dtMeaContent.Rows[i * 2]["MeasPointName"].ToString();
|
||||
string strMPF = strMeaPointName + " Flush";
|
||||
string strMPG = strMeaPointName + " Gap";
|
||||
sb.Append("D " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("D " + strMPG);
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append("B " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("B " + strMPG);
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append("A " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("A " + strMPG);
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append("US " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("LS " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("US " + strMPG);
|
||||
sb.Append("\t");
|
||||
sb.Append("LS " + strMPG);
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append("UR " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("LR " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("UR " + strMPG);
|
||||
sb.Append("\t");
|
||||
sb.Append("LR " + strMPG);
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append("UT " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("LT " + strMPF);
|
||||
sb.Append("\t");
|
||||
sb.Append("UT " + strMPG);
|
||||
sb.Append("\t");
|
||||
sb.Append("LT " + strMPG);
|
||||
sb.Append("\t");
|
||||
}
|
||||
|
||||
#endregion 添加表头
|
||||
|
||||
sb.AppendLine();
|
||||
|
||||
#region 添加内容
|
||||
|
||||
sb.Append(ConfigDfn.strStationName);
|
||||
sb.Append("\t");
|
||||
sb.Append(strVIN);
|
||||
sb.Append("\t");
|
||||
sb.Append(dateMeaDate.Month.ToString());
|
||||
sb.Append("\t");
|
||||
sb.Append(dateMeaDate.Day.ToString());
|
||||
sb.Append("\t");
|
||||
sb.Append(dateMeaDate.Year.ToString().Substring(2));
|
||||
sb.Append("\t");
|
||||
sb.Append(dateMeaDate.Hour.ToString());
|
||||
sb.Append("\t");
|
||||
sb.Append(dateMeaDate.Minute.ToString());
|
||||
sb.Append("\t");
|
||||
sb.Append(dateMeaDate.Second.ToString());
|
||||
sb.Append("\t");
|
||||
if (strCarType.ToLower().Contains("tava"))
|
||||
sb.Append(ConfigDfn.strUploadPath);
|
||||
else
|
||||
{
|
||||
sb.Append(ConfigDfn.strUploadPath2);
|
||||
}
|
||||
sb.Append("\t");
|
||||
sb.Append("Unknow");
|
||||
sb.Append("\t");
|
||||
sb.Append("Unknow");
|
||||
sb.Append("\t");
|
||||
sb.Append("2");
|
||||
sb.Append("\t");
|
||||
sb.Append("");
|
||||
sb.Append("\t");
|
||||
sb.Append("AUTO");
|
||||
sb.Append("\t");
|
||||
sb.Append("NONE");
|
||||
sb.Append("\t");
|
||||
|
||||
double dDevFVal = 0;
|
||||
double dDevGVal = 0;
|
||||
|
||||
double dMeaFVal = 0;
|
||||
double dMeaGVal = 0;
|
||||
|
||||
double dNorFVal = 0;
|
||||
double dNorGVal = 0;
|
||||
|
||||
double dFUpper = 0;
|
||||
double dFLower = 0;
|
||||
double dGUpper = 0;
|
||||
double dGLower = 0;
|
||||
|
||||
double dFUpper2 = 0;
|
||||
double dFLower2 = 0;
|
||||
double dGUpper2 = 0;
|
||||
double dGLower2 = 0;
|
||||
|
||||
double dFUpper3 = 0;
|
||||
double dFLower3 = 0;
|
||||
double dGUpper3 = 0;
|
||||
double dGLower3 = 0;
|
||||
for (int i = 0; i < iMeaCount / 2; i++)
|
||||
{
|
||||
string strMeasureFValue = dtMeaContent.Rows[i * 2]["MeasureValue"].ToString();
|
||||
string strMeasureGValue = dtMeaContent.Rows[i * 2 + 1]["MeasureValue"].ToString();
|
||||
string strNormalFValue = dtMeaContent.Rows[i * 2]["NormalValue"].ToString();
|
||||
string strNormalGValue = dtMeaContent.Rows[i * 2 + 1]["NormalValue"].ToString();
|
||||
|
||||
dNorFVal = double.Parse(strNormalFValue);
|
||||
dNorGVal = double.Parse(strNormalGValue);
|
||||
dFUpper = double.Parse(dtMeaContent.Rows[i * 2]["UpperTolVal"].ToString());
|
||||
dFLower = double.Parse(dtMeaContent.Rows[i * 2]["LowerTolVal"].ToString());
|
||||
dGUpper = double.Parse(dtMeaContent.Rows[i * 2 + 1]["UpperTolVal"].ToString());
|
||||
dGLower = double.Parse(dtMeaContent.Rows[i * 2 + 1]["LowerTolVal"].ToString());
|
||||
|
||||
dFUpper2 = dFUpper * ConfigDfn.dLevel2;
|
||||
dFLower2 = dFLower * ConfigDfn.dLevel2;
|
||||
dGUpper2 = dGUpper * ConfigDfn.dLevel2;
|
||||
dGLower2 = dGLower * ConfigDfn.dLevel2;
|
||||
|
||||
dFUpper3 = dFUpper * ConfigDfn.dLevel3;
|
||||
dFLower3 = dFLower * ConfigDfn.dLevel3;
|
||||
dGUpper3 = dGUpper * ConfigDfn.dLevel3;
|
||||
dGLower3 = dGLower * ConfigDfn.dLevel3;
|
||||
|
||||
if (strMeasureFValue.Contains("inv"))
|
||||
{
|
||||
sb.Append("inv");
|
||||
sb.Append("\t");
|
||||
}
|
||||
else
|
||||
{
|
||||
dMeaFVal = double.Parse(strMeasureFValue);
|
||||
dDevFVal = dMeaFVal - dNorFVal;
|
||||
sb.Append(dDevFVal.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
}
|
||||
if (strMeasureGValue.Contains("inv"))
|
||||
{
|
||||
sb.Append("inv");
|
||||
sb.Append("\t");
|
||||
}
|
||||
else
|
||||
{
|
||||
dMeaGVal = double.Parse(strMeasureGValue);
|
||||
dDevGVal = dMeaGVal - dNorGVal;
|
||||
sb.Append(dDevGVal.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
}
|
||||
|
||||
sb.Append(strNormalFValue);
|
||||
sb.Append("\t");
|
||||
sb.Append(strNormalGValue);
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append(strMeasureFValue);
|
||||
sb.Append("\t");
|
||||
sb.Append(strMeasureGValue);
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append(dFUpper.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dFLower.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dGUpper.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dGLower.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append(dFUpper2.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dFLower2.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dGUpper2.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dGLower2.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
|
||||
sb.Append(dFUpper3.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dFLower3.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dGUpper3.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
sb.Append(dGLower3.ToString("F3"));
|
||||
sb.Append("\t");
|
||||
}
|
||||
|
||||
#endregion 添加内容
|
||||
|
||||
// 将数据写入CSV文件
|
||||
File.WriteAllText(filePath, sb.ToString());
|
||||
MyBase.TraceWriteLine("客户定制ipn报告生成完毕,路径为:" + filePath);
|
||||
|
||||
#endregion 解析完报告后,重新生成客户模板报告
|
||||
}
|
||||
iLastMesureCount = iCurrentMeasureCount;
|
||||
tmrMonitorDBToCreateReport.Start();
|
||||
}
|
||||
|
||||
private void lpcSoftwareSetup_Click(object sender, EventArgs e)
|
||||
{
|
||||
string strInputPwd = MyBase.InputBox("密码", "请输入密码 : ", "", "确定", "取消");
|
||||
if (strInputPwd.Contains("-999.999"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (strInputPwd == ConfigDfn.strPwd)
|
||||
//string strInputPwd = MyBase.InputBox("密码", "请输入密码 : ", "", "确定", "取消");
|
||||
//if (strInputPwd.Contains("-999.999"))
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
//else if (strInputPwd == ConfigDfn.strPwd)
|
||||
{
|
||||
FSoftwareSetup fss = new FSoftwareSetup();
|
||||
fss.ShowDialog(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("密码错误! ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// MessageBox.Show("密码错误! ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
//}
|
||||
}
|
||||
|
||||
private void lpcToleranceSetup_Click(object sender, EventArgs e)
|
||||
{
|
||||
string strInputPwd = MyBase.InputBox("密码", "请输入密码 : ", "", "确定", "取消");
|
||||
if (strInputPwd.Contains("-999.999"))
|
||||
//string strInputPwd = MyBase.InputBox("密码", "请输入密码 : ", "", "确定", "取消");
|
||||
//if (strInputPwd.Contains("-999.999"))
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
//else if (strInputPwd == ConfigDfn.strPwd)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (strInputPwd == ConfigDfn.strPwd)
|
||||
{
|
||||
FToleranceSetup fts = new FToleranceSetup();
|
||||
FConfigSetup fts = new FConfigSetup();
|
||||
fts.ShowDialog(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("密码错误! ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// MessageBox.Show("密码错误! ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
//}
|
||||
}
|
||||
|
||||
private void lpcAboutSoftware_Click(object sender, EventArgs e)
|
||||
@@ -1136,6 +830,52 @@ namespace NSAnalysis
|
||||
}
|
||||
|
||||
#endregion 按钮事件
|
||||
|
||||
private void StoreControlRatios(Control container)
|
||||
{
|
||||
foreach (Control ctrl in container.Controls)
|
||||
{
|
||||
// 存储位置比例
|
||||
originalRatios.Add(ctrl,
|
||||
new PointF((float)ctrl.Left / container.Width,
|
||||
(float)ctrl.Top / container.Height));
|
||||
|
||||
// 存储尺寸比例
|
||||
originalSizes.Add(ctrl,
|
||||
new SizeF((float)ctrl.Width / container.Width,
|
||||
(float)ctrl.Height / container.Height));
|
||||
|
||||
// 递归处理容器控件
|
||||
if (ctrl.HasChildren) StoreControlRatios(ctrl);
|
||||
}
|
||||
}
|
||||
|
||||
private void ScaleControls(Control container)
|
||||
{
|
||||
foreach (var item in originalRatios)
|
||||
{
|
||||
if (!container.Controls.Contains(item.Key)) continue;
|
||||
|
||||
// 调整位置
|
||||
item.Key.Left = (int)(container.Width * item.Value.X);
|
||||
item.Key.Top = (int)(container.Height * item.Value.Y);
|
||||
|
||||
// 调整大小
|
||||
if (originalSizes.TryGetValue(item.Key, out SizeF sizeRatio))
|
||||
{
|
||||
item.Key.Width = (int)(container.Width * sizeRatio.Width);
|
||||
item.Key.Height = (int)(container.Height * sizeRatio.Height);
|
||||
}
|
||||
|
||||
// 递归处理容器控件
|
||||
if (item.Key.HasChildren) ScaleControls(item.Key);
|
||||
}
|
||||
}
|
||||
|
||||
private void FormMain_Resize(object sender, EventArgs e)
|
||||
{
|
||||
ScaleControls(this);
|
||||
}
|
||||
}
|
||||
|
||||
public class AnalysisResult
|
||||
|
||||
Generated
+329
-489
File diff suppressed because it is too large
Load Diff
@@ -296,9 +296,6 @@
|
||||
<metadata name="tmSystem.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tmrMonitorDBToCreateReport.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>128, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>25</value>
|
||||
</metadata>
|
||||
|
||||
+18
-18
@@ -69,8 +69,7 @@
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>
|
||||
</ApplicationIcon>
|
||||
<ApplicationIcon>HexagonTransparent.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Covert, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
@@ -119,7 +118,7 @@
|
||||
<DependentUpon>AboutSoftwareInfo.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BaseUnit\Base.cs" />
|
||||
<Compile Include="BaseUnit\FileSorter.cs" />
|
||||
<Compile Include="CjlrForm\FileSorter.cs" />
|
||||
<Compile Include="BaseUnit\NetworkCopy.cs" />
|
||||
<Compile Include="BaseUnit\RichTextUnit.cs" />
|
||||
<Compile Include="DAL\Model\CjlrTaskReleaseDetailModel.cs" />
|
||||
@@ -141,17 +140,17 @@
|
||||
<Compile Include="DAL\SQLHelper.cs" />
|
||||
<Compile Include="DAL\CjlrDAL.cs" />
|
||||
<Compile Include="DAL\Model\TMeasureResultModel.cs" />
|
||||
<Compile Include="CjlrForm\FAddTolerance.cs">
|
||||
<Compile Include="CjlrForm\FAddConfig.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CjlrForm\FAddTolerance.designer.cs">
|
||||
<DependentUpon>FAddTolerance.cs</DependentUpon>
|
||||
<Compile Include="CjlrForm\FAddConfig.designer.cs">
|
||||
<DependentUpon>FAddConfig.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CjlrForm\FEditTolerance.cs">
|
||||
<Compile Include="CjlrForm\FEditConfig.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CjlrForm\FEditTolerance.designer.cs">
|
||||
<DependentUpon>FEditTolerance.cs</DependentUpon>
|
||||
<Compile Include="CjlrForm\FEditConfig.designer.cs">
|
||||
<DependentUpon>FEditConfig.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CjlrForm\FSoftwareSetup.cs">
|
||||
<SubType>Form</SubType>
|
||||
@@ -159,11 +158,11 @@
|
||||
<Compile Include="CjlrForm\FSoftwareSetup.designer.cs">
|
||||
<DependentUpon>FSoftwareSetup.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CjlrForm\FToleranceSetup.cs">
|
||||
<Compile Include="CjlrForm\FConfigSetup.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CjlrForm\FToleranceSetup.designer.cs">
|
||||
<DependentUpon>FToleranceSetup.cs</DependentUpon>
|
||||
<Compile Include="CjlrForm\FConfigSetup.designer.cs">
|
||||
<DependentUpon>FConfigSetup.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="BaseUnit\ZSFDEMO.cs">
|
||||
<SubType>Form</SubType>
|
||||
@@ -193,17 +192,17 @@
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="CjlrForm\FAddTolerance.resx">
|
||||
<DependentUpon>FAddTolerance.cs</DependentUpon>
|
||||
<EmbeddedResource Include="CjlrForm\FAddConfig.resx">
|
||||
<DependentUpon>FAddConfig.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="CjlrForm\FEditTolerance.resx">
|
||||
<DependentUpon>FEditTolerance.cs</DependentUpon>
|
||||
<EmbeddedResource Include="CjlrForm\FEditConfig.resx">
|
||||
<DependentUpon>FEditConfig.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="CjlrForm\FSoftwareSetup.resx">
|
||||
<DependentUpon>FSoftwareSetup.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="CjlrForm\FToleranceSetup.resx">
|
||||
<DependentUpon>FToleranceSetup.cs</DependentUpon>
|
||||
<EmbeddedResource Include="CjlrForm\FConfigSetup.resx">
|
||||
<DependentUpon>FConfigSetup.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="BaseUnit\ZSFDEMO.resx">
|
||||
<DependentUpon>ZSFDEMO.cs</DependentUpon>
|
||||
@@ -227,6 +226,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<!--sirinie -->
|
||||
<Content Include="HexagonTransparent.ico" />
|
||||
<Content Include="Images\1024B-2.png" />
|
||||
<Content Include="Images\cncmachine32.png" />
|
||||
<Content Include="Images\Dashboard.png" />
|
||||
|
||||
+66
-43
@@ -1,6 +1,5 @@
|
||||
using BaseFunction;
|
||||
using Microsoft.Win32;
|
||||
using NSAnalysis;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
@@ -83,49 +82,73 @@ namespace NSAnalysis
|
||||
|
||||
#endregion 创建Log文件
|
||||
|
||||
|
||||
if (gAuthorizationMode == 1)
|
||||
{
|
||||
MyBase.TraceWriteLine("Log in using the CLMS authorization.");
|
||||
|
||||
#region 检测CLMS
|
||||
|
||||
/////1登陆验证
|
||||
//验证内容为软件指纹文件中字符串,功能:使用MORCODE.DLL前验证使用软件是否正确,否则其他函数都不可正常调用
|
||||
StringBuilder password = new StringBuilder("vravnhNYybkmDkHDPKhVIwbHMoqHktgqWHFkBTOUsZLLVLwaAOkPIFFoVffUnSqUkCApSxrWQmsKvYCdVUpZLOhuHshKFbUPezYYbyQCgUoHrFOaaLVSosAapdVagrfFSqDUzxCvVuSJodxkjBiCJdRUfhCIfyRzjLdTfkxtUHPYUHyQbzOaJFvdSbzLihYmuhLHFNUSbERcAFbnrvNQtZOCUSUnHFcySXzTbfqTgzeaWQrjoSTzEUYDkEUmqusV");
|
||||
bool res = CLM_Login(password);
|
||||
if (!res)
|
||||
{
|
||||
MyBase.TraceWriteLine("CLMS Login Failed.");
|
||||
MessageBox.Show("CLMS Login fails. Please authorize the user first! ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
/////2检查许可
|
||||
//该函数自动检查电脑中是否有当前软件的许可信息,过期/非本机电脑/其他软件 的许可证书都不会识别
|
||||
res = CLM_Login_Scope();
|
||||
if (!res)
|
||||
{
|
||||
//检查许可失败
|
||||
MyBase.TraceWriteLine("CLMS check license failed! Please authorize the operation.");
|
||||
MessageBox.Show("The CLMS failed to check for permissions. Please authorize first! ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
//3获取许可模块是否可用
|
||||
//输入模块ID验证模块可用性
|
||||
UInt16 mod = (UInt16)gCLMSModeID;//模块ID
|
||||
UInt16 type = 0;//暂无定义
|
||||
|
||||
res = CLM_ModuleIsLicensed(ref mod, ref type);//res true:可用 false:不可用
|
||||
if (!res)
|
||||
{
|
||||
MyBase.TraceWriteLine("The CLMS module is unavailable!");
|
||||
MessageBox.Show(mod.ToString() + " The CLMS module is unavailable!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
//4获取到期日期
|
||||
int Year = 0, Month = 0, Day = 0;
|
||||
res = CLM_GetWarrantyExpiration(ref Month, ref Day, ref Year);
|
||||
if (!res)
|
||||
{
|
||||
//登陆验证失败
|
||||
MyBase.TraceWriteLine("Login verification failed, authorization time is up, please contact Hexagon company for authorization! The maturity time is:" + Year.ToString() + "." + Month.ToString() + "." + Day.ToString());
|
||||
MessageBox.Show("Login verification failed, authorization time is up, please contact Hexagon company for authorization! The maturity time is:" + Year.ToString() + "." + Month.ToString() + "." + Day.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (res)
|
||||
{
|
||||
ConfigDfn.strExpiredTime = Year.ToString() + "-" + Month.ToString() + "-" + Day.ToString();
|
||||
}
|
||||
|
||||
#endregion 检测CLMS
|
||||
|
||||
Application.Run(new FormMain());
|
||||
//FileSorter fileSorter = new FileSorter();
|
||||
//fileSorter.test();
|
||||
}
|
||||
else
|
||||
{
|
||||
MyBase.TraceWriteLine("Log in using the original authorization mode.");
|
||||
Licence.GetRegisterInfo();
|
||||
Licence.Encryption_DLL();
|
||||
}
|
||||
|
||||
//if (gAuthorizationMode == 1)
|
||||
// {
|
||||
// MyBase.TraceWriteLine("Log in using the CLMS authorization.");
|
||||
|
||||
// #region 检测CLMS
|
||||
|
||||
// /////1登陆验证 //验证内容为软件指纹文件中字符串,功能:使用MORCODE.DLL前验证使用软件是否正确,否则其他函数都不可正常调用 StringBuilder
|
||||
// password = new
|
||||
// StringBuilder("vravnhNYybkmDkHDPKhVIwbHMoqHktgqWHFkBTOUsZLLVLwaAOkPIFFoVffUnSqUkCApSxrWQmsKvYCdVUpZLOhuHshKFbUPezYYbyQCgUoHrFOaaLVSosAapdVagrfFSqDUzxCvVuSJodxkjBiCJdRUfhCIfyRzjLdTfkxtUHPYUHyQbzOaJFvdSbzLihYmuhLHFNUSbERcAFbnrvNQtZOCUSUnHFcySXzTbfqTgzeaWQrjoSTzEUYDkEUmqusV");
|
||||
// bool res = CLM_Login(password); if (!res) { MyBase.TraceWriteLine("CLMS Login
|
||||
// Failed."); MessageBox.Show("CLMS Login fails. Please authorize the user first! ",
|
||||
// "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } /////2检查许可
|
||||
// //该函数自动检查电脑中是否有当前软件的许可信息,过期/非本机电脑/其他软件 的许可证书都不会识别 res = CLM_Login_Scope(); if (!res)
|
||||
// { //检查许可失败 MyBase.TraceWriteLine("CLMS check license failed! Please authorize the
|
||||
// operation."); MessageBox.Show("The CLMS failed to check for permissions. Please
|
||||
// authorize first! ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
|
||||
// //3获取许可模块是否可用 //输入模块ID验证模块可用性 UInt16 mod = (UInt16)gCLMSModeID;//模块ID UInt16 type = 0;//暂无定义
|
||||
|
||||
// res = CLM_ModuleIsLicensed(ref mod, ref type);//res true:可用 false:不可用 if (!res) {
|
||||
// MyBase.TraceWriteLine("The CLMS module is unavailable!");
|
||||
// MessageBox.Show(mod.ToString() + " The CLMS module is unavailable!", "Error",
|
||||
// MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
|
||||
|
||||
// //4获取到期日期 int Year = 0, Month = 0, Day = 0; res = CLM_GetWarrantyExpiration(ref
|
||||
// Month, ref Day, ref Year); if (!res) { //登陆验证失败 MyBase.TraceWriteLine("Login
|
||||
// verification failed, authorization time is up, please contact Hexagon company for
|
||||
// authorization! The maturity time is:" + Year.ToString() + "." + Month.ToString() +
|
||||
// "." + Day.ToString()); MessageBox.Show("Login verification failed, authorization time
|
||||
// is up, please contact Hexagon company for authorization! The maturity time is:" +
|
||||
// Year.ToString() + "." + Month.ToString() + "." + Day.ToString(), "Error",
|
||||
// MessageBoxButtons.OK, MessageBoxIcon.Error); return; }
|
||||
|
||||
// if (res) { ConfigDfn.strExpiredTime = Year.ToString() + "-" + Month.ToString() + "-"
|
||||
// + Day.ToString(); }
|
||||
|
||||
// #endregion 检测CLMS
|
||||
|
||||
// Application.Run(new FormMain()); } else { MyBase.TraceWriteLine("Log in using the
|
||||
// original authorization mode."); Licence.GetRegisterInfo(); Licence.Encryption_DLL(); }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +189,7 @@ namespace NSAnalysis
|
||||
foreach (Process instance in processes)
|
||||
{
|
||||
string pro = instance.ProcessName;
|
||||
if (pro.ToLower() == "cheryanalysis")
|
||||
if (pro.ToLower() == "NSAnalysis")
|
||||
{
|
||||
Num++;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Generated
+2066
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,381 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="label2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAABqdJREFUWEe1lnlQE1ccx61HPXEqFEdtx0GtZ1uPTq3V1mPafxjbomO1VVtrj1E7
|
||||
VfHgMOQggCggoAUUCEqCEIwElQAaslnIJrsBkpAGstlkNxFF28HqqONU7WhFeX27SWg8qFHxN/Mdluzb
|
||||
9/38fu/93m6/5wkAwAAx6pqytEITue1M5Qbfzy8/JFbroJUVTaEK24UF62vM0UsravKSMancd/vlBsz6
|
||||
lXLi4qivq1qWTJRihklS9dUVVSWdKlJwwjfk5cU6pXX8UmXT1jlluDZUgt4ano90rVJJu3NNaZ11roSX
|
||||
A8CWex9GjZlVii9/76i+8K1irDFcgl4elq8FU0tUIF6XCypJEQTg9S0AW+of1LbwbQg1O6besXqKDCsP
|
||||
K0RvjCjQPhgCzYfmI2CFqgQcNKcBDZPQiTB9XAGlUjngG1XLynly4tjYooYrrClnXICCYQVaMLIQAQWW
|
||||
NKCiRH0L8HE5MWruUf38KcU6bXhR/aWQfO2dofnerP1640gtWFktg+ZCoKH5zwWwGMMGrjtlDhOLQX/f
|
||||
T95YVtUcEVnZ/O2YovorsNxd0Lwnc1YjCzVgtrwSZDZlArWLD6DxMwFkN1GhySbnwvVq20+LKogfFyux
|
||||
Eb5b3thUb5uxTtMSEyHTgZBC9CFz9nq8tAYsh2tfDbNHYPZa5ukVEAPQX4x1DNltYibsNbs+5+OOrO/U
|
||||
VjRCqpOOlWCv+4Z5IwanZuzQtcVEVZtB+OH6xwAiT5aBjMZMLnNWQQGw5kbHpD0m+pDA6Li0HrHdX3Dc
|
||||
eH1IPiId8SSAGD0Zsw2zg3flOAgr8kKwmuZruxonzD4YANhJApyKFBLOXB7hcO4ykDfhvPc/OdkMwiT1
|
||||
/w8QizvAUpUJTD6qhy3Htp0WrK0tBgfhzoeGnLFfjwJkGOkQcSM5TUhQMXycqoDGzjicvBMH51x1uoVL
|
||||
DJ4jvQPEQQB28Aa0FcyvMILQIi0YffgMt/FOOBJ7Mn8UgC212EiPS8AdHyUaqa1CI9UR7zOOM5Bgh56E
|
||||
8zWCccU6MPjQUwDi2YegvoTE8xT1IKqqFJ54j5sHAqQ0O6bDrDN24WRrrIF8wBn7tBOaf4/YOHN2PwUN
|
||||
EA33wk6MAEesad1ql+AhAPa6DrbiMfuev9ONRzr4jc52mPE1WO67geasNuvawNtlOGxj72YOGoBvdPy5
|
||||
z2SyIcy+NoTh/8Oa+lViSwGJhgNgQ52sa01tzW0e7uj2P8f+9V9v1dnBarUVdlUDd4oGDRBvILv3mFyE
|
||||
lLRlmC5IsrWM6MYZp6CbPX7lbUkgtiEPLKxQgMkldWDuMaLHNFBwKbjSL6ps6ummoJcgscl5p5jsSMc8
|
||||
njfPdaLj9WfTmQr77nvJ+AEwX6EEwwsQbsLRMLPeANiNF1ll4trZf54EDZBlcZcXtrZ/pqLpkGMkMzPL
|
||||
hLasqK69OUFaDUZJ6rjW7A3Av/Yrai3gHW/bPQMATu0QGp3XS8kL0WXUxahsi3t1lsWTIySsv396Er8D
|
||||
X1IPlfNRAM4clp7dwB/CNh57RNcz9qkACRCAh5PRaRbadcrduabUcSE23cygCYSDa6uoGjOYWqrvAWDl
|
||||
B/BnzSoGAqzX/AYiZBiXfeB4Vr0CiE3UjOQm15bD9vNEajN9jU9Q9wIn3gLbKarGAtff206sRsN3xqMA
|
||||
2/V2ru1ek/xXrUD1CgDfVmEZZvp9UaMzehdu3wUn48NjWeDXTr1dsB1rzI5GpYY4XW5XPJYDeNjBv0SG
|
||||
w6R/jNjYdDDXcpJIxPMAT58D2DGBim3IubUZLbAuq5KvnVlaOtxn7Y0cj2fwHtwTHmukZvemzObaJUdb
|
||||
D2yXt6XckrcmdctbU66Ute7Vsvd+taBzZW3HtyrIHHM5bNVAye1J9xX2VEpBZiikbTk7N2pk0zZaJYN8
|
||||
1sGH2pMzWEtnjEPdog6EFtwNfBmhrrwwgzt9k4bhX/YfWBqG1wX/vw3PkT907tT9eHvWp9ZOyTBushcJ
|
||||
/dk0PsoktgUCNDCJ6xBaeNpv7pXQ3cAkFzZ3FERQlPJV7uG+iNPk9onwc7wYmlAsgOVi/kSdO6VUS/Ov
|
||||
IHTCfZQWuRBGlIrQoi/wc3unYB2yIezXtu/xFw+lctWAOpr3s5YWKFgAon3/xnp3cjPKCDsamCTUelHG
|
||||
M5zL/kBDiUN9j/R9EOdzZ+k8yb/At2NlgydJjTKiVtSdVKk/m/kVANjAPs34ScEaMJfVMw3t6bm6s6lp
|
||||
qEc4R0mJ+26dgwn6qipE706fjsJ1VnvEI8VA/PC3/lOjX79/AdonQT85iOsDAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="PointName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="DimensionName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="NormalVal.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="LowerTolVal.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="UpperTolVal.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="MeasureValue.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="MeasureDateTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Classification.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="rpvpAnalysis.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAB4AAAAYCAYAAADtaU2/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH5AkVCAAngM/SOwAAAoNJREFU
|
||||
SEu1lsvLTWEUh7cIJQbEwIRipoSRiRiIAf4AxcB1YGJgIkWhFBHKyOQrA5JigmKipIQJGZCJWwauySWX
|
||||
iOf5etfu/XbrHMftV0/tvd61fr/O2e9+z2kG1GRYAUfgGjyFtwWvrblmj71/rSmwGa7Ce/jxC+yx1xln
|
||||
f1ujYDlo8h26AbdhS8Hr7rozzuqh10AaC9vgNXQN5Q0shpDX1rJePfTSs69s2A1fIDOS+zANQlPBWtYr
|
||||
X0HPvuFbIUJvwTG4At9KTd7BKgh5bS3W7XXGWT2s6al3Kr+yF2DjdZgByl16DsJYHsK+gtf1mr2xs/XQ
|
||||
y7reS2CEJsEliOG9UGsjxFoXN5LPODbhBqilV/SaYVar1eCziIaTMAZC+yHWupyA+XC53Nsb0kOv6DXD
|
||||
rGFNgIsQi/IRNFgK2+EV1OuBz24lqONgzV5nnNVDr3rGLDObRdDL+HNSq3kEM8Gv72apBb1mzTKz2VUK
|
||||
f8J5GA0LoNe7nGFmc6Eq+CoMcjQGO0F5RGbrgZ71K2lm+/J72G+ChbAHPkA0ZnyCZaCGIOvRQy899TbD
|
||||
upnN83Kzw5sid+MZqE26PIDp4I/BnVLrokf9dphh3cz22azxptJRqE0Cd7KGsZvnwkvIevWoZYZ1M5sn
|
||||
5eYseO6qOXAXapPgIIyHkNeHIOvVQy+ltxnWzWzPU08ejzcPhHul1uUxzIKurLmWzeilp95xuvnq9dwY
|
||||
GQ6MOPKKJsINyGYyzGzWQ31c9sNPNRu66veJu5i1DoaH3KFZU4bPeByEvD4AWW+GWe3jOgxZU4ZH4SlY
|
||||
C+7S06WW9WaY1WoePIOs8V9ihlmt/EPm3xP/SXja/A/0NoOspvkJxD7h7QqkS00AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="resource.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
vAAADrwBlbxySQAAACFJREFUGFdjEHXq/o+OGf4DAbIACDCAAEwCLgADCAEGBgDP4STWpID5ywAAAABJ
|
||||
RU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn6.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn7.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="MeasureItemResult.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn9.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn10.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn11.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn12.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn13.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn14.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="dataGridViewTextBoxColumn16.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="SMResult.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="rpvpSearch.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH5AEGATc06Xu77gAAAihJREFU
|
||||
WEft1j1rFUEUgOH1IwYLCzEKSSAQVLBRkkZ/gEYs468w1iJoY6ud2gqKIfEXWAh2GhNrP8DYRcEETaNi
|
||||
YSHq+152YLKe3J1ELiLcAw8sO2fO7MfM7Fb96Mf/GIPYj0MYrXnsOdt6EgdwGlcwjwW8wErNY8/ZZo65
|
||||
9vnrGMclLOIzfhUy1z72tcaWYx8uwDv7iWiQEva1hrWsWRSHMYfviIomX7FW8zjKSaxlTWt3jUk8RVQk
|
||||
ccDbOIcjNY89Z1vUJ7H2BMI4jueIOiYvcRY7sAvOfnls2GZO1Dd5hmPYEMN4hKhD4t05gOFd3MNy7S58
|
||||
eoY5bU/iIRyzEwO4jrbJdgs7YVxEc468wkkY5uZtTY51A3tQnccnRInJF5xBir24hm/I8+5jN8y1T97W
|
||||
5JiO3VmvUUJuFc5g372PbgRHcQc/kPLe4CBc+/bJa0Qcu1rKTmzGYhZ1d3uCD3iPj8hfnRfgpCy9AFdF
|
||||
8Stwe3W+uN1GOZpF6StYxzQ6E8EJ0TYJb8I4hddotnvONsPcZntuwyQ0fK8ujSg5cWlNwXDJufTe1vJl
|
||||
aM6WlmEKNwc3iahD4iaTLiLaiGxr24iceH9sRClO4DGijomTy3Xe3Io91zbxrO0YXWMMTqaSj5EDquRj
|
||||
ZE1rF4Wfzhn4ONsmZzf2tYa1ij/HebieL2O7PyT23dYPSTOG4D5wFQ/g75d39q7msedsM8dc+/Qk/slP
|
||||
aT/60aOoqt9oGogfMlqpmgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="rpvpSetup.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6
|
||||
JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH5AQOAhEQGbTF3QAABH1JREFU
|
||||
WEe111mobmMcx/FtnnKcDJlFiDLPM+UgQy50RIZSCDdKUUKIQm7IkIgoKQ7HPAtlvJFypSjKPBbKPP8+
|
||||
613/09rLepe95fzqe1rredd+hv/4nJn/oLXDHeHP8FfLH+H+sF5Y7jo2/BK+Dx+0eP49LA7/m1YJq00e
|
||||
Z+mS4NS3hc1abmzHrg59rdoyL+0floanw6mhNrJCuC9Y7CwDrU4Jxh4PKxmIHODE8FQwfniYkw4I7wYT
|
||||
4tdwe9gu7BHeDj+Fg0PJ+HfhvbBf2DrcHHxX83wcjg6jcvJ3Qp3mivB5+87X9fxG2CCUFoZXgt++CO+3
|
||||
z1+GK4O5vNvEkWFQTMbsPvQHGwdikWeC03wdHgoHhb72CtzzVfg5vBgODbRJeCyYm0uGYqsZtJCPnLwr
|
||||
Jzww7BrGAsohdgm+XddARxcGcz8fVjcwJAHH558F7hjTgrBlyzoGRrRb4MLfwhkGpokVBJydsoaT97Vj
|
||||
uCow6Ustj7ZjfutrrVCuvSesEUYl2u2Wz5myJL1OD8+FywKfb9Gye1Af/HZ2qFSkfYNCJThZYlTyXEqJ
|
||||
dgHH5yWLvxz2bN4m324YBOuKBiIWeCSc07xNtH34JHwTBK+/myW1XXm9OIhiec5cD4YKOBM7XS1uk3cH
|
||||
qYcHQtWFHYJva/M2d2cwpxTXMy4Nx4UmUDUWtd0HYHp53k01/mV2svibwdhOwYKXh7dCpd0F4brJYyOm
|
||||
fz38GGodAWnjTVfjI7VdeXWSbpER7QKOz5nPyS3elxhgtZXDzkEZ73bH9YOYOjPcGqxpI80/gk5TGZI0
|
||||
E+mCbaPA5E7el+B9LZjHARScrcKQfGPNOW9A8NmAgLMBZu9rm/Bq2DzYwJNh2gY2Dcs24DLBHDeEkwMf
|
||||
d/NfkZHn/Cig+K3ioavzg3xXDW3w2dB1pXmk60nh+rDMBaLSZcILdDUmr4gnPudjOiQIuIsCszu5xQXm
|
||||
okDnhZsmj41s6IVg7lrHmg7WBMrx4ZrwRKhOdm9wGqo0rEon2gUcn3OJk9fi2wbf7t28TaxW1fXDIDau
|
||||
DSeEf1zhRLAeoI3qaqK5pMI9HMr/vhU3fF4btfiScG7zNhEracPfhsOCvxuVywQraKn9UqzCOZ08lwl8
|
||||
LL1sitn53eLdUuxAPwQNbqhXzJKTuMkwl37eb6kkGAWRPBfp3GZhPi+zd6XS1oXkrjB4Fyi5w6mEXFBV
|
||||
bZr4T5qhG+1DsjH9QKs/zcCQ1H0BYqeuUV1pqfsEjaUaz5D8xufuhU7eVd2mp15IbIA5faT01pVMUxHl
|
||||
8tYpNJZulyyJA9H+UeDzKt+0ZrglmJvrprrhiCBifShHXaOqYnGLlupZYxF8Jf1CnvtNtAs4zzasy9bi
|
||||
n4ajwqiOCbUJ6FpuMoJPh9RSdbVuhqhwiow8l2qiXcDxec1jcW1/TrJL8eBU7nB1jdINlWITdu92yqsx
|
||||
f1N5zswCjs+Z/V9P3pcJhoLFZcJiWqpCpLFIS2MqXF/mGE29+cpNhlsEpfiAZ7VdeV3uUpzKDV0E7Tz/
|
||||
ez4z8zeeNDGa23P9IwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="tmSystem.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="tmrMonitorDBToCreateReport.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>128, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>25</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AACt5tMNidzBKYTbviZ92LoOedi5AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAzO/jAbfp2C6J3MGShNu+h3zYujF52LkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAACS3sYvgtq+anrYuquB2r22ftm7z4DZvKuL3MJWzvDkBM7w5AEAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAbtSzA3nXuWh82Lqnedi5rI7dxGaB2r3Hfdi734DZvbuf4sx4jt3DNn7Z
|
||||
uxIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB01bYieNe4nXrYudR52LmsmODJIoPavqJ72Lrpedi5/H3Y
|
||||
u9Z92LqEfdi6TYjbwCaX4MgIl+DIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIfbwHp+2bvQedi55XnYuawAAAAAf9m8XXzY
|
||||
urR52Ln/edi5/3nYuf982LrZgtm9mJfgyCCX4MgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIbbvweG278aftm733vYufh52Lnledi5rAAA
|
||||
AACN3MITiNvAZ3rYueh52Ln/edi5/3nYuft62Ln0ftm744Tavo6N3cNDld/HCgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA2cuMB9fIhRXTwnUw08J1MNPCdTDTwnUw08J1MNPCdTDTwnUwssiKQI/PonCC0aXzgdCl/oLQ
|
||||
pOmGz6O608J1MLzLkDWp0J5tktKoyYDQpf+A0KX/gNCl/4DQpf+B0aX8hNGn1IrSqKeRz59yoLhlKKC4
|
||||
ZQUAAAAAAAAAAAAAAADXyIYT18mHNNXFfW7Tw3h308J2etPCdXvTwnV708J1e9LBc3vFv3GNnrxvwZK/
|
||||
dvuRv3b/lMB58ZvBfdLTwnV708J1e8bFgJSuy5LDk8J+/5HAeP+Rv3b/kb92/5G/dv+Rv3b/kr5085e7
|
||||
bMylsFBarKg5CwAAAAAAAAAAAAAAANbGfyrXx4Js3tGbw9fIhezUxHr608J1/9PCdf/TwnX/0L5s/8qy
|
||||
Tv+7lwv/upYI/7qWCP+8mxb/w6Y1/9PCdf/TwnX/08J1/9HAcP/Coyv/vJkQ/7qWCP+6lgj/upYI/7qW
|
||||
CP+6lgj/upYI7bqWCJ66lggUAAAAAAAAAAAAAAAA08N4KtTDeG7YyojW5dmwWeHUo3TZyom71MR6/dPC
|
||||
df/Jsk7/wKIn/7qWCP+6lgj/upYI/72bFv/DpjX/08J1/9PCdf/TwnX/0sFz/824X/+/nyD/upYK/7qW
|
||||
CP+6lgj/upYI/7qWCP+6lgjtupYInrqWCBQAAAAAAAAAAAAAAADTwnUq08J2cdXFfe3g1KJu4NSiTtrL
|
||||
jljay42RzMN84sKtQ/e8mhX/upYI/7qWCP+7lwn/vZsW/8OmNf/Twnb/08J2/9PCdf/SwXX/0b9u/8Sp
|
||||
OP++nBn/upYI/7uXCf+7lwn/u5cJ/7qWCO26lgieupYIFAAAAAAAAAAAAAAAANPCdSrTwnVz08J2/9rL
|
||||
jaXd0JlL2Nu2DdjVqC67yY3Ls7FS8rGeIf+3mRH/upYJ/7qWCP+9mxb/w6Y1/9PCdv/Twnb/08J2/9PC
|
||||
df/TwnX/yrNS/8KkLP+6lgr/u5cJ/7uXCf+7lwn/upYI7bqWCJ66lggUAAAAAAAAAAAAAAAA08J1KtPC
|
||||
dXPTwnb/1sZ/99/SnYje374cuunaHonbwdiE0an6j8KB/6qnOf+5lwv/upYI/72bFv/DpjX/08J2/9PC
|
||||
dv/Twnb/08J2/9PCdv/SwHH/yK9I/7yaE/+7lwn/u5cJ/7uXCf+6lgjtupYInrqWCBQAAAAAAAAAAAAA
|
||||
AADTwnUq08J1c9PCdv/Twnb+18iGw8/Sn4mZ4MmNftm773vWtv591LD/gNCk/5O9dP+nqT3/t6Al/8Om
|
||||
Nf/Twnb/08J2/9PCdv/Twnb/08J2/9LBdP/OuWD/xqs+/7qWCP+6lgj/u5cJ/7qWCO26lgieupYIFAAA
|
||||
AAAAAAAAAAAAANPCdSrTwnVz08J2/9PCdf/UxHvnyMmLzovZudB72Ln5edi5/3nYuf952Ln/gs6g/4/B
|
||||
fv+fuGb7s7Ra9NTDeP7Twnb/08J1/9PCdv/Twnb/08J1/9G+bf/Mtlj/vZsV/7qXCv+6lgj/upYI7bqW
|
||||
CJ66lggUAAAAAAAAAAAAAAAA08J1KtPCdXPTwnb/08J1/9G/bv/Dv3L/iM2d/nvWtv952Ln/eti6/3rY
|
||||
uv952Ln/eta3/4XRp/WdxYjf1cV73NPDd+zTwnX408J1/9PCdf/TwnX/08J1/9C+a//Coyv/u5gO/7qW
|
||||
CP+6lgjtupYInrqWCBQAAAAAAAAAAAAAAADTwnUq08J1c9PCdv/TwnX/y7RT/7ynN/+ir07/ftKr/3nY
|
||||
uf962Lr/eti6/3rYuv962Lr/edi55XnYuazWxoEp1MR8idPDeM/TwnX908J1/9PCdf/TwnX/0sBy/865
|
||||
YP++nRr/u5cJ/7qWCO26lgieupYIFAAAAAAAAAAAAAAAANPCdSrTwnVz08J1/8+7Zf/EqTn/upoS/7Wb
|
||||
Fv+Lxov/ftOs/3nYuf962Lr/eti6/3rYuv952Lnledi5rNbGgQjUxHwa1MR7O9XFfm3VxX3f08J399PC
|
||||
df/SwXX/0sBx/8WpOf++nRr/upYI7bqWCJ66lggUAAAAAAAAAAAAAAAA08J1KtPCdHPTwnT/yLBK/8Ch
|
||||
Jf+6lgn/upYJ/52zWv+HypT/edi4/3rYuv962Lr/eti6/3nYueV52LmsAAAAAAAAAADWxoEN1cV+KNTE
|
||||
fHPUw3qp08J41dPCdvfTwnX/y7RV/8KkLf+6lwvtupYInrqWCBQAAAAAAAAAAAAAAADTwnUq0sF0c9G/
|
||||
b//CpC3/vJoT/7qWCP+6lgj/sKAo/5K+dv981bL/edi5/3nYuf962Lr/edi55XnYuawAAAAAAAAAAAAA
|
||||
AAAAAAAA0sJ4AdTEfEjVxHyS1MN51dPCd/LRv2/8x61C/7yaE+26lgieupYIFAAAAAAAAAAAAAAAANPC
|
||||
dSrRv3BzybFO/7ybFf+6lgj/u5cJ/7uXCf+6lgj/o61I/4vFif952Ln/edi5/3rYuv952Lnledi5rAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAANXGhgjVxoYj18iGldTEe+bOuV/8xak67bqWCJ66lggUAAAAAAAA
|
||||
AAAAAAAAz7xpKs23XnO+nyD/u5gN/7qWCP+7lwn/u5cJ/7qWCP+ynh7/oLBQ/3zUsf9617n/eti6/3nY
|
||||
ueV52LmsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1caGAtXGhgjXyIYh2MmHTNTDeozNt167vp4gnr2b
|
||||
GBQAAAAAAAAAAAAAAADIrU4gx6xIXLyaGOm7lwz7upYJ/7qWCP+7lwn/u5cJ/7iYDv+rpDD/i8aL/3rW
|
||||
tv952Ln/edi55XnYuawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADazI0S1seCPc23
|
||||
YGPEqD9ixKhCDAAAAAAAAAAAAAAAAMKiNxHBojY5v54nuryaFea7lw33upYJ/bqWCP+6lgj/upYI/7Oc
|
||||
G/+fsVT/fNSw/3rXuP952Lnledi5rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAy7JfBMuyXxPLsl8CAAAAAAAAAAAAAAAAAAAAAAAAAADUvIcDy69bVMOkN6a9mhnpupYI/7qW
|
||||
CP+7lwn/upcK/7mYDv+Hypf/fdSw/3nYueV52LmsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANS8hwHNsmcV0rtxMNO9
|
||||
dVjAnyalvJkT77qXDP26lgj/uZYJ/6CwUv+HyZT/edi55XnYuawAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AADh0qwF18KFGMGhMFDBoTKYv54kxbyaFui6lgr/sKAn/5K+dv9+0qvleNe4rAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMmuXR7HqkxtwqMyuryZE/O6lgv7n7FV/ojIk+V517isAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRyAHbyawRy7BYQL+eI8G2niTroLBS5XvT
|
||||
sawAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANfDmAXLsFgS4M6pOsqy
|
||||
X26zqkqTn7+BpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AADu4+QD1L1/JrmpS0istm5lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA//4P///8D////AH///gA///4AB//+EAf/+BAB8AAAAHAAAABwAAAAcAA
|
||||
AAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAYAHAAHgBwAB+AcAAfgHAAH/BwAB/8fAA
|
||||
f//wAH///AB///+Af///wH///+B////4f/8=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,87 +1,15 @@
|
||||
2025-08-18 14:16:02.926----软件Program Main函数开始执行--
|
||||
2025-08-18 14:16:02.927--加载配置文件——>开始
|
||||
2025-08-18 14:16:02.947--数据库连接 SqlServerName:127.0.0.1
|
||||
2025-08-18 14:16:02.948--数据库连接 SqlUserName:sa
|
||||
2025-08-18 14:16:02.949--数据库连接 SqlPassword:Hexagon123
|
||||
2025-08-18 14:16:02.949--数据库连接 SqlDbName:CJLR
|
||||
2025-08-18 14:16:02.950--加载配置文件——>完成
|
||||
2025-08-18 14:16:04.153--数据库连接 SqlServerName:127.0.0.1
|
||||
2025-08-18 14:16:04.154--数据库连接 SqlUserName:sa
|
||||
2025-08-18 14:16:04.155--数据库连接 SqlPassword:Hexagon123
|
||||
2025-08-18 14:16:04.156--数据库连接 SqlDbName:CJLR
|
||||
2025-08-18 14:16:04.157--数据库连接字符串:Data Source=127.0.0.1;initial Catalog=CJLR;User ID=sa;password=Hexagon123;
|
||||
2025-08-18 14:16:14.507--
|
||||
2025-08-18 14:16:14.510--
|
||||
2025-08-18 14:16:14.510--
|
||||
2025-08-18 14:16:14.511--
|
||||
2025-08-18 14:16:14.512--
|
||||
2025-08-18 14:16:14.513--
|
||||
2025-08-18 14:16:14.514--
|
||||
2025-08-18 14:16:14.515--
|
||||
2025-08-18 14:16:14.516--
|
||||
2025-08-18 14:16:14.517--
|
||||
2025-08-18 14:16:14.517--
|
||||
2025-08-18 14:16:14.519--
|
||||
2025-08-18 14:16:14.520--
|
||||
2025-08-18 14:16:14.521--
|
||||
2025-08-18 14:16:14.522--Processing Task - Source: P:\, Target: K:\X260R, ModelCode: X260 Position: R
|
||||
2025-08-18 14:16:14.524--[ProcessFiles] 源文件地址不存在或错误: P:\
|
||||
2025-08-18 14:16:14.528--Processing Task - Source: D:\CJLR\DATA\Input\LLL, Target: D:\CJLR\DATA\Output\X540L, ModelCode: X540 Position: L
|
||||
2025-08-18 14:16:14.533--匹配文件特征符: X540_L
|
||||
2025-08-18 14:16:14.536--正在处理文件 : D:\CJLR\DATA\Input\LLL\K1902905.csv
|
||||
2025-08-18 14:16:14.540--第 35 行数据为0,跳过该行:,,,,,,,,,,,,,,,,,,,,,
|
||||
2025-08-18 14:16:14.541--第 36 行数据为0,跳过该行:,,,,,,,,,,,,,,,,,,,,,
|
||||
2025-08-18 14:16:14.542--第 37 行数据为0,跳过该行:<!-- [IMPORTED 232001] -->,,,,,,,,,,,,,,,,,,,,,
|
||||
2025-08-18 14:16:19.608----------------------------------------------------------
|
||||
2025-08-18 14:16:19.609--车号:K1902905
|
||||
2025-08-18 14:16:19.610--车型:MY20
|
||||
2025-08-18 14:16:19.611--测量时间:2020-05-04 12:16:16
|
||||
2025-08-18 14:16:19.871--CSV文件导入到数据库成功!
|
||||
2025-08-18 14:16:19.872----------------------------------------------------------
|
||||
2025-08-18 14:16:19.879--正在查询车ID为:K1902905 的测量结果。
|
||||
2025-08-18 14:16:19.916--将总结果插入数据库完毕。
|
||||
2025-08-18 14:16:20.094--未匹配到文件: D:\CJLR\DATA\Input\LLL\K1902905.csv
|
||||
2025-08-18 14:16:20.104--Processing Task - Source: O:\, Target: L:\X260L, ModelCode: X260 Position: L
|
||||
2025-08-18 14:16:20.105--[ProcessFiles] 源文件地址不存在或错误: O:\
|
||||
2025-08-18 14:16:20.108--Processing Task - Source: O:\, Target: L:\X760L, ModelCode: X760 Position: L
|
||||
2025-08-18 14:16:20.109--[ProcessFiles] 源文件地址不存在或错误: O:\
|
||||
2025-08-18 14:16:20.110--Processing Task - Source: P:\, Target: K:\X760R, ModelCode: X760 Position: R
|
||||
2025-08-18 14:16:20.111--[ProcessFiles] 源文件地址不存在或错误: P:\
|
||||
2025-08-18 14:16:20.117--Processing Task - Source: P:\, Target: K:\L551R 21MY, ModelCode: L551_21MY Position: R
|
||||
2025-08-18 14:16:20.118--[ProcessFiles] 源文件地址不存在或错误: P:\
|
||||
2025-08-18 14:16:20.121--Processing Task - Source: O:\, Target: L:\L551L 21MY, ModelCode: L551_21MY Position: L
|
||||
2025-08-18 14:16:20.122--[ProcessFiles] 源文件地址不存在或错误: O:\
|
||||
2025-08-18 14:16:20.123--Processing Task - Source: O:\, Target: L:\X540L 20MY, ModelCode: X540_24MY Position: L
|
||||
2025-08-18 14:16:20.124--[ProcessFiles] 源文件地址不存在或错误: O:\
|
||||
2025-08-18 14:16:20.126--Processing Task - Source: P:\, Target: K:\X540R 20MY, ModelCode: X540_24MY Position: R
|
||||
2025-08-18 14:16:20.126--[ProcessFiles] 源文件地址不存在或错误: P:\
|
||||
2025-08-18 14:16:20.128--Processing Task - Source: O:\, Target: L:\X540L, ModelCode: X540_18MY Position: L
|
||||
2025-08-18 14:16:20.129--[ProcessFiles] 源文件地址不存在或错误: O:\
|
||||
2025-08-18 14:16:20.130--Processing Task - Source: O:\, Target: L:\L550L, ModelCode: L550_23MY Position: L
|
||||
2025-08-18 14:16:20.132--[ProcessFiles] 源文件地址不存在或错误: O:\
|
||||
2025-08-18 14:16:20.241--Processing Task - Source: P:\, Target: K:\X540R, ModelCode: X540_18MY Position: R
|
||||
2025-08-18 14:16:20.243--[ProcessFiles] 源文件地址不存在或错误: P:\
|
||||
2025-08-18 14:16:20.249--Processing Task - Source: P:\, Target: K:\L550R, ModelCode: L550_23MY Position: R
|
||||
2025-08-18 14:16:20.251--[ProcessFiles] 源文件地址不存在或错误: P:\
|
||||
2025-08-18 14:16:24.571--
|
||||
2025-08-18 14:16:24.573--
|
||||
2025-08-18 14:16:24.574--
|
||||
2025-08-18 14:16:24.575--
|
||||
2025-08-18 14:16:24.579--
|
||||
2025-08-18 14:16:24.580--
|
||||
2025-08-18 14:16:24.581--
|
||||
2025-08-18 14:16:24.582--
|
||||
2025-08-18 14:16:24.583--
|
||||
2025-08-18 14:16:24.584--
|
||||
2025-08-18 14:16:24.584--
|
||||
2025-08-18 14:16:24.585--
|
||||
2025-08-18 14:16:24.586--
|
||||
2025-08-18 14:16:24.586--
|
||||
2025-08-18 14:16:24.587--Processing Task - Source: P:\, Target: K:\X260R, ModelCode: X260 Position: R
|
||||
2025-08-18 14:16:24.588--[ProcessFiles] 源文件地址不存在或错误: P:\
|
||||
2025-08-18 14:16:24.598--Processing Task - Source: D:\CJLR\DATA\Input\LLL, Target: D:\CJLR\DATA\Output\X540L, ModelCode: X540 Position: L
|
||||
2025-08-18 14:16:24.599--匹配文件特征符: X540_L
|
||||
2025-08-18 14:16:24.600--正在处理文件 : D:\CJLR\DATA\Input\LLL\K1902905.csv
|
||||
2025-08-18 14:16:24.604--第 35 行数据为0,跳过该行:,,,,,,,,,,,,,,,,,,,,,
|
||||
2025-08-18 14:16:24.605--第 36 行数据为0,跳过该行:,,,,,,,,,,,,,,,,,,,,,
|
||||
2025-08-18 14:16:24.605--第 37 行数据为0,跳过该行:<!-- [IMPORTED 232001] -->,,,,,,,,,,,,,,,,,,,,,
|
||||
2025-08-19 16:04:27.901----软件Program Main函数开始执行--
|
||||
2025-08-19 16:04:27.902--加载配置文件——>开始
|
||||
2025-08-19 16:04:27.905--数据库连接 SqlServerName:127.0.0.1
|
||||
2025-08-19 16:04:27.907--数据库连接 SqlUserName:sa
|
||||
2025-08-19 16:04:27.907--数据库连接 SqlPassword:Hexagon123
|
||||
2025-08-19 16:04:27.908--数据库连接 SqlDbName:CJLR
|
||||
2025-08-19 16:04:27.909--加载配置文件——>完成
|
||||
2025-08-19 16:04:27.910--Log in using the original authorization mode.
|
||||
2025-08-19 16:04:43.067--软件授权成功
|
||||
2025-08-19 16:04:44.514--数据库连接 SqlServerName:127.0.0.1
|
||||
2025-08-19 16:04:44.516--数据库连接 SqlUserName:sa
|
||||
2025-08-19 16:04:44.517--数据库连接 SqlPassword:Hexagon123
|
||||
2025-08-19 16:04:44.519--数据库连接 SqlDbName:CJLR
|
||||
2025-08-19 16:04:44.520--数据库连接字符串:Data Source=127.0.0.1;initial Catalog=CJLR;User ID=sa;password=Hexagon123;
|
||||
2025-08-19 16:04:54.108---------------海克斯康面隙分析软件程序关闭---------------------
|
||||
|
||||
@@ -6,30 +6,21 @@ Language =1
|
||||
;1 = 中文简
|
||||
;0 = 英语
|
||||
RememberMe=1
|
||||
NextsenseCSVEH3Path=D:\cherytestEH3
|
||||
ReportCSVPath=D:\QMLTest
|
||||
|
||||
;1:CLMS授权
|
||||
AuthorizationMode=1
|
||||
AuthorizationMode=2
|
||||
CLMSModeID=10
|
||||
|
||||
;权限密码
|
||||
Password=1
|
||||
|
||||
;1-计算合格率时包含极差项 ;0-不包含
|
||||
IncludeRangeFlag=1
|
||||
; 生成Pi-web报告的路径
|
||||
ReportCSVPath=D:\QMLTest
|
||||
CNCPictureName=
|
||||
EnableSort=1
|
||||
AnalysisCSVFlag=1
|
||||
|
||||
;车型检查项总数量
|
||||
MeasureCarItemsCount=50
|
||||
;连续多少辆车不满足总数量 连续几辆车小于该检测项总数量 则报警
|
||||
ContinuousCarCount=6
|
||||
|
||||
StationName=ZP5_FG1
|
||||
tavascanUploadPath=VW316_8CM_ZP6_FG
|
||||
blacklabelUploadPath=VW316_8CM_BLZP6_FG
|
||||
Level2Times=1.5
|
||||
Level3Times=2
|
||||
ReportCSVPath2=D:\QMLTest
|
||||
|
||||
[Timer]
|
||||
;单位s
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
MeasPlan.Name,CheryEH3
|
||||
vehiclecode,1
|
||||
robot.MessplanID,1
|
||||
Plant_sector,WH
|
||||
Product_type,Carbody
|
||||
Auto_name,EH3
|
||||
Part_type,Assembly
|
||||
Part_number,EH3_5000000FAonline
|
||||
Part_name,123
|
||||
prodnum,NNACDEB0RDA50893
|
||||
Production_line,11_line
|
||||
Workshop,ER_QI
|
||||
Operator,
|
||||
Shift,
|
||||
Machine,
|
||||
Temperature,
|
||||
Humidity,
|
||||
|
@@ -1 +1 @@
|
||||
E0257D210D71798C7D342413B6AE6E827FF7CDF4D9B987590FAE35D6DCCAFB886AA76997CF2A0EB6CE1262B84EAA89847CE6CDC5A6F8D2EED117805EA3C58FC41BAE98458ABC8F6E2F7D3BC1F235ECAA82954257F761B6EDE6B01E9FFEE276B41AAB0B16C34FF9D2865DF53073BE883F9187EB6EB61E90DDAAA99D8CEBD45D79C7B258FDE9888FDC6ACCD540C3DB33F837A1CD9E7A11BB9D832E332CAE39B9F387EB6710AB221145D9A6E1F2A1FA298D40262129F295BA060BED16C420C03178782B354A00BAD77335C105D312852C3ACEA15E3CA3F54D6B16970431D3E78069F9EAD8D82F39E953F2D6B51CAEE05D904F400BAFC3F41FF2152E610D26B4CDCF27B257D642BF1F30BD8A177925C11CCA10126D0A2870F62CEE7FBD251DCC6A5C68D62B656F9ADA143E07B02516F84636148A81409E1D928DFB346CD8050354C82CA074EDB89ADCBE6E31AD2D142B58B04F2577A03F4CE43586150CE1C69370F28D58DAEABCB2C5920A9759C3D210DF7422DFAA2D1CB0D95564D2A07A82B2F4B4A497C47C57CE23CB1294C515FACF9EEF0C4A6CB8300317D90ECBC6B30D2ABA0EBE5698648EB59A1B33F770C4EB0F928970D13FD27DA4B9521F223210E3B43345B22C2583B76CFAF265F453C3835D7ADAF002206BD6F4C338D19D0DCCFC21F76526CAFDDEC710742816AFD59794DA9653452A9EF92504C1D44B9ED41133C75E185B80E331B531F0535705493788E09E4B04CF0AF947157D7C9E1D6F7F55ADFF4CA2786E83F4315A170E4C7F461B43515DA399766454E68E89428308D085AF0CC75182F5F21077D3A1A42E53784A13DA35D174311F41CB0C111672D7AF1E3EA0E62530BFD5AED3055D783C8020517B9BDB734E885A536BE72FC79A53B301F6994EE89E1EC3D195C4A95C8E880A1F058A9C745242797396C1505ADE70F66B51C0028466F38DDBFBDB66351B696404DC767D0886B7E903EA892C6D667723939B66376CBABF1035635CB9
|
||||
E0257D210D71798C7D342413B6AE6E827FF7CDF4D9B987590FAE35D6DCCAFB886AA76997CF2A0EB6183A1A07A6254010415BCA8EF7EB824B6AC227D17C067A53EC3C074338CE4489D1526A6745F8326A3CCC88BA268537C2982273D504D3FBD0570E4C172917E3829DA2C9683B7D6556C8F161F85B4111525371DC60C71086CCC0DED32D5E81E9A83608FB23D8A98F0CE9A56F4559B73159E51D63588E1D1B1995354C2A43825755B0D8869373E58D59AF678076388BCAD83C36867FE0FCFB50D6200CA3AF3E09CB8A154F46BDBE1651F20EAB4AE02E0D16267C192E4B8AEB473DBD8EA87CFD59933062F5FC46B4C360507E9ABEA928539EDCA1FDE38757CB5D50CD286312A907C8659BB2CD95C1C5EB5FB3FF894808137E7F01C767C4AFF501FE74A18570277994AC542D7CF811A0AAB4B53BF5083C4EC10DE7EC55E72BCEAE80B364DDBA2515CEA190D585F349A2A704ADFD6F7EA8D23C429EEE440239844CEC4ACA624A34933816E72E71BFF1669EC74486B70E0C7DD1418C983FCBC9D35043CB2523A685435B541C7B59F511B00347D7E16E1044B337CDD4A819E499EDE975FE7A553DE2604235916CAE6FC2C906625DAE32A7C2441969B842242AAE869F95C22AE889BC2388CBECD6BD0B3074A656940CAB067C850C554E112A104F445F4F7AAA5A879F2C476B088120CEFA03CB3597CC695AF681C6A54B61DEC63E8F39B25446DAAB73608AF105A1F1C2631780E4A7A202FB03323B82115B2BFE71A26FA516FDAAA00A1D4887BEBE6DF4C8D9130C57E0DA55DAC33220C891A46CB8B73D8EFA47314D8015A7F3267D2C726ACAB59DAC92E8CD24F4D08F3B030A96489379642E982F8E4A8B25FA3979A230A6A7C6B38EEB71B0B3E65305D38AB9AD3C3433BC7A5555AAA21F3807ED4BFE97093359CB1E80BBC539B97F616E017218773297294742D0EAB299DD2FD178FAD7D01FD2FA200E6974BA95123B01367C62EF6F0ECDF715ECA67BFE83
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user