From 609b39fc200b15a9b661c2c5f4d48f1826272b8f Mon Sep 17 00:00:00 2001 From: "ruoxing.wang" <88384874@qq.com> Date: Wed, 16 Jul 2025 15:22:03 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=A8=E6=A7=9B=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AddMaterial/PlanScreen16.html | 237 +++ AddMaterial/PlanScreen17.html | 239 +++ AddMaterial/PlanScreenStyleSheetold.css | 97 ++ FacOneZPStation/FrmZP.Designer.cs | 103 +- InjectionPC/FrmMain2411.Designer.cs | 4 +- MESClassLibrary/BLL/Injection/UniqueBll.cs | 10 + MESClassLibrary/DAL/Injection/UniqueDal.cs | 26 + PaintingPC/FrmChangeColorOld.Designer.cs | 116 ++ PaintingPC/FrmChangeColorOld.cs | 95 ++ PaintingPC/FrmChangeColorOld.resx | 120 ++ PaintingPC/FrmQualityOnLine.cs | 869 +++++++++++ PaintingPC/FrmQualityOnLine.designer.cs | 392 +++++ PaintingPC/FrmQualityOnLine.resx | 478 ++++++ PaintingPC/Function.cs | 82 +- PaintingPC/Model/InspectModel.cs | 3 + PunchingMistake/FrmAssemble.Designer.cs | 716 +++++++++ PunchingMistake/FrmAssemble.cs | 311 ++++ PunchingMistake/FrmAssemble.resx | 1039 +++++++++++++ PunchingMistake/FrmLogin.Designer.cs | 172 +++ PunchingMistake/FrmLogin.cs | 212 +++ PunchingMistake/FrmLogin.resx | 713 +++++++++ PunchingMistake/FrmProScreen3.Designer.cs | 287 ++++ PunchingMistake/FrmProScreen3.cs | 710 +++++++++ PunchingMistake/FrmProScreen3.resx | 120 ++ PunchingMistake/FrmQualityNew.Designer.cs | 656 +++++++++ PunchingMistake/FrmQualityNew.cs | 1544 ++++++++++++++++++++ PunchingMistake/FrmQualityNew.resx | 475 ++++++ PunchingMistake/Function2.cs | 632 ++++++++ PunchingMistake/Images/assembleHead.png | Bin 0 -> 34708 bytes PunchingMistake/Images/assembleLine.png | Bin 0 -> 3061 bytes PunchingMistake/LogHelper.cs | 51 + PunchingMistake/PunchingMistake.csproj | 36 + PunchingMistake/Report/总成条码MI.grf | Bin 0 -> 5110 bytes 33 files changed, 10487 insertions(+), 58 deletions(-) create mode 100644 AddMaterial/PlanScreen16.html create mode 100644 AddMaterial/PlanScreen17.html create mode 100644 AddMaterial/PlanScreenStyleSheetold.css create mode 100644 PaintingPC/FrmChangeColorOld.Designer.cs create mode 100644 PaintingPC/FrmChangeColorOld.cs create mode 100644 PaintingPC/FrmChangeColorOld.resx create mode 100644 PaintingPC/FrmQualityOnLine.cs create mode 100644 PaintingPC/FrmQualityOnLine.designer.cs create mode 100644 PaintingPC/FrmQualityOnLine.resx create mode 100644 PunchingMistake/FrmAssemble.Designer.cs create mode 100644 PunchingMistake/FrmAssemble.cs create mode 100644 PunchingMistake/FrmAssemble.resx create mode 100644 PunchingMistake/FrmLogin.Designer.cs create mode 100644 PunchingMistake/FrmLogin.cs create mode 100644 PunchingMistake/FrmLogin.resx create mode 100644 PunchingMistake/FrmProScreen3.Designer.cs create mode 100644 PunchingMistake/FrmProScreen3.cs create mode 100644 PunchingMistake/FrmProScreen3.resx create mode 100644 PunchingMistake/FrmQualityNew.Designer.cs create mode 100644 PunchingMistake/FrmQualityNew.cs create mode 100644 PunchingMistake/FrmQualityNew.resx create mode 100644 PunchingMistake/Function2.cs create mode 100644 PunchingMistake/Images/assembleHead.png create mode 100644 PunchingMistake/Images/assembleLine.png create mode 100644 PunchingMistake/LogHelper.cs create mode 100644 PunchingMistake/Report/总成条码MI.grf diff --git a/AddMaterial/PlanScreen16.html b/AddMaterial/PlanScreen16.html new file mode 100644 index 0000000..3804edc --- /dev/null +++ b/AddMaterial/PlanScreen16.html @@ -0,0 +1,237 @@ + + + + + 注塑车间计划看板16 + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
注塑车间计划看板
+
+
+
产品信息:
+ + + + + +
+ + + + + + + + + +
+ + + + + + +
产品名称计划数量
+
合格率:
+
+ + + + + + + + + +
生产数量合格数量
+
+
+ + + + + + + + + + + + + + +
原料名称:烘干料筒:
加料批次:加料时间:
+
+ + diff --git a/AddMaterial/PlanScreen17.html b/AddMaterial/PlanScreen17.html new file mode 100644 index 0000000..006886b --- /dev/null +++ b/AddMaterial/PlanScreen17.html @@ -0,0 +1,239 @@ + + + + + 注塑车间计划看板17 + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
注塑车间计划看板
+
+
+
+ + + + + + + + + +
产品名称:产品信息:机台:
+
+ + + + + +
+ + + + + + + + + + + + + +
注塑计划
注塑生产数
注塑合格率
+
+ + + + + + + + + + + + + +
总成计划
总成生产数
总成合格率
+
+
+ + + + + + + + + + + + + +
原料名称:烘干料筒:
加料批次:加料时间:
+
+ + diff --git a/AddMaterial/PlanScreenStyleSheetold.css b/AddMaterial/PlanScreenStyleSheetold.css new file mode 100644 index 0000000..054aff7 --- /dev/null +++ b/AddMaterial/PlanScreenStyleSheetold.css @@ -0,0 +1,97 @@ +table,table tr th, table tr td { border:1px solid #808080; border-collapse: collapse; width: 1900px; background-color:#000000; color:#ffffff; } + +.TableFrame { + border:hidden; width: 1900px; +} + +#TableLeft, #TableRight { + width:925px; height:500px;border:hidden; +} + +.tdTitle { + width:150px; height:48px; /*background-color: #B4EEB4;*/ text-align:center; font-family:黑体; font-size:32px; font-weight:500; background-color:#191970 +} +.tdContent { + width:580px; height:48px; /*background-color:white;*/ text-align:center; font-family:黑体; font-size:60px; font-weight:500; +} +#TableBottom, #TableSecondRow { + border-right:hidden; width:1900px; +} + + +/*#region 字体 */ + +#content1, #content2, #content3, #content4, #content5 { + /*color: #2222DD;*/ +} + +#content6 { + /*color: #4DB34D;*/ +} + +#content7, #content8, #content9, #content10, #content11 { + /*color: #FF9900;*/ + font-size: 60px; + +} + +#content4 { + font-size: 140px; + font-weight: 900; +} + +#content5, #content6 { + font-size: 140px; + font-weight: 900; + +} + +#content2, #content3, #content1 { + font-size: 60px; + font-weight: 600; + +} + +#content12, #content13 { + /*color:red;*/ + font-size: 60px; + font-weight: 600; +} + +/*#endregion */ + + +/*#region 标题表格 */ + +#TableTitle, #TableTitle tr th, #TableTitle tr td { + /*border: 1px solid #0094ff;*/ + border: 1px solid white; + border-collapse: collapse; +} + +#TableTitle { + width: 1900px; + height: 80px; +} + +#Title { + width: 800px; + font-size: 90px; + font-family: 黑体; + text-align: center; + font-weight: 800; + /*background-color:white;*/ + background-color:black; color:white; + height:90px; + padding-left:0px; +} + +#tdImg, #Img { + background-image:url(Pic/Logo.png); background-repeat:no-repeat; width:190px; height:90px; +} + +#DivTimer { + /*background-color:white;*/ font-size:55px; font-family:黑体; text-align:center; font-weight:800; width:650px; padding-bottom:20px; padding-top:0px; height:90px; background-color:black; color:white; border: 0px; +} + +/*#endregion */ \ No newline at end of file diff --git a/FacOneZPStation/FrmZP.Designer.cs b/FacOneZPStation/FrmZP.Designer.cs index 94f4043..f31333a 100644 --- a/FacOneZPStation/FrmZP.Designer.cs +++ b/FacOneZPStation/FrmZP.Designer.cs @@ -28,6 +28,7 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmZP)); this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); this.button6 = new System.Windows.Forms.Button(); @@ -47,7 +48,7 @@ this.labPName = new System.Windows.Forms.Label(); this.label8 = new System.Windows.Forms.Label(); this.labPartNo = new System.Windows.Forms.Label(); - this.timer1 = new System.Windows.Forms.Timer(); + this.timer1 = new System.Windows.Forms.Timer(this.components); this.label6 = new System.Windows.Forms.Label(); this.labBadCount = new System.Windows.Forms.Label(); this.labNum = new System.Windows.Forms.Label(); @@ -76,7 +77,7 @@ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.51529F)); this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.62445F)); this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 32.86026F)); - this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 732F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 737F)); this.tableLayoutPanel3.Controls.Add(this.button6, 3, 0); this.tableLayoutPanel3.Controls.Add(this.button1, 0, 1); this.tableLayoutPanel3.Controls.Add(this.button5, 2, 1); @@ -101,10 +102,10 @@ this.button6.Dock = System.Windows.Forms.DockStyle.Fill; this.button6.Font = new System.Drawing.Font("黑体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.button6.ForeColor = System.Drawing.Color.Black; - this.button6.Location = new System.Drawing.Point(1614, 12); + this.button6.Location = new System.Drawing.Point(1610, 12); this.button6.Margin = new System.Windows.Forms.Padding(13, 12, 13, 12); this.button6.Name = "button6"; - this.button6.Size = new System.Drawing.Size(708, 161); + this.button6.Size = new System.Drawing.Size(712, 161); this.button6.TabIndex = 7; this.button6.Text = "手动打印箱单"; this.button6.UseVisualStyleBackColor = false; @@ -118,7 +119,7 @@ this.button1.Location = new System.Drawing.Point(6, 190); this.button1.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(525, 176); + this.button1.Size = new System.Drawing.Size(523, 176); this.button1.TabIndex = 6; this.button1.Text = "打印标签"; this.button1.UseVisualStyleBackColor = false; @@ -130,10 +131,10 @@ this.button5.Dock = System.Windows.Forms.DockStyle.Fill; this.button5.Font = new System.Drawing.Font("黑体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.button5.ForeColor = System.Drawing.Color.Black; - this.button5.Location = new System.Drawing.Point(1088, 197); + this.button5.Location = new System.Drawing.Point(1085, 197); this.button5.Margin = new System.Windows.Forms.Padding(13, 12, 13, 12); this.button5.Name = "button5"; - this.button5.Size = new System.Drawing.Size(500, 162); + this.button5.Size = new System.Drawing.Size(499, 162); this.button5.TabIndex = 5; this.button5.Text = "不合格"; this.button5.UseVisualStyleBackColor = false; @@ -144,10 +145,10 @@ this.button4.BackColor = System.Drawing.Color.RoyalBlue; this.button4.Dock = System.Windows.Forms.DockStyle.Fill; this.button4.Font = new System.Drawing.Font("黑体", 16F); - this.button4.Location = new System.Drawing.Point(543, 5); + this.button4.Location = new System.Drawing.Point(541, 5); this.button4.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); this.button4.Name = "button4"; - this.button4.Size = new System.Drawing.Size(526, 175); + this.button4.Size = new System.Drawing.Size(525, 175); this.button4.TabIndex = 4; this.button4.Text = "下一计划"; this.button4.UseVisualStyleBackColor = false; @@ -161,7 +162,7 @@ this.button3.Location = new System.Drawing.Point(6, 5); this.button3.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); this.button3.Name = "button3"; - this.button3.Size = new System.Drawing.Size(525, 175); + this.button3.Size = new System.Drawing.Size(523, 175); this.button3.TabIndex = 3; this.button3.Text = "上一计划"; this.button3.UseVisualStyleBackColor = false; @@ -173,10 +174,10 @@ this.button2.Dock = System.Windows.Forms.DockStyle.Fill; this.button2.Font = new System.Drawing.Font("黑体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.button2.ForeColor = System.Drawing.Color.Black; - this.button2.Location = new System.Drawing.Point(550, 197); + this.button2.Location = new System.Drawing.Point(548, 197); this.button2.Margin = new System.Windows.Forms.Padding(13, 12, 13, 12); this.button2.Name = "button2"; - this.button2.Size = new System.Drawing.Size(512, 162); + this.button2.Size = new System.Drawing.Size(511, 162); this.button2.TabIndex = 2; this.button2.Text = "补打标签"; this.button2.UseVisualStyleBackColor = false; @@ -187,10 +188,10 @@ this.button7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); this.button7.Dock = System.Windows.Forms.DockStyle.Fill; this.button7.Font = new System.Drawing.Font("黑体", 16F); - this.button7.Location = new System.Drawing.Point(1607, 190); + this.button7.Location = new System.Drawing.Point(1603, 190); this.button7.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); this.button7.Name = "button7"; - this.button7.Size = new System.Drawing.Size(722, 176); + this.button7.Size = new System.Drawing.Size(726, 176); this.button7.TabIndex = 8; this.button7.Text = "补打箱单"; this.button7.UseVisualStyleBackColor = false; @@ -202,7 +203,7 @@ this.label7.Dock = System.Windows.Forms.DockStyle.Fill; this.label7.Font = new System.Drawing.Font("黑体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.label7.ForeColor = System.Drawing.Color.White; - this.label7.Location = new System.Drawing.Point(1281, 3); + this.label7.Location = new System.Drawing.Point(1275, 3); this.label7.Margin = new System.Windows.Forms.Padding(2); this.label7.Name = "label7"; this.tableLayoutPanel4.SetRowSpan(this.label7, 2); @@ -214,10 +215,10 @@ // this.textBox2.Dock = System.Windows.Forms.DockStyle.Fill; this.textBox2.Font = new System.Drawing.Font("黑体", 26.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.textBox2.Location = new System.Drawing.Point(370, 111); - this.textBox2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.textBox2.Location = new System.Drawing.Point(368, 111); + this.textBox2.Margin = new System.Windows.Forms.Padding(4); this.textBox2.Name = "textBox2"; - this.textBox2.Size = new System.Drawing.Size(904, 77); + this.textBox2.Size = new System.Drawing.Size(900, 77); this.textBox2.TabIndex = 30; this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); // @@ -229,7 +230,7 @@ this.label3.Location = new System.Drawing.Point(5, 107); this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(356, 108); + this.label3.Size = new System.Drawing.Size(354, 108); this.label3.TabIndex = 29; this.label3.Text = "扫描物料条码"; this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -239,10 +240,10 @@ this.labOrderNo.Dock = System.Windows.Forms.DockStyle.Fill; this.labOrderNo.Font = new System.Drawing.Font("黑体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.labOrderNo.ForeColor = System.Drawing.Color.White; - this.labOrderNo.Location = new System.Drawing.Point(1535, 218); + this.labOrderNo.Location = new System.Drawing.Point(1529, 218); this.labOrderNo.Margin = new System.Windows.Forms.Padding(2); this.labOrderNo.Name = "labOrderNo"; - this.labOrderNo.Size = new System.Drawing.Size(801, 151); + this.labOrderNo.Size = new System.Drawing.Size(807, 151); this.labOrderNo.TabIndex = 28; this.labOrderNo.Text = "A64654646464"; this.labOrderNo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -253,7 +254,7 @@ this.label4.Dock = System.Windows.Forms.DockStyle.Fill; this.label4.Font = new System.Drawing.Font("黑体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.label4.ForeColor = System.Drawing.Color.White; - this.label4.Location = new System.Drawing.Point(1281, 218); + this.label4.Location = new System.Drawing.Point(1275, 218); this.label4.Margin = new System.Windows.Forms.Padding(2); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(249, 151); @@ -267,10 +268,10 @@ this.labStationNo.Dock = System.Windows.Forms.DockStyle.Fill; this.labStationNo.Font = new System.Drawing.Font("黑体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.labStationNo.ForeColor = System.Drawing.Color.White; - this.labStationNo.Location = new System.Drawing.Point(368, 218); + this.labStationNo.Location = new System.Drawing.Point(366, 218); this.labStationNo.Margin = new System.Windows.Forms.Padding(2); this.labStationNo.Name = "labStationNo"; - this.labStationNo.Size = new System.Drawing.Size(908, 151); + this.labStationNo.Size = new System.Drawing.Size(904, 151); this.labStationNo.TabIndex = 26; this.labStationNo.Text = "V253-MF-S后保下部延伸焊接"; this.labStationNo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -284,7 +285,7 @@ this.label2.Location = new System.Drawing.Point(3, 218); this.label2.Margin = new System.Windows.Forms.Padding(2); this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(360, 151); + this.label2.Size = new System.Drawing.Size(358, 151); this.label2.TabIndex = 25; this.label2.Text = "工位名称"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -294,10 +295,10 @@ this.labPName.Dock = System.Windows.Forms.DockStyle.Fill; this.labPName.Font = new System.Drawing.Font("黑体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.labPName.ForeColor = System.Drawing.Color.White; - this.labPName.Location = new System.Drawing.Point(1535, 374); + this.labPName.Location = new System.Drawing.Point(1529, 374); this.labPName.Margin = new System.Windows.Forms.Padding(2); this.labPName.Name = "labPName"; - this.labPName.Size = new System.Drawing.Size(801, 248); + this.labPName.Size = new System.Drawing.Size(807, 248); this.labPName.TabIndex = 24; this.labPName.Text = "MF253 MF S后保"; this.labPName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -308,7 +309,7 @@ this.label8.Dock = System.Windows.Forms.DockStyle.Fill; this.label8.Font = new System.Drawing.Font("黑体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.label8.ForeColor = System.Drawing.Color.White; - this.label8.Location = new System.Drawing.Point(1281, 374); + this.label8.Location = new System.Drawing.Point(1275, 374); this.label8.Margin = new System.Windows.Forms.Padding(2); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(249, 248); @@ -322,10 +323,10 @@ this.labPartNo.Dock = System.Windows.Forms.DockStyle.Fill; this.labPartNo.Font = new System.Drawing.Font("黑体", 42F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.labPartNo.ForeColor = System.Drawing.Color.White; - this.labPartNo.Location = new System.Drawing.Point(368, 374); + this.labPartNo.Location = new System.Drawing.Point(366, 374); this.labPartNo.Margin = new System.Windows.Forms.Padding(2); this.labPartNo.Name = "labPartNo"; - this.labPartNo.Size = new System.Drawing.Size(908, 248); + this.labPartNo.Size = new System.Drawing.Size(904, 248); this.labPartNo.TabIndex = 22; this.labPartNo.Text = "A2530822665"; this.labPartNo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -344,7 +345,7 @@ this.label6.Location = new System.Drawing.Point(3, 374); this.label6.Margin = new System.Windows.Forms.Padding(2); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(360, 248); + this.label6.Size = new System.Drawing.Size(358, 248); this.label6.TabIndex = 21; this.label6.Text = "产品代码"; this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -355,10 +356,10 @@ this.labBadCount.Dock = System.Windows.Forms.DockStyle.Fill; this.labBadCount.Font = new System.Drawing.Font("黑体", 60F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.labBadCount.ForeColor = System.Drawing.Color.Lime; - this.labBadCount.Location = new System.Drawing.Point(1535, 627); + this.labBadCount.Location = new System.Drawing.Point(1529, 627); this.labBadCount.Margin = new System.Windows.Forms.Padding(2); this.labBadCount.Name = "labBadCount"; - this.labBadCount.Size = new System.Drawing.Size(801, 451); + this.labBadCount.Size = new System.Drawing.Size(807, 451); this.labBadCount.TabIndex = 20; this.labBadCount.Text = "0"; this.labBadCount.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -369,10 +370,10 @@ this.labNum.Dock = System.Windows.Forms.DockStyle.Fill; this.labNum.Font = new System.Drawing.Font("黑体", 60F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.labNum.ForeColor = System.Drawing.Color.Lime; - this.labNum.Location = new System.Drawing.Point(368, 627); + this.labNum.Location = new System.Drawing.Point(366, 627); this.labNum.Margin = new System.Windows.Forms.Padding(2); this.labNum.Name = "labNum"; - this.labNum.Size = new System.Drawing.Size(908, 451); + this.labNum.Size = new System.Drawing.Size(904, 451); this.labNum.TabIndex = 18; this.labNum.Text = "152/210"; this.labNum.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -386,7 +387,7 @@ this.label10.Location = new System.Drawing.Point(3, 627); this.label10.Margin = new System.Windows.Forms.Padding(2); this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(360, 451); + this.label10.Size = new System.Drawing.Size(358, 451); this.label10.TabIndex = 17; this.label10.Text = "计划/完成数"; this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -399,7 +400,7 @@ this.label14.Location = new System.Drawing.Point(5, 1); this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(356, 105); + this.label14.Size = new System.Drawing.Size(354, 105); this.label14.TabIndex = 12; this.label14.Text = "扫描本体条码"; this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -408,10 +409,10 @@ // this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill; this.textBox1.Font = new System.Drawing.Font("黑体", 26.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.textBox1.Location = new System.Drawing.Point(370, 5); - this.textBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.textBox1.Location = new System.Drawing.Point(368, 5); + this.textBox1.Margin = new System.Windows.Forms.Padding(4); this.textBox1.Name = "textBox1"; - this.textBox1.Size = new System.Drawing.Size(904, 77); + this.textBox1.Size = new System.Drawing.Size(900, 77); this.textBox1.TabIndex = 13; this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); // @@ -420,11 +421,11 @@ this.labErrMessage.Dock = System.Windows.Forms.DockStyle.Fill; this.labErrMessage.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.labErrMessage.ForeColor = System.Drawing.Color.Red; - this.labErrMessage.Location = new System.Drawing.Point(1537, 1); + this.labErrMessage.Location = new System.Drawing.Point(1531, 1); this.labErrMessage.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.labErrMessage.Name = "labErrMessage"; this.tableLayoutPanel4.SetRowSpan(this.labErrMessage, 2); - this.labErrMessage.Size = new System.Drawing.Size(797, 214); + this.labErrMessage.Size = new System.Drawing.Size(803, 214); this.labErrMessage.TabIndex = 16; this.labErrMessage.Text = "条码与产品不匹配,重新扫描"; this.labErrMessage.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -437,7 +438,7 @@ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 28.52292F)); this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 71.47708F)); this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 253F)); - this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 804F)); + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 810F)); this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 37F)); this.tableLayoutPanel4.Controls.Add(this.label7, 2, 0); this.tableLayoutPanel4.Controls.Add(this.textBox2, 1, 1); @@ -459,7 +460,7 @@ this.tableLayoutPanel4.Controls.Add(this.labErrMessage, 3, 0); this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; this.tableLayoutPanel4.Location = new System.Drawing.Point(4, 134); - this.tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(4); this.tableLayoutPanel4.Name = "tableLayoutPanel4"; this.tableLayoutPanel4.RowCount = 5; this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.8932F)); @@ -477,7 +478,7 @@ this.label12.Dock = System.Windows.Forms.DockStyle.Fill; this.label12.Font = new System.Drawing.Font("黑体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.label12.ForeColor = System.Drawing.Color.White; - this.label12.Location = new System.Drawing.Point(1281, 627); + this.label12.Location = new System.Drawing.Point(1275, 627); this.label12.Margin = new System.Windows.Forms.Padding(2); this.label12.Name = "label12"; this.label12.Size = new System.Drawing.Size(249, 451); @@ -490,10 +491,10 @@ this.labTime.BackColor = System.Drawing.Color.Transparent; this.labTime.Dock = System.Windows.Forms.DockStyle.Fill; this.labTime.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.labTime.Location = new System.Drawing.Point(1746, 0); + this.labTime.Location = new System.Drawing.Point(1743, 0); this.labTime.Margin = new System.Windows.Forms.Padding(0); this.labTime.Name = "labTime"; - this.labTime.Size = new System.Drawing.Size(601, 130); + this.labTime.Size = new System.Drawing.Size(604, 130); this.labTime.TabIndex = 7; this.labTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.labTime.Click += new System.EventHandler(this.labTime_Click); @@ -507,7 +508,7 @@ this.pictureBox1.Location = new System.Drawing.Point(0, 0); this.pictureBox1.Margin = new System.Windows.Forms.Padding(0); this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(316, 130); + this.pictureBox1.Size = new System.Drawing.Size(315, 130); this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.pictureBox1.TabIndex = 0; this.pictureBox1.TabStop = false; @@ -517,10 +518,10 @@ this.label1.BackColor = System.Drawing.Color.Transparent; this.label1.Dock = System.Windows.Forms.DockStyle.Fill; this.label1.Font = new System.Drawing.Font("黑体", 22F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.label1.Location = new System.Drawing.Point(316, 0); + this.label1.Location = new System.Drawing.Point(315, 0); this.label1.Margin = new System.Windows.Forms.Padding(0); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(1430, 130); + this.label1.Size = new System.Drawing.Size(1428, 130); this.label1.TabIndex = 1; this.label1.Text = "装配工位信息看板"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -531,7 +532,7 @@ this.tableLayoutPanel2.ColumnCount = 3; this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 18.10651F)); this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 81.89349F)); - this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 600F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 603F)); this.tableLayoutPanel2.Controls.Add(this.labTime, 2, 0); this.tableLayoutPanel2.Controls.Add(this.pictureBox1, 0, 0); this.tableLayoutPanel2.Controls.Add(this.label1, 1, 0); diff --git a/InjectionPC/FrmMain2411.Designer.cs b/InjectionPC/FrmMain2411.Designer.cs index 3461fbd..20675e7 100644 --- a/InjectionPC/FrmMain2411.Designer.cs +++ b/InjectionPC/FrmMain2411.Designer.cs @@ -786,7 +786,7 @@ this.tableLayoutPanel2.Controls.Add(this.panel38, 0, 0); this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 406); - this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(4); this.tableLayoutPanel2.Name = "tableLayoutPanel2"; this.tableLayoutPanel2.RowCount = 1; this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 570F)); @@ -868,7 +868,7 @@ this.tableLayoutPanel1.Controls.Add(this.label11, 0, 0); this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); - this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(4); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowCount = 1; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); diff --git a/MESClassLibrary/BLL/Injection/UniqueBll.cs b/MESClassLibrary/BLL/Injection/UniqueBll.cs index 6224844..cdd8c0b 100644 --- a/MESClassLibrary/BLL/Injection/UniqueBll.cs +++ b/MESClassLibrary/BLL/Injection/UniqueBll.cs @@ -19,6 +19,16 @@ namespace MESClassLibrary.BLL.Injection return da.GetPackageSerialNo(partNo, batch, packageSize); } /// + /// 小件装配总成条码 + /// + /// + /// + /// + public string GetPunchSerialNo(string partNo, int size,ref string seriaLNo) + { + return da.GetPunchSerialNo(partNo, size,ref seriaLNo); + } + /// /// 直供件 条码 /// /// diff --git a/MESClassLibrary/DAL/Injection/UniqueDal.cs b/MESClassLibrary/DAL/Injection/UniqueDal.cs index fb2a818..3045ff8 100644 --- a/MESClassLibrary/DAL/Injection/UniqueDal.cs +++ b/MESClassLibrary/DAL/Injection/UniqueDal.cs @@ -70,5 +70,31 @@ namespace MESClassLibrary.DAL.Injection return GetPackageSerialNo(partNo, batch, packageSize); } } + + /// + /// 小件装配总成条码 + /// + /// + /// + /// + public string GetPunchSerialNo(string partNo, int size, ref string seriaLNo) + { + DateTime time = DateTime.Now; + + seriaLNo = GetBillNo(partNo + time.ToString("yyMMdd")+"小件装配总成码", size); + string sjBarCode = partNo + "." + time.ToString("yyMMdd") + ";" + seriaLNo + ";S104;;.1;" + time.ToString("yyyy/MM/dd") + ";"; + try + { + SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, $" insert into tb_BarCodeUnique(OneBarCode) values('{sjBarCode}')"); + return sjBarCode; + } + catch (Exception ex) + { + return GetPunchSerialNo(partNo, size,ref seriaLNo); + } + } + + + } } diff --git a/PaintingPC/FrmChangeColorOld.Designer.cs b/PaintingPC/FrmChangeColorOld.Designer.cs new file mode 100644 index 0000000..e3f687e --- /dev/null +++ b/PaintingPC/FrmChangeColorOld.Designer.cs @@ -0,0 +1,116 @@ +namespace PaintingPC +{ + partial class FrmChangeColor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel2 = new System.Windows.Forms.Panel(); + this.btnBack = new System.Windows.Forms.Button(); + this.btnSave = new System.Windows.Forms.Button(); + this.labTitle = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // panel2 + // + this.panel2.Location = new System.Drawing.Point(12, 165); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1256, 688); + this.panel2.TabIndex = 49; + // + // btnBack + // + this.btnBack.BackColor = System.Drawing.Color.SpringGreen; + this.btnBack.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnBack.Location = new System.Drawing.Point(675, 904); + this.btnBack.Name = "btnBack"; + this.btnBack.Size = new System.Drawing.Size(262, 73); + this.btnBack.TabIndex = 51; + this.btnBack.Text = "返回"; + this.btnBack.UseVisualStyleBackColor = false; + this.btnBack.Click += new System.EventHandler(this.btnBack_Click); + // + // btnSave + // + this.btnSave.BackColor = System.Drawing.Color.DarkGray; + this.btnSave.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnSave.Location = new System.Drawing.Point(329, 904); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(262, 73); + this.btnSave.TabIndex = 50; + this.btnSave.Text = "确定"; + this.btnSave.UseVisualStyleBackColor = false; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // labTitle + // + this.labTitle.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.labTitle.Font = new System.Drawing.Font("宋体", 48F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labTitle.Location = new System.Drawing.Point(200, 41); + this.labTitle.Name = "labTitle"; + this.labTitle.Size = new System.Drawing.Size(861, 84); + this.labTitle.TabIndex = 52; + this.labTitle.Text = "选择颜色"; + this.labTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.label1.Location = new System.Drawing.Point(765, 88); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(296, 29); + this.label1.TabIndex = 53; + // + // FrmChangeColor + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1280, 1024); + this.Controls.Add(this.label1); + this.Controls.Add(this.labTitle); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.btnBack); + this.Controls.Add(this.panel2); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmChangeColor"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "FrmChangeColor"; + this.Load += new System.EventHandler(this.FrmChangeColor_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button btnBack; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.Label labTitle; + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/PaintingPC/FrmChangeColorOld.cs b/PaintingPC/FrmChangeColorOld.cs new file mode 100644 index 0000000..6b524b1 --- /dev/null +++ b/PaintingPC/FrmChangeColorOld.cs @@ -0,0 +1,95 @@ +using System; +using System.Data; +using System.Drawing; +using System.Windows.Forms; + +namespace PaintingPC +{ + public partial class FrmChangeColor : Form + { + public FrmChangeColor() + { + InitializeComponent(); + } + + private void FrmChangeColor_Load(object sender, EventArgs e) + { + #region 加载颜色 + + int drow = 0, dcol = 4; //行,列 + + DataTable dt = Function.GetAllColor(); + if (dt != null && dt.Rows.Count > 0) + { + drow = Convert.ToInt32(Math.Ceiling((double)dt.Rows.Count / dcol)); + RadioButton[] rbs = new RadioButton[dcol]; + string[] dstr = new string[dt.Rows.Count]; + + for (int i = 0; i < dt.Rows.Count; i++) + { + //dstr[i] = dt.Rows[i]["Des"].ToString() + "," + dt.Rows[i]["ColorCode"].ToString() + "," + dt.Rows[i]["ColorNo"].ToString(); + dstr[i] = dt.Rows[i]["Des"].ToString(); + } + + for (int i = 0; i < dcol; i++) //列 + { + for (int j = 0; j < drow; j++) //行 + { + rbs[i] = new RadioButton(); + if ((i + dcol * j) < dstr.Length) + { + rbs[i].Text = dstr[i + dcol * j].ToString(); + rbs[i].Font = new Font(rbs[i].Font.FontFamily, 20, FontStyle.Bold); + rbs[i].Size = new Size(300, 40); + rbs[i].Location = new Point(20 + i * (rbs[i].Size.Width + 15), 5 + j * (rbs[i].Size.Height + 10)); + rbs[i].BackColor = Color.Transparent; + rbs[i].TextAlign = ContentAlignment.MiddleCenter; + panel2.Controls.Add(rbs[i]); + rbs[i].Click += new EventHandler(radioButton_Click); + } + } + } + } + + #endregion + } + + private void radioButton_Click(object sender, EventArgs e) + { + RadioButton rb = sender as RadioButton; + //rb.Select(); + rb.Checked = true; + } + + /// + /// 返回按钮 + /// + /// + /// + private void btnBack_Click(object sender, EventArgs e) + { + this.Close(); + } + + /// + /// 确定按钮 + /// + /// + /// + private void btnSave_Click(object sender, EventArgs e) + { + foreach (Control c in panel2.Controls) + { + RadioButton rbn = c as RadioButton; + if (rbn.Checked) + { + FrmFirstCheck.ColorName = rbn.Text; + FrmSecondCheck.ColorName = rbn.Text; + } + } + + this.Close(); + } + + } +} diff --git a/PaintingPC/FrmChangeColorOld.resx b/PaintingPC/FrmChangeColorOld.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/PaintingPC/FrmChangeColorOld.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PaintingPC/FrmQualityOnLine.cs b/PaintingPC/FrmQualityOnLine.cs new file mode 100644 index 0000000..f4ba960 --- /dev/null +++ b/PaintingPC/FrmQualityOnLine.cs @@ -0,0 +1,869 @@ + +using PaintingPC.Model; +using PaintingPC.WebReference; +using System; +using System.Linq; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.IO; +using System.Net.NetworkInformation; +using System.Reflection; +using System.Threading; +using System.Windows.Forms; +using MESClassLibrary.BLL.BasicInfo; +using static System.Windows.Forms.AxHost; + +namespace PaintingPC +{ + public partial class FrmQualityOnLine : Form + { + int count = 0; //缺陷图选择个数 + public static string paintId = ""; + + private static string position = "", reason = "", responsible = ""; + + private string _stationType = "上线前质检"; + private string _isTest = "false"; + //责任方 + private List _selectResponsibles = new List(); + //扫描的喷涂行数据 + private DataRow _scanPaintRow = null; + public FrmQualityOnLine() + { + InitializeComponent(); + //WindowState = FormWindowState.Normal; + this.Size = new Size(1280, 1020); + + _isTest = ConfigurationManager.AppSettings["测试"]?.ToString(); + labProPosition.Text = Program.station; + } + + + private void FrmSecondCheck_Load(object sender, EventArgs e) + { + try + { + Control.CheckForIllegalCrossThreadCalls = false; + UpdateSoftware(); + InitPage(); + } + catch (Exception ex) + { + MessageBox.Show("网络故障,请联系网络管理员"); + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + public void InitPage() + { + try + { + string title = ConfigurationManager.AppSettings["Display"].ToString(); ; + string workClass = Function.GetWorkClass2(); + string station = ConfigurationManager.AppSettings["Station"].ToString(); + + labTitle.Text = title; + + Program.IP = ConfigurationManager.AppSettings["IP"].ToString(); + + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + } + catch (Exception ex) + { } + } + + /// + /// 初始化颜色选择框列表 + /// + /// + public void InitColor(string stockNo) + { + try + { + DataTable dt = Function.GetColorByStockNo(stockNo); + if(dt.Rows.Count == 0) + { + lbForeig.Text = $"基础数据-产品颜色菜单未配置[{stockNo}]的颜色信息"; + } + + DataRow dr = dt.NewRow(); + dr["Color"] = ""; + dt.Rows.InsertAt(dr, 0); + + } + catch (Exception ex) + { + LogHelper.WriteLogManager(ex); + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + throw ex; + } + } + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + try + { + labTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + catch + { + + } + } + + /// + /// 缺陷图点击 + /// + /// + /// + void lblRoom_Click(object sender, EventArgs e) + { + Label a = (Label)sender; + string aa = a.Text; + if (a.BackColor == Color.Transparent) + { + a.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse); + position += aa; + count++; + } + else + { + a.BackColor = Color.Transparent; + count--; + } + + if(!string.IsNullOrEmpty(position) && position.EndsWith(";")) + { + position = position.Substring(0, position.Length - 1); + } + } + + /// + /// 缺陷原因点击 + /// + /// + /// + void dLbRoom_Click(object sender, EventArgs e) + { + if (count == 0) + { + MessageBox.Show("请选择缺陷区域!"); + return; + } + Label a = (Label)sender; + string aa = a.Text; + if (a.BackColor == Color.Transparent) + { + a.BackColor = Color.Chartreuse; + reason += a.Text + ";"; + } + else + { + a.BackColor = Color.Transparent; + reason = reason.Replace(a.Text + ";", ""); + } + } + + private Control[] SetControlGroup() + { + Control[] controls = { }; + return controls; + } + + /// + /// 清除控件选中 + /// + /// + public void ClearControlColor(Control[] controls) + { + foreach (Control c in controls) + { + c.BackColor = Color.LightGray; + } + } + + + /// + /// 合格 + /// + /// + /// + private void btnOk_Click(object sender, EventArgs e) + { + try + { + if (_scanPaintRow == null) + { + MessageBox.Show("请先扫描数据,然后操作."); + return; + } + + ShowHint(""); + + SaveRst("合格", _scanPaintRow); + } + catch(Exception ex) + { + ShowHint("执行合格判定发生异常,异常原因:" + ex.Message); + MessageBox.Show("执行合格判定发生异常,异常原因:" + ex.Message); + Clear(); + } + + } + void Clear() + { + ClearPage(); + ClearTxtBarcode(); + txtBarCode.TabIndex = 0; + } + + + /// + /// 点修补按钮 + /// + /// + /// + private void btnRepair_Click(object sender, EventArgs e) + { + try + { + if (_scanPaintRow == null) + { + MessageBox.Show("请先扫描数据,然后操作."); + return; + } + + ShowHint(""); + + #region 必须选择缺陷位置与缺陷原因,否则无法保存 + + if (CheckDefect() == false) return; + + #endregion + + btnRepair.BackColor = Color.Yellow; + + SaveRst("点修补", _scanPaintRow); + } + catch (Exception ex) + { + ShowHint("判定点修补操作发生异常,异常原因:" + ex.Message); + MessageBox.Show("判定点修补操作发生异常,异常原因:" + ex.Message); + Clear(); + } + + } + private void btnPG_Click(object sender, EventArgs e) + { + try + { + if (_scanPaintRow == null) + { + MessageBox.Show("请先扫描数据,然后操作."); + return; + } + + ShowHint(""); + #region 必须选择缺陷位置与缺陷原因,否则无法保存 + if (CheckDefect() == false) return; + #endregion + + SaveRst("抛光", _scanPaintRow); + } + + catch (Exception ex) + { + ShowHint("执行报废操作发生异常,异常原因:" + ex.Message); + MessageBox.Show("执行报废操作发生异常,异常原因:" + ex.Message); + Clear(); + } + } + /// + /// 报废按钮 + /// + /// + /// + private void btnAbt_Click(object sender, EventArgs e) + { + try + { + if (_scanPaintRow == null) + { + MessageBox.Show("请先扫描数据,然后操作."); + return; + } + + + + ShowHint(""); + #region 必须选择缺陷位置与缺陷原因,否则无法保存 + if (CheckDefect() == false) return; + #endregion + + + SaveRst("报废", _scanPaintRow); + } + + catch(Exception ex) + { + ShowHint("执行报废操作发生异常,异常原因:" + ex.Message); + MessageBox.Show("执行报废操作发生异常,异常原因:" + ex.Message); + Clear(); + } + + } + /// + /// + /// + /// + /// + /// + /// 0-不合格;1-合格;9-返喷 8-其他 + void SaveRst(string state, DataRow paintRow, string userName="") + { + if (string.IsNullOrEmpty(userName)) + { + userName = Program.UserName; + } + string bcode = txtBarCode.Text.Trim(); + //保存 + string id = SaveInspect(state, _scanPaintRow, userName); + if (!string.IsNullOrEmpty(id)) + { + _scanPaintRow = null; + ShowHint("操作成功", true); + ClearPage(); + } + + } + + /// + /// 必须选择缺陷位置与缺陷原因,否则无法保存 + /// + /// + bool CheckDefect() + { + string damnPositionTemp = ""; + string reasonTemp = ""; + string responsibTemp = ""; + //缺陷位置 + foreach (Control c in pictureBox2.Controls) + { + Label lab = c as Label; + if (lab.BackColor != Color.Transparent) + { + damnPositionTemp += lab.Text + ";"; + position = damnPositionTemp; + } + } + //缺陷原因 + foreach (Control c in panel2.Controls) + { + Label lab = c as Label; + if (lab.BackColor != Color.Transparent) + { + reasonTemp += lab.Text + ";"; + reason = reasonTemp; + } + } + foreach (Control c in panelResponsibility.Controls) + { + Label lab = c as Label; + if (lab.BackColor != Color.Transparent) + { + responsibTemp += lab.Text + ";"; + responsible = responsibTemp; + } + } + + if (string.IsNullOrWhiteSpace(damnPositionTemp) || string.IsNullOrWhiteSpace(reasonTemp)) + { + MessageBox.Show("必须选择缺陷位置与缺陷原因,否则无法保存!"); + return false; + } + + if (_selectResponsibles.Count == 0) + { + MessageBox.Show("必须选择责任部门,否则无法保存!"); + return false; + } + + + + return true; + } + /// + /// 保存质检记录 tb_InspectResult + /// + /// + /// + /// + /// 返回插入记录的ID + public string SaveInspect(string inspectResult,DataRow scanPaintRow,string userName) + { + try + { + if (!string.IsNullOrWhiteSpace(txtBarCode.Text.Trim())) + { + InspectModel model1 = new InspectModel(); + + model1.barcode = scanPaintRow["BarCode"].ToString(); + model1.position = _stationType; + model1.stationNo = Program.station; + model1.inspectResult =inspectResult; + + model1.damnPosition = position; + model1.reason = reason; + model1.Responsible = responsible;// string.Join(",", _selectResponsibles); + + + model1.remark3 = scanPaintRow["remark3"].ToString(); + model1.ForeignPartCode = scanPaintRow["ForeignPartCode"].ToString(); + model1.CarType = scanPaintRow["CarType"].ToString(); + + + if (inspectResult != "合格") + { + if (string.IsNullOrWhiteSpace(model1.damnPosition) || string.IsNullOrWhiteSpace(model1.reason) || string.IsNullOrWhiteSpace(model1.Responsible)) + { + MessageBox.Show("必须选择缺陷位置,缺陷原因与责任部门,否则无法保存!"); + return ""; + } + } + model1.productInfo = scanPaintRow["productInfo"].ToString(); + model1.side = scanPaintRow["side"].ToString(); + model1.InspectTimes = "1"; + model1.remark1 = scanPaintRow["remark1"].ToString(); + model1.remark2 = scanPaintRow["remark2"].ToString(); + + model1.remark3 = scanPaintRow["remark3"].ToString(); + + model1.AddMan = userName; + + + return Function.InsertInspect3(model1); + } + return ""; + } + catch (Exception ex) + { + ShowHint("质检提交异常,原因:" + ex.Message); + LogHelper.WriteErrLogBase("质检提交:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + MessageBox.Show("质检提交异常,原因:" + ex.Message); + return null; + } + } + void ShowHint(string txt,bool isOk =false) + { + lbForeig.ForeColor = Color.Red; + lbForeig.Text = txt; + if(isOk == true) + { + lbForeig.ForeColor = Color.Green; + } + } + public void ClearInspect() + { + //缺陷位置 + foreach (Control c in pictureBox2.Controls) + { + Label lab = c as Label; + lab.BackColor = Color.Transparent; + } + //缺陷原因 + foreach (Control c in panel2.Controls) + { + Label lab = c as Label; + lab.BackColor = Color.Transparent; + } + foreach (var cont in panelResponsibility.Controls) + { + if (cont is Label) + { + if ((cont as Label).Tag != null && (cont as Label).Tag.ToString() == "Response") + (cont as Label).BackColor = Color.Transparent; + } + } + + } + + /// + /// 扫码-根据条码查询信息(产品信息、加载图片及缺陷原因、三次检验信息) + /// + /// + /// + private void txtBarCode_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + btnOk.Enabled = true; + btnRepair.Enabled = true; + + lbForeig.Text = ""; + ClearPage(); + ScanBarCode(); + timer1.Enabled = true; + } + catch (Exception ex) + { + MessageBox.Show("请查看网络是否与服务器连通,无法连通请联系网络管理员。"+ ex); + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + } + + private void ScanBarCode() + { + try + { + ButtonEnable(SetControlGroup()); + //ClearPage(); + + //测试条码:11111111112222222222 + string barcode = txtBarCode.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = Function.TransToBarCodeOne(barcode); + } + + #region 判断条码有效性 + + if (! Function.BarCodeValid(barcode)) + { + MessageBox.Show("扫描的条码号:"+barcode+"无效,请重新扫描!"); + txtBarCode.Text = ""; + return; + } + + #endregion + + _scanPaintRow = GetRecentRstInfo(barcode); + if(_scanPaintRow["inspectResult"].ToString().Contains("合格") == false) + { + MessageBox.Show("扫描的条码号:" + barcode + "喷涂线不是合格状态,请重新扫描!"); + txtBarCode.Text = ""; + return; + } + labProductInfo.Text = _scanPaintRow["productInfo"].ToString(); + + + //根据条码查询,加载图片及原因 + int row = 0, col = 0; + string picture = ""; + + + foreach (var cont in panelResponsibility.Controls) + { + if (cont is Label) + { + if ((cont as Label).Tag != null && (cont as Label).Tag.ToString() == "Response") + (cont as Label).BackColor = Color.Transparent; + } + } + + #region 缺陷原因 + + try + { + int drow = 0, dcol = 5; //行,列 + + DataTable dt3 = Function.SearchDefectInfo(ConfigurationManager.AppSettings["Station"].Trim()); + if (dt3 != null && dt3.Rows.Count > 0) + { + + drow = Convert.ToInt32(Math.Ceiling((double)dt3.Rows.Count / dcol)); + Label[] dLb = new Label[7]; + string[] dstr = new string[dt3.Rows.Count]; + + for (int i = 0; i < dt3.Rows.Count; i++) + { + dstr[i] = dt3.Rows[i]["DefectName"].ToString(); + } + + for (int i = 0; i < dcol; i++) //列 + { + for (int j = 0; j < drow; j++) //行 + { + dLb[i] = new Label(); + if ((i + dcol * j) < dstr.Length) + { + + dLb[i].Text = dstr[i + dcol * j].ToString(); + dLb[i].Font = new Font(dLb[i].Font.FontFamily, 24, FontStyle.Bold); + dLb[i].Size = new Size(150, 50); + dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width + 25), 5 + j * (dLb[i].Size.Height + 20)); + dLb[i].BorderStyle = BorderStyle.FixedSingle; + dLb[i].BackColor = Color.Transparent; + dLb[i].TextAlign = ContentAlignment.MiddleCenter; + + if (dLb[i].Text.Contains("点修补")) + { + dLb[i].Font = new Font(dLb[i].Font.FontFamily, 36, FontStyle.Bold); + dLb[i].Size = new Size(170, 60); + dLb[i].ForeColor = Color.Red; + //dLb[i].BackColor = Color.Red; + } + panel2.Controls.Add(dLb[i]); + dLb[i].Click += new EventHandler(dLbRoom_Click); + } + } + } + } + } + catch (Exception ex) + { + LogHelper.WriteLogManager(ex); + LogHelper.WriteErrLogBase("缺陷项-"+ex.ToString(), MethodBase.GetCurrentMethod().Name); + throw ex; + } + + #endregion + + #region 加载图片 + + try + { + DataTable dt2 = Function.SearchInfoByBarCode(barcode); + + if (dt2 != null && dt2.Rows.Count > 0) + { + row = Convert.ToInt32(dt2.Rows[0]["Rows"].ToString()); + col = Convert.ToInt32(dt2.Rows[0]["Cols"].ToString()); + picture = dt2.Rows[0]["PicturePath"].ToString(); + } + dt2.Dispose(); + + if (!string.IsNullOrEmpty(picture)) + { + if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture)) + { + + string strImageURL = Function.GetImgPath() + picture; + + if(_isTest != "true") + { + System.Net.WebClient webClient = new System.Net.WebClient(); + webClient.DownloadFile(strImageURL, Directory.GetCurrentDirectory() + @"\" + picture); + } + + } + + + FileStream fs = new FileStream(Directory.GetCurrentDirectory() + "\\" + picture, FileMode.Open, + FileAccess.Read);//获取图片文件流 + Image img = Image.FromStream(fs); // 文件流转换成Image格式 + pictureBox2.Image = img; //给 图片框设置要显示的图片 + fs.Close(); // 关闭流,释放图片资源 + } + } + catch (Exception ex) + { + LogHelper.WriteLogManager(ex); + LogHelper.WriteErrLogBase("图片项-" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + #endregion + + #region 缺陷图划分区域 + + Label[] lb = new Label[5]; + string[] str = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; + + for (int i = 0; i < col; i++) + { + for (int j = 0; j < row; j++) + { + lb[i] = new Label(); + lb[i].Text = str[i + col * j].ToString(); + lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold); + + lb[i].Size = new Size(pictureBox2.Width / col, pictureBox2.Height / row); + lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height); + lb[i].BorderStyle = BorderStyle.FixedSingle; + lb[i].BackColor = Color.Transparent; + lb[i].TextAlign = ContentAlignment.MiddleCenter; + pictureBox2.Controls.Add(lb[i]); + + lb[i].Click += new EventHandler(lblRoom_Click); + } + } + + #endregion + + txtBarCode.SelectAll(); + } + catch (Exception ex) + { + MessageBox.Show("请查看网络是否与服务器连通,无法连通请联系网络管理员。" + ex.ToString()); + LogHelper.WriteLogManager(ex); + LogHelper.WriteErrLogBase("整体项-" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + /// + /// 喷涂库最新质检记录 + /// + /// + /// + private DataRow GetRecentRstInfo(string barcode) + { + //tb_InspectResult 中最新质检结果 + DataTable dt = Function.GetLastResult(barcode); + if(dt.Rows.Count == 0) + { + throw new Exception("塑件条码没有喷涂质检记录"); + } + DataRow dr = dt.Rows[0]; + + if(_isTest == "false") + { + string errorMsg = string.Empty; + //wms是否喷涂下线 + bool isExsit = Function.GetPointRepairFrWms(barcode, ref errorMsg); + if (isExsit == false) + { + if (!string.IsNullOrEmpty(errorMsg)) + { + throw new Exception("在wms系统的查询返修入库记录时发生错误,错误原因:" + errorMsg); + + } + else + { + throw new Exception("没有在wms系统的返修入库记录,无法进行点修补."); + + } + + } + } + + return dr; + } + + /// + /// 设置按钮可用 + /// + /// + private void ButtonEnable(Control[] controls) + { + foreach (Control c in controls) + { + Button btn = c as Button; + btn.Enabled = true; + } + } + + /// + /// 点击退出 + /// + /// + /// + private void labTime_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + + /// + /// 清空页面 + /// + private void ClearPage() + { + labProductInfo.Tag = null; + labProductInfo.Text = ""; + //btnAbt.BackColor = Color.LightGray; + //btnRepair.BackColor = Color.LightGray; + + //ClearRadioButton(); + ClearInspect(); + ClearControlColor(SetControlGroup()); + pictureBox2.Controls.Clear(); + panel2.Controls.Clear(); + pictureBox2.Image = null; + txtBarCode.TabIndex = 0; + txtBarCode.Select(); + position = ""; + reason = ""; + } + + + public void ClearTxtBarcode() + { + txtBarCode.Text = ""; + labProPosition.Text = ""; + } + + /// + /// 其他按钮 + /// + /// + /// + //private void button1_Click(object sender, EventArgs e) + //{ + // ClearControlColor(SetControlGroup()); + // //btnPass.BackColor = Color.GreenYellow; + // //保存 + // SaveInspect("其他"); + // ClearPage(); + // ClearTxtBarcode(); + // txtBarCode.TabIndex = 0; + //} + + private void UpdateSoftware() + { + return; + } + + + + private void txtBarCode_DoubleClick(object sender, EventArgs e) + { + txtBarCode.SelectAll(); + } + + private void panelResponsibility_Paint(object sender, PaintEventArgs e) + { + + } + + + private void Responsibility_Click(object sender, EventArgs e) + { + Label a = (Label)sender; + + foreach (var cont in panelResponsibility.Controls) + { + if (cont is Label) + { + if ((cont as Label).Tag != null && (cont as Label).Tag.ToString() == "Response") + (cont as Label).BackColor = Color.Transparent; + } + } + + if (a.BackColor == Color.Transparent) + { + a.BackColor = Color.Chartreuse; + _selectResponsibles.Clear(); + _selectResponsibles.Add(a.Text); + + } + else + { + a.BackColor = Color.Transparent; + _selectResponsibles.Clear(); + } + } + + } +} diff --git a/PaintingPC/FrmQualityOnLine.designer.cs b/PaintingPC/FrmQualityOnLine.designer.cs new file mode 100644 index 0000000..ea328df --- /dev/null +++ b/PaintingPC/FrmQualityOnLine.designer.cs @@ -0,0 +1,392 @@ +namespace PaintingPC +{ + partial class FrmQualityOnLine + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + try + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + catch + { + + } + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmQualityOnLine)); + this.labTime = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.labTitle = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.label15 = new System.Windows.Forms.Label(); + this.labProductInfo = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.txtBarCode = new System.Windows.Forms.TextBox(); + this.labProPosition = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.panelResponsibility = new System.Windows.Forms.Panel(); + this.label19 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.lbForeig = new System.Windows.Forms.Label(); + this.btnOk = new System.Windows.Forms.Button(); + this.btnRepair = new System.Windows.Forms.Button(); + this.btnAbt = new System.Windows.Forms.Button(); + this.btnPG = new System.Windows.Forms.Button(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.panel1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.panelResponsibility.SuspendLayout(); + this.SuspendLayout(); + // + // labTime + // + this.labTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labTime.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labTime.Location = new System.Drawing.Point(1867, 17); + this.labTime.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.labTime.Name = "labTime"; + this.labTime.Size = new System.Drawing.Size(457, 146); + this.labTime.TabIndex = 18; + this.labTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labTime.Click += new System.EventHandler(this.labTime_Click); + // + // pictureBox1 + // + this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(22, 17); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(291, 146); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 17; + this.pictureBox1.TabStop = false; + // + // labTitle + // + this.labTitle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labTitle.Font = new System.Drawing.Font("宋体", 48F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labTitle.Location = new System.Drawing.Point(296, 17); + this.labTitle.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.labTitle.Name = "labTitle"; + this.labTitle.Size = new System.Drawing.Size(1576, 146); + this.labTitle.TabIndex = 16; + this.labTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel2 + // + this.panel2.Location = new System.Drawing.Point(22, 1078); + this.panel2.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1829, 613); + this.panel2.TabIndex = 48; + // + // pictureBox2 + // + this.pictureBox2.Location = new System.Drawing.Point(22, 526); + this.pictureBox2.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(1829, 511); + this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox2.TabIndex = 47; + this.pictureBox2.TabStop = false; + // + // label15 + // + this.label15.BackColor = System.Drawing.Color.Lime; + this.label15.Font = new System.Drawing.Font("黑体", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label15.Location = new System.Drawing.Point(22, 177); + this.label15.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(292, 130); + this.label15.TabIndex = 49; + this.label15.Text = "扫码信息"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // labProductInfo + // + this.labProductInfo.BackColor = System.Drawing.Color.White; + this.labProductInfo.Font = new System.Drawing.Font("黑体", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labProductInfo.Location = new System.Drawing.Point(1408, 177); + this.labProductInfo.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.labProductInfo.Name = "labProductInfo"; + this.labProductInfo.Size = new System.Drawing.Size(917, 130); + this.labProductInfo.TabIndex = 52; + this.labProductInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Lime; + this.label2.Font = new System.Drawing.Font("黑体", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(1106, 177); + this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(292, 130); + this.label2.TabIndex = 51; + this.label2.Text = "产品信息"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // txtBarCode + // + this.txtBarCode.BackColor = System.Drawing.Color.White; + this.txtBarCode.Font = new System.Drawing.Font("黑体", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBarCode.Location = new System.Drawing.Point(326, 198); + this.txtBarCode.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.txtBarCode.Name = "txtBarCode"; + this.txtBarCode.Size = new System.Drawing.Size(764, 87); + this.txtBarCode.TabIndex = 0; + this.txtBarCode.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtBarCode.DoubleClick += new System.EventHandler(this.txtBarCode_DoubleClick); + this.txtBarCode.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBarCode_KeyDown); + // + // labProPosition + // + this.labProPosition.BackColor = System.Drawing.Color.White; + this.labProPosition.Font = new System.Drawing.Font("黑体", 22F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labProPosition.Location = new System.Drawing.Point(1860, 323); + this.labProPosition.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.labProPosition.Name = "labProPosition"; + this.labProPosition.Size = new System.Drawing.Size(465, 151); + this.labProPosition.TabIndex = 64; + this.labProPosition.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel1 + // + this.panel1.AutoScroll = true; + this.panel1.Controls.Add(this.groupBox1); + this.panel1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panel1.Location = new System.Drawing.Point(22, 306); + this.panel1.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1829, 213); + this.panel1.TabIndex = 66; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.panelResponsibility); + this.groupBox1.Controls.Add(this.lbForeig); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox1.Location = new System.Drawing.Point(0, 0); + this.groupBox1.Margin = new System.Windows.Forms.Padding(0); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(0); + this.groupBox1.Size = new System.Drawing.Size(1829, 213); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "责任部门"; + // + // panelResponsibility + // + this.panelResponsibility.AutoScroll = true; + this.panelResponsibility.Controls.Add(this.label19); + this.panelResponsibility.Controls.Add(this.label3); + this.panelResponsibility.Controls.Add(this.label17); + this.panelResponsibility.Dock = System.Windows.Forms.DockStyle.Top; + this.panelResponsibility.Location = new System.Drawing.Point(0, 37); + this.panelResponsibility.Margin = new System.Windows.Forms.Padding(0); + this.panelResponsibility.Name = "panelResponsibility"; + this.panelResponsibility.Size = new System.Drawing.Size(1829, 114); + this.panelResponsibility.TabIndex = 0; + this.panelResponsibility.Paint += new System.Windows.Forms.PaintEventHandler(this.panelResponsibility_Paint); + // + // label19 + // + this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label19.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label19.ForeColor = System.Drawing.Color.Blue; + this.label19.Location = new System.Drawing.Point(898, 8); + this.label19.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(344, 92); + this.label19.TabIndex = 12; + this.label19.Tag = "Response"; + this.label19.Text = "物流"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label19.Click += new System.EventHandler(this.Responsibility_Click); + // + // label3 + // + this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label3.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.Blue; + this.label3.Location = new System.Drawing.Point(472, 8); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(294, 92); + this.label3.TabIndex = 11; + this.label3.Tag = "Response"; + this.label3.Text = "注塑"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label3.Click += new System.EventHandler(this.Responsibility_Click); + // + // label17 + // + this.label17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.label17.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label17.ForeColor = System.Drawing.Color.Blue; + this.label17.Location = new System.Drawing.Point(8, 8); + this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(331, 92); + this.label17.TabIndex = 10; + this.label17.Tag = "Response"; + this.label17.Text = "喷涂"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label17.Click += new System.EventHandler(this.Responsibility_Click); + // + // lbForeig + // + this.lbForeig.AutoSize = true; + this.lbForeig.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbForeig.ForeColor = System.Drawing.Color.Red; + this.lbForeig.Location = new System.Drawing.Point(3, 168); + this.lbForeig.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lbForeig.Name = "lbForeig"; + this.lbForeig.Size = new System.Drawing.Size(68, 25); + this.lbForeig.TabIndex = 72; + this.lbForeig.Tag = "老外库提示"; + this.lbForeig.Text = " "; + // + // btnOk + // + this.btnOk.BackColor = System.Drawing.Color.LawnGreen; + this.btnOk.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnOk.Location = new System.Drawing.Point(1860, 654); + this.btnOk.Name = "btnOk"; + this.btnOk.Size = new System.Drawing.Size(491, 197); + this.btnOk.TabIndex = 67; + this.btnOk.Text = "合 格"; + this.btnOk.UseVisualStyleBackColor = false; + this.btnOk.Click += new System.EventHandler(this.btnOk_Click); + // + // btnRepair + // + this.btnRepair.BackColor = System.Drawing.Color.DodgerBlue; + this.btnRepair.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnRepair.Location = new System.Drawing.Point(1860, 946); + this.btnRepair.Name = "btnRepair"; + this.btnRepair.Size = new System.Drawing.Size(491, 197); + this.btnRepair.TabIndex = 69; + this.btnRepair.Text = "点修补"; + this.btnRepair.UseVisualStyleBackColor = false; + this.btnRepair.Click += new System.EventHandler(this.btnRepair_Click); + // + // btnAbt + // + this.btnAbt.BackColor = System.Drawing.Color.OrangeRed; + this.btnAbt.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnAbt.Location = new System.Drawing.Point(1860, 1501); + this.btnAbt.Name = "btnAbt"; + this.btnAbt.Size = new System.Drawing.Size(491, 190); + this.btnAbt.TabIndex = 70; + this.btnAbt.Text = "报 废"; + this.btnAbt.UseVisualStyleBackColor = false; + this.btnAbt.Click += new System.EventHandler(this.btnAbt_Click); + // + // btnPG + // + this.btnPG.BackColor = System.Drawing.Color.Yellow; + this.btnPG.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnPG.Location = new System.Drawing.Point(1860, 1226); + this.btnPG.Name = "btnPG"; + this.btnPG.Size = new System.Drawing.Size(491, 197); + this.btnPG.TabIndex = 73; + this.btnPG.Text = "抛光"; + this.btnPG.UseVisualStyleBackColor = false; + this.btnPG.Click += new System.EventHandler(this.btnPG_Click); + // + // timer1 + // + this.timer1.Interval = 1000; + // + // FrmQualityOnLine + // + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 21F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(2351, 1789); + this.Controls.Add(this.btnPG); + this.Controls.Add(this.btnAbt); + this.Controls.Add(this.btnRepair); + this.Controls.Add(this.btnOk); + this.Controls.Add(this.panel1); + this.Controls.Add(this.labProPosition); + this.Controls.Add(this.txtBarCode); + this.Controls.Add(this.labProductInfo); + this.Controls.Add(this.label2); + this.Controls.Add(this.label15); + this.Controls.Add(this.panel2); + this.Controls.Add(this.pictureBox2); + this.Controls.Add(this.labTime); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.labTitle); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.Name = "FrmQualityOnLine"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "喷涂质检"; + this.Load += new System.EventHandler(this.FrmSecondCheck_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + this.panel1.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.panelResponsibility.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label labTime; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label labTitle; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label labProductInfo; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtBarCode; + private System.Windows.Forms.Label labProPosition; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Button btnOk; + private System.Windows.Forms.Button btnRepair; + private System.Windows.Forms.Button btnAbt; + private System.Windows.Forms.Panel panelResponsibility; + private System.Windows.Forms.Label lbForeig; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Button btnPG; + private System.Windows.Forms.Timer timer1; + } +} \ No newline at end of file diff --git a/PaintingPC/FrmQualityOnLine.resx b/PaintingPC/FrmQualityOnLine.resx new file mode 100644 index 0000000..4d6430c --- /dev/null +++ b/PaintingPC/FrmQualityOnLine.resx @@ -0,0 +1,478 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + RK5CYII= + + + + 17, 17 + + \ No newline at end of file diff --git a/PaintingPC/Function.cs b/PaintingPC/Function.cs index 203cba4..a54a970 100644 --- a/PaintingPC/Function.cs +++ b/PaintingPC/Function.cs @@ -1044,6 +1044,10 @@ namespace PaintingPC return res; } + + + + /// /// 将二维码转换成相应一维码 /// @@ -1681,11 +1685,15 @@ namespace PaintingPC // SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '2' ORDER BY createTime DESC) bb // UNION // SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '3' ORDER BY createTime DESC) cc) dd order by createTime DESC "; - string sql = @" select * from (SELECT * from (select TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '1' ORDER BY createTime DESC) aa - UNION - SELECT * from (select TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '2' ORDER BY createTime DESC) bb - UNION - SELECT * from (select TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '3' ORDER BY createTime DESC) cc) dd order by createTime DESC "; + + //string sql = @" select * from (SELECT * from (select TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '1' ORDER BY createTime DESC) aa + // UNION + // SELECT * from (select TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '2' ORDER BY createTime DESC) bb + // UNION + // SELECT * from (select TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '3' ORDER BY createTime DESC) cc) dd order by createTime DESC "; + + string sql = @" select TOP 30 * from tb_InspectResult where barcode = '" + barcode + @"' ORDER BY createTime DESC"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); // LogHelper.WriteSysLogBase("[sql:]" + sql, MethodBase.GetCurrentMethod().Name); return res; @@ -1815,6 +1823,70 @@ namespace PaintingPC return ""; } } + + public static string InsertInspect3(InspectModel model) + { + int res = 0; + try + { + string sql = @" INSERT INTO [dbo].[tb_InspectResult_Check] + ( + [barcode] + ,[side] + ,[position] + ,[stationNo] + ,[workClass] + ,[inspectResult] + ,[damnPosition] + ,[defectID] + ,[reason] + ,[productInfo] + ,[productOption] + ,[createTime] + ,[InspectTimes] + ,[remark1] + ,[remark2] + ,[remark3] + ,[CarType] + ,[AddMan] + ,[ForeignPartCode] + ,[Responsible] + ) + VALUES + ('" + model.barcode + @"' + ,'" + model.side + @"' + ,'" + model.position + @"' + ,'" + model.stationNo + @"' + ,'" + model.workClass + @"' + ,'" + model.inspectResult + @"' + ,'" + model.damnPosition + @"' + ,'" + model.defectID + @"' + ,'" + model.reason + @"' + ,'" + model.productInfo + @"' + ,'" + model.productOption + @"' + ,(select getdate()), '" + model.InspectTimes + @"' + ,'" + model.remark1 + @"' + ,'" + model.remark2 + @"' + ,'" + model.remark3 + @"' + ,'" + model.CarType + @"' + ,'" + model.AddMan + @"' + ,'" + model.ForeignPartCode + @"' + ,'" + model.Responsible + @"' + );select @@Identity "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt.Rows.Count > 0) + { + return dt.Rows[0][0].ToString(); + } + return ""; + } + catch (Exception ex) + { + LogHelper.WriteLogManager(ex); + LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return ""; + } + } private static string foreignSqlConnString = string.Empty; public static string GetProductInfo2(string barcode,ref string errorMsg) { diff --git a/PaintingPC/Model/InspectModel.cs b/PaintingPC/Model/InspectModel.cs index d352119..7474515 100644 --- a/PaintingPC/Model/InspectModel.cs +++ b/PaintingPC/Model/InspectModel.cs @@ -91,5 +91,8 @@ namespace PaintingPC.Model /// 是否需要点修补 /// public int IsNeedThirdCheck { get; set; } = 0; + + + public string Responsible { get; set; } } } diff --git a/PunchingMistake/FrmAssemble.Designer.cs b/PunchingMistake/FrmAssemble.Designer.cs new file mode 100644 index 0000000..23b24ac --- /dev/null +++ b/PunchingMistake/FrmAssemble.Designer.cs @@ -0,0 +1,716 @@ + +namespace PunchingMistake +{ + partial class FrmAssemble + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmAssemble)); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.panel12 = new System.Windows.Forms.Panel(); + this.lbPlanQty = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.panel13 = new System.Windows.Forms.Panel(); + this.lbCompleteQty = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.panel9 = new System.Windows.Forms.Panel(); + this.txtBarCode = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.panel8 = new System.Windows.Forms.Panel(); + this.lbPartDesc = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.panel7 = new System.Windows.Forms.Panel(); + this.lbPart = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.panel6 = new System.Windows.Forms.Panel(); + this.lbPlan = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.panel5 = new System.Windows.Forms.Panel(); + this.lbStation = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + this.panel10 = new System.Windows.Forms.Panel(); + this.button5 = new System.Windows.Forms.Button(); + this.button6 = new System.Windows.Forms.Button(); + this.btnPlanDown = new System.Windows.Forms.Button(); + this.btnPlanUp = new System.Windows.Forms.Button(); + this.panel11 = new System.Windows.Forms.Panel(); + this.lbClass = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.panel14 = new System.Windows.Forms.Panel(); + this.lbBadQty = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.panel15 = new System.Windows.Forms.Panel(); + this.panel16 = new System.Windows.Forms.Panel(); + this.lbHint = new System.Windows.Forms.Label(); + this.tableLayoutPanel1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.panel12.SuspendLayout(); + this.panel13.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + this.panel9.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel5.SuspendLayout(); + this.tableLayoutPanel4.SuspendLayout(); + this.panel10.SuspendLayout(); + this.panel11.SuspendLayout(); + this.panel14.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(35)))), ((int)(((byte)(53))))); + this.tableLayoutPanel1.ColumnCount = 5; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 27F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 2F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 46F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 2F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 27F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.panel2, 3, 0); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel4, 4, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 1; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1948, 1346); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.DarkCyan; + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(527, 60); + this.panel1.Margin = new System.Windows.Forms.Padding(3, 60, 3, 30); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1, 1256); + this.panel1.TabIndex = 0; + // + // panel2 + // + this.panel2.BackColor = System.Drawing.Color.DarkCyan; + this.panel2.Location = new System.Drawing.Point(1423, 60); + this.panel2.Margin = new System.Windows.Forms.Padding(3, 60, 3, 30); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1, 1256); + this.panel2.TabIndex = 1; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 1; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.Controls.Add(this.panel3, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.panel4, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.panel12, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.panel13, 0, 3); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(529, 3); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 4; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 110F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 2F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(888, 1340); + this.tableLayoutPanel2.TabIndex = 2; + // + // panel3 + // + this.panel3.BackColor = System.Drawing.Color.DarkCyan; + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(3, 727); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(882, 1); + this.panel3.TabIndex = 0; + // + // panel4 + // + this.panel4.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel4.BackgroundImage"))); + this.panel4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(3, 3); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(882, 104); + this.panel4.TabIndex = 1; + // + // panel12 + // + this.panel12.Controls.Add(this.lbPlanQty); + this.panel12.Controls.Add(this.label12); + this.panel12.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel12.Location = new System.Drawing.Point(3, 113); + this.panel12.Name = "panel12"; + this.panel12.Size = new System.Drawing.Size(882, 608); + this.panel12.TabIndex = 2; + // + // lbPlanQty + // + this.lbPlanQty.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbPlanQty.AutoSize = true; + this.lbPlanQty.BackColor = System.Drawing.Color.Transparent; + this.lbPlanQty.Font = new System.Drawing.Font("宋体", 128.1429F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbPlanQty.ForeColor = System.Drawing.Color.LightSeaGreen; + this.lbPlanQty.Location = new System.Drawing.Point(150, 195); + this.lbPlanQty.Name = "lbPlanQty"; + this.lbPlanQty.Size = new System.Drawing.Size(575, 300); + this.lbPlanQty.TabIndex = 3; + this.lbPlanQty.Text = "150"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.BackColor = System.Drawing.Color.Transparent; + this.label12.Font = new System.Drawing.Font("宋体", 21.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.ForeColor = System.Drawing.Color.White; + this.label12.Location = new System.Drawing.Point(130, 19); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(642, 51); + this.label12.TabIndex = 2; + this.label12.Text = "计划数量/PlannedQuantity"; + // + // panel13 + // + this.panel13.Controls.Add(this.lbCompleteQty); + this.panel13.Controls.Add(this.label13); + this.panel13.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel13.Location = new System.Drawing.Point(3, 729); + this.panel13.Name = "panel13"; + this.panel13.Size = new System.Drawing.Size(882, 608); + this.panel13.TabIndex = 3; + // + // lbCompleteQty + // + this.lbCompleteQty.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbCompleteQty.AutoSize = true; + this.lbCompleteQty.BackColor = System.Drawing.Color.Transparent; + this.lbCompleteQty.Font = new System.Drawing.Font("宋体", 128.1429F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbCompleteQty.ForeColor = System.Drawing.Color.LimeGreen; + this.lbCompleteQty.Location = new System.Drawing.Point(150, 179); + this.lbCompleteQty.Name = "lbCompleteQty"; + this.lbCompleteQty.Size = new System.Drawing.Size(575, 300); + this.lbCompleteQty.TabIndex = 4; + this.lbCompleteQty.Text = "695"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.BackColor = System.Drawing.Color.Transparent; + this.label13.Font = new System.Drawing.Font("宋体", 21.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label13.ForeColor = System.Drawing.Color.White; + this.label13.Location = new System.Drawing.Point(139, 22); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(668, 51); + this.label13.TabIndex = 3; + this.label13.Text = "完成数量/FinishedQuantity"; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 1; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3.Controls.Add(this.panel9, 0, 4); + this.tableLayoutPanel3.Controls.Add(this.panel8, 0, 3); + this.tableLayoutPanel3.Controls.Add(this.panel7, 0, 2); + this.tableLayoutPanel3.Controls.Add(this.panel6, 0, 1); + this.tableLayoutPanel3.Controls.Add(this.panel5, 0, 0); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 50); + this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(3, 50, 3, 3); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 5; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(518, 1293); + this.tableLayoutPanel3.TabIndex = 3; + // + // panel9 + // + this.panel9.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel9.BackgroundImage"))); + this.panel9.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel9.Controls.Add(this.txtBarCode); + this.panel9.Controls.Add(this.label6); + this.panel9.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel9.Location = new System.Drawing.Point(30, 1035); + this.panel9.Margin = new System.Windows.Forms.Padding(30, 3, 30, 30); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(458, 228); + this.panel9.TabIndex = 4; + // + // txtBarCode + // + this.txtBarCode.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBarCode.Location = new System.Drawing.Point(30, 109); + this.txtBarCode.Multiline = true; + this.txtBarCode.Name = "txtBarCode"; + this.txtBarCode.Size = new System.Drawing.Size(390, 74); + this.txtBarCode.TabIndex = 5; + this.txtBarCode.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBarCode_KeyDown); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.BackColor = System.Drawing.Color.Transparent; + this.label6.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label6.ForeColor = System.Drawing.Color.DarkCyan; + this.label6.Location = new System.Drawing.Point(23, 51); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(253, 37); + this.label6.TabIndex = 4; + this.label6.Text = "条码/BarCode"; + // + // panel8 + // + this.panel8.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel8.BackgroundImage"))); + this.panel8.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel8.Controls.Add(this.lbPartDesc); + this.panel8.Controls.Add(this.label5); + this.panel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel8.Location = new System.Drawing.Point(30, 777); + this.panel8.Margin = new System.Windows.Forms.Padding(30, 3, 30, 30); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(458, 225); + this.panel8.TabIndex = 3; + // + // lbPartDesc + // + this.lbPartDesc.AutoSize = true; + this.lbPartDesc.BackColor = System.Drawing.Color.Transparent; + this.lbPartDesc.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbPartDesc.ForeColor = System.Drawing.Color.White; + this.lbPartDesc.Location = new System.Drawing.Point(32, 115); + this.lbPartDesc.Name = "lbPartDesc"; + this.lbPartDesc.Size = new System.Drawing.Size(317, 37); + this.lbPartDesc.TabIndex = 4; + this.lbPartDesc.Text = "X247MF S后保冲孔"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label5.ForeColor = System.Drawing.Color.DarkCyan; + this.label5.Location = new System.Drawing.Point(23, 51); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(409, 37); + this.label5.TabIndex = 3; + this.label5.Text = "零件描述/Description"; + // + // panel7 + // + this.panel7.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel7.BackgroundImage"))); + this.panel7.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel7.Controls.Add(this.lbPart); + this.panel7.Controls.Add(this.label4); + this.panel7.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel7.Location = new System.Drawing.Point(30, 519); + this.panel7.Margin = new System.Windows.Forms.Padding(30, 3, 30, 30); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(458, 225); + this.panel7.TabIndex = 2; + // + // lbPart + // + this.lbPart.AutoSize = true; + this.lbPart.BackColor = System.Drawing.Color.Transparent; + this.lbPart.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbPart.ForeColor = System.Drawing.Color.White; + this.lbPart.Location = new System.Drawing.Point(32, 114); + this.lbPart.Name = "lbPart"; + this.lbPart.Size = new System.Drawing.Size(317, 37); + this.lbPart.TabIndex = 3; + this.lbPart.Text = "X247MF S后保冲孔"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label4.ForeColor = System.Drawing.Color.DarkCyan; + this.label4.Location = new System.Drawing.Point(23, 47); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(351, 37); + this.label4.TabIndex = 2; + this.label4.Text = "零件号/PartNumber"; + // + // panel6 + // + this.panel6.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel6.BackgroundImage"))); + this.panel6.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel6.Controls.Add(this.lbPlan); + this.panel6.Controls.Add(this.label3); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.Location = new System.Drawing.Point(30, 261); + this.panel6.Margin = new System.Windows.Forms.Padding(30, 3, 30, 30); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(458, 225); + this.panel6.TabIndex = 1; + // + // lbPlan + // + this.lbPlan.AutoSize = true; + this.lbPlan.BackColor = System.Drawing.Color.Transparent; + this.lbPlan.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbPlan.ForeColor = System.Drawing.Color.White; + this.lbPlan.Location = new System.Drawing.Point(32, 117); + this.lbPlan.Name = "lbPlan"; + this.lbPlan.Size = new System.Drawing.Size(317, 37); + this.lbPlan.TabIndex = 2; + this.lbPlan.Text = "X247MF S后保冲孔"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.ForeColor = System.Drawing.Color.DarkCyan; + this.label3.Location = new System.Drawing.Point(23, 46); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(389, 37); + this.label3.TabIndex = 1; + this.label3.Text = "计划编号/PlanNumber"; + // + // panel5 + // + this.panel5.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("panel5.BackgroundImage"))); + this.panel5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.panel5.Controls.Add(this.lbStation); + this.panel5.Controls.Add(this.label1); + this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel5.Location = new System.Drawing.Point(30, 3); + this.panel5.Margin = new System.Windows.Forms.Padding(30, 3, 30, 30); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(458, 225); + this.panel5.TabIndex = 0; + // + // lbStation + // + this.lbStation.AutoSize = true; + this.lbStation.BackColor = System.Drawing.Color.Transparent; + this.lbStation.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbStation.ForeColor = System.Drawing.Color.White; + this.lbStation.Location = new System.Drawing.Point(23, 108); + this.lbStation.Name = "lbStation"; + this.lbStation.Size = new System.Drawing.Size(317, 37); + this.lbStation.TabIndex = 1; + this.lbStation.Text = "X247MF S后保冲孔"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.ForeColor = System.Drawing.Color.DarkCyan; + this.label1.Location = new System.Drawing.Point(23, 36); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(409, 37); + this.label1.TabIndex = 0; + this.label1.Text = "生产工位/StationCode"; + // + // tableLayoutPanel4 + // + this.tableLayoutPanel4.ColumnCount = 1; + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel4.Controls.Add(this.panel10, 0, 4); + this.tableLayoutPanel4.Controls.Add(this.panel11, 0, 0); + this.tableLayoutPanel4.Controls.Add(this.panel14, 0, 2); + this.tableLayoutPanel4.Controls.Add(this.panel15, 0, 1); + this.tableLayoutPanel4.Controls.Add(this.panel16, 0, 3); + this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel4.Location = new System.Drawing.Point(1425, 50); + this.tableLayoutPanel4.Margin = new System.Windows.Forms.Padding(3, 50, 3, 3); + this.tableLayoutPanel4.Name = "tableLayoutPanel4"; + this.tableLayoutPanel4.RowCount = 5; + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 2F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 2F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F)); + this.tableLayoutPanel4.Size = new System.Drawing.Size(520, 1293); + this.tableLayoutPanel4.TabIndex = 4; + // + // panel10 + // + this.panel10.Controls.Add(this.lbHint); + this.panel10.Controls.Add(this.button5); + this.panel10.Controls.Add(this.button6); + this.panel10.Controls.Add(this.btnPlanDown); + this.panel10.Controls.Add(this.btnPlanUp); + this.panel10.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel10.Location = new System.Drawing.Point(3, 779); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(514, 511); + this.panel10.TabIndex = 0; + // + // button5 + // + this.button5.BackColor = System.Drawing.Color.Red; + this.button5.Font = new System.Drawing.Font("微软雅黑", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button5.ForeColor = System.Drawing.Color.White; + this.button5.Location = new System.Drawing.Point(267, 194); + this.button5.Margin = new System.Windows.Forms.Padding(4); + this.button5.Name = "button5"; + this.button5.Size = new System.Drawing.Size(240, 88); + this.button5.TabIndex = 28; + this.button5.Text = "结束计划"; + this.button5.UseVisualStyleBackColor = false; + // + // button6 + // + this.button6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.button6.Font = new System.Drawing.Font("微软雅黑", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button6.Location = new System.Drawing.Point(14, 194); + this.button6.Margin = new System.Windows.Forms.Padding(4); + this.button6.Name = "button6"; + this.button6.Size = new System.Drawing.Size(240, 88); + this.button6.TabIndex = 27; + this.button6.Text = "计划查询"; + this.button6.UseVisualStyleBackColor = false; + // + // btnPlanDown + // + this.btnPlanDown.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); + this.btnPlanDown.Font = new System.Drawing.Font("微软雅黑", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnPlanDown.Location = new System.Drawing.Point(267, 40); + this.btnPlanDown.Margin = new System.Windows.Forms.Padding(4); + this.btnPlanDown.Name = "btnPlanDown"; + this.btnPlanDown.Size = new System.Drawing.Size(240, 88); + this.btnPlanDown.TabIndex = 23; + this.btnPlanDown.Text = "下一计划"; + this.btnPlanDown.UseVisualStyleBackColor = false; + this.btnPlanDown.Click += new System.EventHandler(this.btnPlanDown_Click); + // + // btnPlanUp + // + this.btnPlanUp.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); + this.btnPlanUp.Font = new System.Drawing.Font("微软雅黑", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnPlanUp.Location = new System.Drawing.Point(14, 40); + this.btnPlanUp.Margin = new System.Windows.Forms.Padding(4); + this.btnPlanUp.Name = "btnPlanUp"; + this.btnPlanUp.Size = new System.Drawing.Size(240, 88); + this.btnPlanUp.TabIndex = 22; + this.btnPlanUp.Text = "上一计划"; + this.btnPlanUp.UseVisualStyleBackColor = false; + this.btnPlanUp.Click += new System.EventHandler(this.btnPlanUp_Click); + // + // panel11 + // + this.panel11.Controls.Add(this.lbClass); + this.panel11.Controls.Add(this.label10); + this.panel11.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel11.Location = new System.Drawing.Point(3, 3); + this.panel11.Name = "panel11"; + this.panel11.Size = new System.Drawing.Size(514, 251); + this.panel11.TabIndex = 1; + // + // lbClass + // + this.lbClass.AutoSize = true; + this.lbClass.BackColor = System.Drawing.Color.Transparent; + this.lbClass.Font = new System.Drawing.Font("宋体", 26.14286F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbClass.ForeColor = System.Drawing.Color.White; + this.lbClass.Location = new System.Drawing.Point(181, 138); + this.lbClass.Name = "lbClass"; + this.lbClass.Size = new System.Drawing.Size(120, 62); + this.lbClass.TabIndex = 4; + this.lbClass.Text = "A班"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.BackColor = System.Drawing.Color.Transparent; + this.label10.Font = new System.Drawing.Font("宋体", 15.85714F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.ForeColor = System.Drawing.Color.White; + this.label10.Location = new System.Drawing.Point(67, 19); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(378, 37); + this.label10.TabIndex = 3; + this.label10.Text = "2025-07-15 11:15:14"; + // + // panel14 + // + this.panel14.Controls.Add(this.lbBadQty); + this.panel14.Controls.Add(this.label14); + this.panel14.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel14.Location = new System.Drawing.Point(3, 262); + this.panel14.Name = "panel14"; + this.panel14.Size = new System.Drawing.Size(514, 509); + this.panel14.TabIndex = 2; + // + // lbBadQty + // + this.lbBadQty.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbBadQty.AutoSize = true; + this.lbBadQty.BackColor = System.Drawing.Color.Transparent; + this.lbBadQty.Font = new System.Drawing.Font("宋体", 99.85715F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbBadQty.ForeColor = System.Drawing.Color.Red; + this.lbBadQty.Location = new System.Drawing.Point(115, 117); + this.lbBadQty.Name = "lbBadQty"; + this.lbBadQty.Size = new System.Drawing.Size(215, 234); + this.lbBadQty.TabIndex = 5; + this.lbBadQty.Text = "0"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.BackColor = System.Drawing.Color.Transparent; + this.label14.Font = new System.Drawing.Font("宋体", 15F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label14.ForeColor = System.Drawing.Color.DarkCyan; + this.label14.Location = new System.Drawing.Point(7, 17); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(503, 35); + this.label14.TabIndex = 1; + this.label14.Text = "不良数/UnqualifiedQuantity"; + // + // panel15 + // + this.panel15.BackColor = System.Drawing.Color.DarkCyan; + this.panel15.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel15.Location = new System.Drawing.Point(3, 260); + this.panel15.Name = "panel15"; + this.panel15.Size = new System.Drawing.Size(514, 1); + this.panel15.TabIndex = 3; + // + // panel16 + // + this.panel16.BackColor = System.Drawing.Color.DarkCyan; + this.panel16.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel16.Location = new System.Drawing.Point(3, 777); + this.panel16.Name = "panel16"; + this.panel16.Size = new System.Drawing.Size(514, 1); + this.panel16.TabIndex = 4; + // + // lbHint + // + this.lbHint.AutoSize = true; + this.lbHint.Font = new System.Drawing.Font("宋体", 14.14286F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbHint.ForeColor = System.Drawing.Color.Red; + this.lbHint.Location = new System.Drawing.Point(31, 339); + this.lbHint.Name = "lbHint"; + this.lbHint.Size = new System.Drawing.Size(155, 34); + this.lbHint.TabIndex = 29; + this.lbHint.Text = "异常错误"; + // + // FrmAssemble + // + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 21F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1948, 1346); + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "FrmAssemble"; + this.Text = "FrmAssemble"; + this.Load += new System.EventHandler(this.FrmAssemble_Load); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + this.panel12.ResumeLayout(false); + this.panel12.PerformLayout(); + this.panel13.ResumeLayout(false); + this.panel13.PerformLayout(); + this.tableLayoutPanel3.ResumeLayout(false); + this.panel9.ResumeLayout(false); + this.panel9.PerformLayout(); + this.panel8.ResumeLayout(false); + this.panel8.PerformLayout(); + this.panel7.ResumeLayout(false); + this.panel7.PerformLayout(); + this.panel6.ResumeLayout(false); + this.panel6.PerformLayout(); + this.panel5.ResumeLayout(false); + this.panel5.PerformLayout(); + this.tableLayoutPanel4.ResumeLayout(false); + this.panel10.ResumeLayout(false); + this.panel10.PerformLayout(); + this.panel11.ResumeLayout(false); + this.panel11.PerformLayout(); + this.panel14.ResumeLayout(false); + this.panel14.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.Panel panel9; + private System.Windows.Forms.Panel panel8; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; + private System.Windows.Forms.Panel panel10; + private System.Windows.Forms.Button btnPlanDown; + private System.Windows.Forms.Button btnPlanUp; + private System.Windows.Forms.Button button6; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label lbStation; + private System.Windows.Forms.Label lbPartDesc; + private System.Windows.Forms.Label lbPart; + private System.Windows.Forms.Label lbPlan; + private System.Windows.Forms.TextBox txtBarCode; + private System.Windows.Forms.Panel panel11; + private System.Windows.Forms.Label lbClass; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Panel panel12; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Panel panel13; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Panel panel14; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label lbPlanQty; + private System.Windows.Forms.Label lbCompleteQty; + private System.Windows.Forms.Label lbBadQty; + private System.Windows.Forms.Button button5; + private System.Windows.Forms.Panel panel15; + private System.Windows.Forms.Panel panel16; + private System.Windows.Forms.Label lbHint; + } +} \ No newline at end of file diff --git a/PunchingMistake/FrmAssemble.cs b/PunchingMistake/FrmAssemble.cs new file mode 100644 index 0000000..8f01818 --- /dev/null +++ b/PunchingMistake/FrmAssemble.cs @@ -0,0 +1,311 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using MESClassLibrary.BLL.Log; +using grproLib; +using InjectionPC; +using MESClassLibrary.BLL.Injection; + +namespace PunchingMistake +{ + public partial class FrmAssemble : Form + { + private GridppReport Report = new GridppReport(); + private string oneBarCode = "", _stationNo = "", stationId = ""; + private UniqueBll _uniqueBll = new UniqueBll(); + public FrmAssemble() + { + InitializeComponent(); + } + + private void FrmAssemble_Load(object sender, EventArgs e) + { + _stationNo = ConfigurationManager.AppSettings["Station"]; + //stationId = ProScreenFunc.GetStationId(stationNo); + lbStation.Text = Function2.GetStation(_stationNo); + Control.CheckForIllegalCrossThreadCalls = false; + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + LoadScreen(); + } + public void LoadScreen() + { + DataTable dt = Function2.GetProScreen(_stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + + } + public void SetPage(DataTable dt) + { + ClearPage(); + if (dt.Rows.Count > 0) + { + this.Tag = dt.Rows[0]["ID"].ToString(); + txtBarCode.Tag = dt.Rows[0]["PartNo1"].ToString(); + txtBarCode.Text = ""; + lbPlan.Text = dt.Rows[0]["OrderNo"].ToString(); + lbPart.Text = dt.Rows[0]["PartNo1"].ToString(); + lbPartDesc.Text = dt.Rows[0]["Des"].ToString(); + lbPlanQty.Text = dt.Rows[0]["OrderCount"].ToString(); + lbCompleteQty.Text = dt.Rows[0]["OKCount"].ToString(); + lbBadQty.Text = dt.Rows[0]["BadCount"].ToString(); + } + + + + } + void ClearPage() + { + lbStation.Text = ""; + lbPlan.Text = ""; + lbPart.Text = ""; + lbPartDesc.Text = ""; + } + + private void btnPlanUp_Click(object sender, EventArgs e) + { + LoadPlanScreen(this.Tag?.ToString(), "上一计划"); + txtBarCode.Select(); + txtBarCode.Focus(); + } + + private void btnPlanDown_Click(object sender, EventArgs e) + { + LoadPlanScreen(this.Tag?.ToString(), "下一计划"); + txtBarCode.Select(); + txtBarCode.Focus(); + } + public void LoadPlanScreen(string id, string plan) + { + + DataTable dt = Function2.GetProScreenPlan(id, _stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if (plan == "下一计划") + { + MessageBox.Show("无下一计划"); + txtBarCode.SelectAll(); + txtBarCode.Focus(); + } + else + { + MessageBox.Show("无上一计划"); + txtBarCode.SelectAll(); + txtBarCode.Focus(); + } + } + txtBarCode.SelectAll(); + txtBarCode.Focus(); + } + + private void txtBarCode_KeyDown(object sender, KeyEventArgs e) + { + try + { + WriteHint("", true); + if (string.IsNullOrEmpty(this.Tag?.ToString())) + { + throw new Exception("当前没有生产计划."); + } + ScanBarCode(); + } + catch(Exception ex) + { + WriteHint(ex.Message,false); + } + } + private void ScanBarCode() + { + string barCode = txtBarCode.Text?.Trim(); + if (string.IsNullOrEmpty(barCode)) + { + throw new Exception("扫描条码为空!"); + } + if (barCode.Length != 20) + { + throw new Exception("扫描条码格式不正确,请扫描20位塑件条码!"); + } + + DataTable stockInTable = Function2.SearchStockIn(barCode); + if (stockInTable.Rows.Count == 0) + { + throw new Exception("扫描半成品码没有喷涂完工记录,无法使用."); + } + DataTable punchTable = Function2.SearchPunchCodeRecord(barCode); + if (punchTable.Rows.Count > 0) + { + if (punchTable.Rows[0]["Flag"].ToString() == "0" || punchTable.Rows[0]["Flag"].ToString() == "1") + { + throw new Exception("扫描半成品码已存在装配记录,无法使用."); + } + } + DataTable productTable = Function2.GetProductInfo(barCode.Substring(0, 10)); + if (productTable.Rows.Count == 0) + { + throw new Exception($"扫描半成品码的存货代码[{barCode.Substring(0, 10)}]在零件表找不对对应零件号,请检查系统维护."); + } + string partNo2 = productTable.Rows[0]["PartNo"].ToString(); + string partNo1 = Function2.GetAssemblePartCode(partNo2, _stationNo); + + if (lbPart.Text?.ToLower() != partNo1?.ToLower()) + { + throw new Exception($"扫描半成品码在BOM中对应的总成零件号[{partNo1}]与当前计划的零件号[{lbPart.Text}]不匹配."); + + } + DataTable bomTable = Function2.GetBomTable(partNo1, _stationNo); + + List list = bomTable.AsEnumerable().Where(p => p.Field("IsChecked") == 1).ToList(); + if (list.Count > 0) + { + //需要校验关键件 + + + + + } + else + { + SaveScanRecord(barCode,partNo1, partNo2); + } + + + + } + + private void SaveScanRecord(string barcode,string partNo1,string partNo2) + { + //保存装配记录 + //更新计划完成数量 + // + string serailNo = "0001"; + string assembleBarCode = _uniqueBll.GetPunchSerialNo(partNo1, 4,ref serailNo); + int res = Function2.SavePartAndProduct_New(barcode, partNo2, partNo1, + lbPlan.Text.Trim(), lbClass.Text, this.Tag?.ToString(), assembleBarCode, + ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3, + ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, stationId, ConfigurationManager.AppSettings["StationDescription"]); + + Function2.SaveZcCode(barcode, partNo1); + Function2.AddCompleteCount(this.Tag?.ToString()); + + PrintAssembleBarCode(assembleBarCode, partNo1, lbPartDesc.Text, serailNo); + + if (Function2.CheckPlanCompleted(this.Tag.ToString().Trim())) + { + LoadScreen(); + } + else + { + lbCompleteQty.Text = (Tools.NumericParse.StringToInt(lbCompleteQty.Text.Trim()) + 1).ToString(); + } + + } + private void PrintAssembleBarCode(string BarCode, string PartNo, string PartName, string SerialNo ) + { + string filename = GetPrintFileName(); + DataTable headTable = new DataTable(); + headTable.Columns.Add("BarCode"); + headTable.Columns.Add("PartName"); + headTable.Columns.Add("PartNo"); + headTable.Columns.Add("BatchNo"); + headTable.Columns.Add("SerialNo"); + headTable.Columns.Add("Line"); + DataRow row = headTable.NewRow(); + + row["BarCode"] = BarCode; + row["PartNo"] = PartNo; + row["PartName"] = PartName; + row["BatchNo"] = DateTime.Now.ToString("yyMMdd"); + row["SerialNo"] = SerialNo; + row["Line"] = ConfigurationManager.AppSettings["Line"]; + string printBoxName = "Printer1"; + + string reportName = ConfigurationManager.AppSettings[printBoxName].ToString(); + headTable.Rows.Add(row); + + ReportHelper rp = new ReportHelper(filename, headTable, null, (int)GRPaperOrientation.grpoLandscape, 1, reportName); + + rp.Report.Print(false); + } + string GetPrintFileName() + { + if(Program.station == "F01") + { + return System.AppDomain.CurrentDomain.BaseDirectory + "/Report/总成条码MI.grf"; + } + + return System.AppDomain.CurrentDomain.BaseDirectory + "/Report/总成条码MI.grf"; + } + + string GetSerialNo(string partNo1) + { + DateTime time = DateTime.Now; + string tmp = Function2.SerialNo(partNo1, time.ToString("yyMMdd")); + string sn = ""; + if (tmp == "") + { + sn = GetFullBarCode(partNo1, "0001"); + } + else + { + sn = tmp.Substring(0, tmp.Length - 4) + + (int.Parse(tmp.Substring(tmp.Length - 4, 4)) + 1).ToString() + .PadLeft(4, '0'); + } + return sn; + } + string GetFullBarCode(string partNo,string serialNo) + { + DateTime time = DateTime.Now; + return partNo + "." + time.ToString("yyMMdd") + ";" + serialNo + ";S104;;.1;" + time.ToString("yyyy/MM/dd") + ";"; + } + + void WriteHint(string txt,bool isOk) + { + lbHint.ForeColor = Color.LimeGreen; + if (!isOk) + { + lbHint.ForeColor = Color.Red; + } + lbHint.Text = txt; + } + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + try + { + lbPartDesc.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + catch (Exception ex) + { + + } + } + } +} diff --git a/PunchingMistake/FrmAssemble.resx b/PunchingMistake/FrmAssemble.resx new file mode 100644 index 0000000..e335a71 --- /dev/null +++ b/PunchingMistake/FrmAssemble.resx @@ -0,0 +1,1039 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + G1udAAAAAElFTkSuQmCC + + + + + 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 + gg== + + + + + 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 + gg== + + + + + iVBORw0KGgoAAAANSUhEUgAAATcAAACSCAIAAACv5hqMAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAZ + 1gAAGdYBGNHK7QAADitJREFUeF7t3YlTE3nex/H8Bztyi6gcCenudNJn+kgfSecmCRACAcKNyqiIqKiD + 4DjPjLPP7D7z7D7rMY474+gez1haW/tHbnWCVyIjjIA/h0/VqyyqMalQ5dsODf39ejq5RLc25ItNUck5 + On2KzlZlftkinV6k0gv+xExfdLI7Uurkkm2M3dKvN3kVV18Y4BBq9qmt/kh7INolZXuMUV+s4k/OUekF + N5kdqfZVDZBKzfc70z3G6DEh5ekS0oHhVX31obbyQF/5Xr+4MysPtJUH2oXvwkt/8ueXWymj2ac2vmiA + Q6XZp7VSZnsg6k3My6f/R71wX1v5rlrWzrzq6/taj8Lc7RPSgOeEPMBNbkZv/dveeG7thrn+VFm+3+PM + trHOkR7pV+qVm3rlxq8W4GPU0q+101YHG6VyZyNrj+3N59ZmfTg7F735L/XCd93KoKdbG+QrN+2NZ9b6 + z7uirTzoi061+dQ2r/KeWrxKc8MXDPDRafZpbbTVEYj6s0vapR8aq9mlp+r5u72REU9PpChMfW5vPDM/ + +2fk8o/6RfdUqy3fV5fvq+fvbUdZ+jMbn/FzcX8o9v76g9EuKtLUeKb9GDT1SC194TavcrRfO+bXj1OR + 41TkJG28wpgnaOOYX+/wqS194cZngN+IXrnJq7T4I22M3efMiPO/D3/6f8q5v6jn7+zYXW35vn7hQeTi + Q/P632uV9pljnl6jJEzfciu9+jf99B+Uic/ksTWxeJEfusANnn+7wrmAPe7n9ybRmv5g9DgVaW84zb6n + Dp9aK6ebMXsC1hsY01V3sHa87oO3/eXegNXH2l7W9gWj/cFo41fUqD8U6wtYXX698XXCb0C7V+3o1ztp + 8zgb6wnn/dFJJjkfyJwKDiyFcmffLX+WHzwvFVfDY1e16VvmlUfW+lNt+Z7XHvf0GSVx5gv3He/VJ/bi + bXNsNTJ8ThlYlNNzcnr2rcR4hRaSjf8KAQ45iovTQpKRs6xWCBkjvF0WnYqYmJaTM3LqnWbDmQWtsGSO + rNjTm9ZWpfd9bqXm6MtKrYWvIsVlJXdaSkwLsQk+Vm7E2aOB8EDj6wMAP+dQfIKW0gFlIKgNcpEiZ47y + 9hgfLb+TEC2L8Uo4Mx8ZOmdV1q0rP25VGp14o1Jj9gutsCQlZ3i7HIwMs/pgIyacpTin/sUBgMuh+Lgb + qpgKyNmAkmfVPKsVGjtqFIwMcVZJTFSU3CmjfNW6/MOLc+mEp88YFaerla49MaY/V7ILgjMR1IeZ8AAj + Zxg5XYfa029HAX5bHIpzKC5OcQlaSNJiipbqC9pehtUKvD0qp2b10iXTvUT88h2vW6l79chaexKZ2pBT + s5w1GlBylJCk+ET1P4bX4CwK8A5OzYtc3yzoFwgJRs5yxrAUn9JGVsxLf61dPfLZ5dcrfaxXbsjJKc4Y + YeTMXv2UBQB2hHNoMR3Sh0Rn0q10tVbpXW9jpZJbaZGRMn6cNgEOFi2mg7VKi6gUgEi1SgVUCkAsVApA + OlQKQDpUCkA6VApAOlQKQDpUCkA6VApAOlQKQDpUCkA6VApAum0rfTn3yK108oaUQKUAH8b2lUZGtmYI + rj3WJtfFRCVUq9S9R67+WQBg/2xbaY82xFc2tyqduC46E6HIICOmUSnAAdu20pNKITSxUa30J7V8TYiV + g/ogLaZQKcABo8VUrVL1RaVqrdIT0kBofN3efG6u/aSMXeGsUVYrVCutfwoA2Fe0UK00NqEWL7yq1Cp7 + uvhUqHw9+vm/zLUncukyZxRZJcdg3C58LDhnS+OnPjZupVpBiJXVoWVz9eGL2fajnk4u4Y1NB0prXPGy + kJoNaoOBcJbmE41PAQD7ihaSrJbno2NK4ZxRrVSp7YlpZ2NHg047Y/UJyaBWCIQHaClNoVKAA0fziYCS + 46xSOL9krH5v3XiqnL/TrQ15qiuiYu2BaK+QYpUcLWUoIYEBggAHz600PBCKFKWB0+bqQ3vjmXL+zgk5 + 53FXRFFmi9/oDjmMlKbdMbxxXOAFOHgUHw+4O2YGhdS8vnzXvPYP+fS3x4W0x91e3K83ebUTjE3XxmS7 + 34ijUoCDRnFxRkyzSp41RnzRijc512NPdIaSniav0uRTP+kNd1EG5b7RRaLwYWBzAsU5tJAMyFkmPHCM + dTpDTgcb6wjEPLUdxr/rkbr8EfQJHw5OD7U1M3FGTPmldGcgejQYa2fsNsp8WanY5dcbHgMAB6m6XYZP + 9POJDspoo41Wv9HSr6NSAHLUdkA5vpDT1q+3uLRmn4ZKAchChRxfMNbiVZu2KKgUgDheNtpSDbMGlQIQ + x8vaLb2olBBCys/hlzGhHiolhpDxG1N+MVt/HA49VEqM8JBfG60/CIBKScE5filXfxCgCpWSgcd99rAt + VApAOlQKQDpUCkA6VApAOlQKQDpUCkA6VPqh4BZn2ClUCkA6VApAOlQKQDpUCkA6VApAOlQKQDpUCkA6 + VApAOlQKQDpUCkA6VApAOlRKGCHtj0z6xUz9cTjEUClhMEkQGhBWKRcPSKlQOE3zh/KWEUwShLchrNLq + ZtWaxk/99mGSILwNcZUCQB1UCkA6VApAOlQKQDpUCkA6VApAOlQKQDpUCkA6VApAOlQKQDpUCkA6VApA + OlQKQDpUCkA6VApAOlQKQDpUCkA6VApAOlQKQDpUCgdFSPm5RP1B2AFUCgdCyPiNKb+YrT8OO4BK4UBg + zvB7QKWw/zBn+P2gUth/mDP8flApAOlQKQDpUCkA6VApAOlQKQDpUCkA6VAp7IdDudhy36BSANKhUgDS + oVIA0qFSANI1VOpVmrzK73qlLipCudcAauofBgAHpr7SZp/a3K990hc+Tps0n6A4h+IQKsCHVF9pS7/W + 6o80+/STrM2ISYqPo1KAD6u+0la/0c7YrbTVw8UDcoYWUxSfQKUAH5CXjbb0Ka8qbWfso0GnnY31iumg + mmfkDC0kKS7e+EgAOABUyPEFYy1etWmL4ukIOl1i5ric79eLnDHCKjlGylRPp/UPBoD9Vr0wFPeFnDaf + 1tKvN/drzT7N08kl/dkz0uIf5NkvxeypoFYIhLM0KoW9gkmCu+AmSvGJfj7RQRlttNlKGa3+iKeLTwXH + rtsbz4zLj+TiaigyzCo5WsBEDNgLmCS4O26ltJjyi+nOQKyDjbYx0Tba9JyQB0ITN+zN5+aVR0rpMm+W + WDWPSmFvYJLgbrgnUiEZCGdoeaCLdTpDsQ421s5GPSeVQW5y0954Zl75SR1bE6LloD7IiKnGpwDYHUwS + 3CWKjzNSmlVzbGTEa09449PdZvkol/D06MN85eZWpeVrQmwiFBlixDR+GAPvC5MEd4nmEwE5G9SHhPS8 + +umfIpcfiYvfdAlpT29kRJi+5Va69pM2cV2MT4aMYVQKcPBoPsGGcyGjKOXOGKsP7Y1nyrk7J+Wcp9co + vaj0sTb5mZiohIwiKgU4eLSQDKh5zh6VC2eN1YfWjafKuTvd6pCn741K16XElFuplHG/qWh4FgDYP7SQ + ZNW8EC0rQ8vG6l/dSs/f7YmUUCkAKWghFdQKQnRcLV4wL/1grT9Vz9/tM8dQKQApaDEV1AZFZ1IbubhV + 6fI9r11GpQCkoMV0UB8S426lVrVSbfmezx5HpQCkQKUApEOlAKRDpQD7jIu7Go/vGCoF2E97cfcPKgXY + T3tx9w8qBdg3e3T3DyoF2Dd7dPcPKgUgHSoFIB0qBSAdKgUgnfvb9qgUgGDOTiuVk1OcOcKEs+7gbM7Z + EWxqA/gl1Toaw3kTxSUYKROKFKVERSut1lcqvqhUr9wIp2Z5e4xVC4yUZsTUTtBC0uXua4u/iLbxhQIc + Nu76QoqPbwXSEE6DNKvkeGtUTs3oo5esy29UOirOfGFvPLPWHhvTN5WBU2Jiyl1FoRZYNb8jSi4QzjLS + 1iao6o4ZhAqH3NaUelpKB+RsIJxjlVx9OPUKIaMoOpNKdjEyftW68mO10vs+e+K1Sq8+Mef+Sx86F87M + i/FJ3h7lrNK7maWQUXQn4quFgJylxTQtuEtQG140wGHCOZSQYKR0QMmx2mAoMsyZI5xZ4qzR7fDWmOBM + yulZbeisWVm3rjzaqjTqVlp6Wam98JU5sqIVlsLpOSkxJcUr4js5FSE2wVtjIaPIqnkmnH2xsg2hwqFV + WySRDIQHgtogZ44I9pgYm5DiFVdiahvT4fSslj9tjFywpzdfq3T81aRP6+qT6OJte+xypHhByy+pA4tq + duGdlMy8nJ6VEhUhWg5FhgNKnnHf96JSOMwcincvBbFqnrNKYnxSTs2GswvqwCk1d3pb+TP64KfGyIo1 + fiU6d+tFpfe89nh1avZUtdJr/7BX7luffmud+aNx6htj8ffG4tfvFFm4rc/f1ue+VCubYv6su1hRri1W + RKVwaLmVulPqtYI0vKLPf6UvfB059d+G65tfcuaP1tK39rn/tS/cta79rTqd7K7XKnu6tSGh8rlb6frP + 1mf/X/XP3bnu/mmuPVanbgXdK0kDjPumF5XCIUVxDiOmWGUgpBe0ha/t9af1yWzrtQDXf65N+uw1Sp6T + 4Xxtm1P1qPsJ68avYVz9u1C5eTLkHGedY5TZ2a8f9akAh4921Kcfo8wTQaebT0pzX9ubzxt72dZ6TTXG + 2tRsbdjTJWRC5XX3ibYq/ZWMtSfB8RvtjNVCm01e7Uhv+JMeGeAQOtIbbvLprbTVwcb4mS9fOwXukruB + 4i8n5Ly7C9wbmwoUV4OlK9zYVa583TV2zf14B0KjV4OlK+zwKp0/12NPdrCxVspo9mlNXuVIrwxw+ISP + 9IWbfVorbXYE433ODDO0whYvbfXlura9665qgKHRNbZ4yZ853SVm/gN9iwrbYsZe7QAAAABJRU5ErkJg + gg== + + + + + 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 + gg== + + + + + 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 + gg== + + + \ No newline at end of file diff --git a/PunchingMistake/FrmLogin.Designer.cs b/PunchingMistake/FrmLogin.Designer.cs new file mode 100644 index 0000000..e29579a --- /dev/null +++ b/PunchingMistake/FrmLogin.Designer.cs @@ -0,0 +1,172 @@ +namespace PunchingMistake +{ + partial class FrmLogin + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLogin)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.lbtip = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BackColor = System.Drawing.Color.White; + this.label1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(396, 340); + this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(117, 34); + this.label1.TabIndex = 0; + this.label1.Text = "用户名"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.BackColor = System.Drawing.Color.White; + this.label2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(396, 432); + this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(83, 34); + this.label2.TabIndex = 1; + this.label2.Text = "密码"; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(543, 324); + this.textBox1.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(288, 45); + this.textBox1.TabIndex = 2; + this.textBox1.Click += new System.EventHandler(this.textBox1_Click); + // + // textBox2 + // + this.textBox2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(543, 432); + this.textBox2.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); + this.textBox2.Name = "textBox2"; + this.textBox2.PasswordChar = '*'; + this.textBox2.Size = new System.Drawing.Size(288, 45); + this.textBox2.TabIndex = 3; + this.textBox2.Click += new System.EventHandler(this.textBox2_Click); + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.LightSkyBlue; + this.button1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(424, 536); + this.button1.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(154, 66); + this.button1.TabIndex = 4; + this.button1.Text = "登录"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // button2 + // + this.button2.BackColor = System.Drawing.Color.LightSkyBlue; + this.button2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button2.Location = new System.Drawing.Point(710, 536); + this.button2.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(152, 66); + this.button2.TabIndex = 5; + this.button2.Text = "取消"; + this.button2.UseVisualStyleBackColor = false; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // pictureBox1 + // + this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(0, 0); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(1289, 793); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 6; + this.pictureBox1.TabStop = false; + // + // lbtip + // + this.lbtip.AutoSize = true; + this.lbtip.BackColor = System.Drawing.Color.White; + this.lbtip.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbtip.ForeColor = System.Drawing.Color.Red; + this.lbtip.Location = new System.Drawing.Point(387, 494); + this.lbtip.Name = "lbtip"; + this.lbtip.Size = new System.Drawing.Size(58, 21); + this.lbtip.TabIndex = 7; + this.lbtip.Text = " "; + // + // FrmLogin + // + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 21F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1289, 793); + this.Controls.Add(this.lbtip); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.button1); + this.Controls.Add(this.button2); + this.Controls.Add(this.label1); + this.Controls.Add(this.pictureBox1); + this.Margin = new System.Windows.Forms.Padding(6, 5, 6, 5); + this.Name = "FrmLogin"; + this.Text = "登录"; + this.Load += new System.EventHandler(this.FrmLogin_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label lbtip; + } +} \ No newline at end of file diff --git a/PunchingMistake/FrmLogin.cs b/PunchingMistake/FrmLogin.cs new file mode 100644 index 0000000..5445fd8 --- /dev/null +++ b/PunchingMistake/FrmLogin.cs @@ -0,0 +1,212 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Configuration; +using System.Data.SqlClient; +using System.Diagnostics; +using System.Reflection; +using System.Runtime.InteropServices; +using MESClassLibrary.BLL.BasicInfo; +using MESClassLibrary.Model; +using MESClassLibrary.BLL.Log; + +namespace PunchingMistake +{ + public partial class FrmLogin : Form + { + private string _defualtPage = string.Empty; + public Action LoginAction = null; + public FrmLogin() + { + InitializeComponent(); + this.StartPosition = FormStartPosition.CenterScreen; + Program.station = ConfigurationManager.AppSettings["Station"].ToString(); + LoginAction = Login; + } + public void RegisterLoginMethod(Action outLogin) + { + LoginAction = outLogin; + } + + + private void button1_Click(object sender, EventArgs e) + { + try + { + lbtip.Text = ""; + _defualtPage = ConfigurationManager.AppSettings["DefualtPage"]?.ToString(); + + OpenDb(); + + #region 判断输入合法性 + if (textBox1.Text.Trim() == "") + { + MessageBox.Show("用户名不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.Focus(); + return; + } + + if (textBox2.Text.Trim() == "") + { + MessageBox.Show("密码不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + textBox1.Focus(); + return; + } + #endregion + LoginAction(textBox1.Text.Trim(), textBox2.Text.Trim()); + } + catch (Exception ex) + { + LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod()); + } + } + void Login(string name,string pass) + { + string stationID = ""; + StationBLL sbll = new StationBLL(); + DataTable sdt = sbll.SearchInfoByNo(Program.station); + if (sdt != null && sdt.Rows.Count > 0) + { + stationID = sdt.Rows[0]["StationID"].ToString(); + } + sdt.Dispose(); + + + OperatorBLL bll = new OperatorBLL(); + if (string.IsNullOrEmpty(stationID)) + { + lbtip.Text = "配置工位" + Program.station + "在系统中不存在."; + return; + } + + + DataTable dt = bll.SearchInfoByNameAndPsw(name, stationID, pass); + if (dt != null && dt.Rows.Count > 0) + { + this.Visible = false; + Program.UserName = textBox1.Text.Trim(); + //Form fr = new FrmQualityNew(); + Form fr = new FrmAssemble(); + fr.Show(); + + } + else + { + //f7ce2efa-13ac-4daa-8c7e-8f6287889411 + lbtip.Text = "用户名或者密码错误"; + } + } + private bool OpenDb() + { + bool OpenDb = false; + + string value = ConfigurationManager.ConnectionStrings["SqlConnString"].ToString(); + Program.DBConn = new SqlConnection(value); + if (Program.DBConn.State.ToString().ToUpper() == "OPEN") Program.DBConn.Close(); + try + { + Program.DBConn.Open(); + } + catch (Exception Err) + { + if (Err != null) + { + MessageBox.Show("数据库连接失败,请检查网络连接,并重新连接!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return OpenDb; + } + } + + OpenDb = true; + return OpenDb; + } + + private void button2_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void textBox1_Click(object sender, EventArgs e) + { + ShowInputPanel(); + } + + private const Int32 WM_SYSCOMMAND = 274; + + private const UInt32 SC_CLOSE = 61536; + + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] + + private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam); + + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] + + private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam); + + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] + + private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); + + [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] + + private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); + + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] + + private static extern int RegisterWindowMessage(string lpString); + + + + //显示屏幕键盘 + + public static int ShowInputPanel() + { + + try + { + + dynamic file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe"; + + if (!System.IO.File.Exists(file)) + + return -1; + + Process.Start(file); + + //return SetUnDock(); //不知SetUnDock()是什么,所以直接注释返回1 + + return 1; + + } + + catch (Exception) + { + + return 255; + + } + + } + + private void textBox2_Click(object sender, EventArgs e) + { + ShowInputPanel(); + } + + private void FrmLogin_Load(object sender, EventArgs e) + { + //var serverUrl = "http://10.60.101.59:8013/"; + //var updateXmlFileName = "InjectionUpdate.xml"; + //var updater = new AutoUpdater(); + //if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName)) + //{ + // Environment.Exit(0); + //} + + } + } +} diff --git a/PunchingMistake/FrmLogin.resx b/PunchingMistake/FrmLogin.resx new file mode 100644 index 0000000..a86c620 --- /dev/null +++ b/PunchingMistake/FrmLogin.resx @@ -0,0 +1,713 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + kBBCCCGOj7q+U+1lsNWBhBBCCHF81PWdai+DrQ4khBBCiOOjru9UexlsdSAhhBBCHB91fafay2CrAwkh + hBDi+KjrO9VeBlsdSAghhBDHR13fqfYy2OpAQgghhDg+6vpOtZfBVgcSQgghxPFR13eqvQy2OpAQQggh + jo+6vlPtZbDVgYQQQghxfNT1nWovg60OJIQQQojjo67vVHsZbHWg2WRU/9sghBBCiANhs1p/Ut+p9jLY + 6sDqihL1vw9CCCGEOBC11RU/qe9UexlsdWB2Spz63wchhBBCHIjs1Lif1HeqvQy2OjDQ47L63wchhBBC + HAip5er6TrWXwVYHuh5ai7qaKvW/EUIIIYQ4APW1VXA9tO4n9Z1qL4OtTvR3c1X/OyGEEEKIAyA1XF3X + 6W8jg62OTAj3U/9bIYQQQoiOkdqtruf0t5PBVke6HFiDJ9HB6n8zhBBCCNEhyTHBSu1W13P628lgq0P9 + 7rmgurJM/e+HEEIIITpAarSfm8tP6jf97WWw1alyQ5ncYSnrQ2qrKmCzWdX/rgghhBCiAVKDpRZLTZba + LDVaXbepPmSwpZRSSimlTUIGW0oppZRS2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSiml + lFLaJGSwpZRSSimlTUIGW0oppZRS2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLa + JGSwpZRSSimlTUIGW0oppZRS2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLaJGSw + pZRSSimlTUIGW0oppZRS2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLaJGSwpZRS + SimlTUIGW0oppZRS2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLaJGSwpZRSSiml + TUIGW0oppZRS2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLaJGSwpZRSSimlTUIG + W0oppZRS2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLaJGSwpZRSSimlTUIGW0op + pZRS2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLaJGSwpZRSSimlTUIGW0oppZRS + 2iRksKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLaJGSwpZRSSimlTUIGW0oppZRS2iRk + sKWUUkoppU1CBltKKaWUUtokZLCllFJKKaVNQgZbSimllFLaJGSwpZRSSimlTUIGW0oppZRS2iRksKWU + UkoppU1CBltKKaWUUtok/P8BNUIVxOz+k4sAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/PunchingMistake/FrmProScreen3.Designer.cs b/PunchingMistake/FrmProScreen3.Designer.cs new file mode 100644 index 0000000..b70d7fb --- /dev/null +++ b/PunchingMistake/FrmProScreen3.Designer.cs @@ -0,0 +1,287 @@ +namespace PunchingMistake +{ + partial class FrmProScreen3 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.textBox5 = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.textBox6 = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // label1 + // + this.label1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(12, 43); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(180, 40); + this.label1.TabIndex = 0; + this.label1.Text = "关键零件号1:"; + // + // textBox1 + // + this.textBox1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox1.Location = new System.Drawing.Point(403, 40); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(486, 43); + this.textBox1.TabIndex = 1; + this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown); + // + // textBox2 + // + this.textBox2.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox2.Location = new System.Drawing.Point(403, 111); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(486, 43); + this.textBox2.TabIndex = 3; + this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown); + // + // label2 + // + this.label2.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(12, 114); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(180, 40); + this.label2.TabIndex = 2; + this.label2.Text = "关键零件号2:"; + // + // textBox3 + // + this.textBox3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox3.Location = new System.Drawing.Point(403, 186); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(486, 43); + this.textBox3.TabIndex = 5; + this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown); + // + // label3 + // + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label3.Location = new System.Drawing.Point(12, 189); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(180, 40); + this.label3.TabIndex = 4; + this.label3.Text = "关键零件号3:"; + // + // button1 + // + this.button1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128))))); + this.button1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button1.Location = new System.Drawing.Point(742, 470); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(147, 55); + this.button1.TabIndex = 6; + this.button1.Text = "关闭"; + this.button1.UseVisualStyleBackColor = false; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label4.Location = new System.Drawing.Point(184, 46); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(92, 35); + this.label4.TabIndex = 7; + this.label4.Text = "label4"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label5.Location = new System.Drawing.Point(184, 119); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(92, 35); + this.label5.TabIndex = 8; + this.label5.Text = "label5"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label6.Location = new System.Drawing.Point(184, 194); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(92, 35); + this.label6.TabIndex = 9; + this.label6.Text = "label6"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label7.Location = new System.Drawing.Point(184, 267); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(92, 35); + this.label7.TabIndex = 12; + this.label7.Text = "label7"; + // + // textBox4 + // + this.textBox4.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox4.Location = new System.Drawing.Point(403, 259); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(486, 43); + this.textBox4.TabIndex = 11; + this.textBox4.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox4_KeyDown); + // + // label8 + // + this.label8.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label8.Location = new System.Drawing.Point(12, 262); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(180, 40); + this.label8.TabIndex = 10; + this.label8.Text = "关键零件号4:"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label9.Location = new System.Drawing.Point(184, 341); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(92, 35); + this.label9.TabIndex = 15; + this.label9.Text = "label9"; + // + // textBox5 + // + this.textBox5.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox5.Location = new System.Drawing.Point(403, 333); + this.textBox5.Name = "textBox5"; + this.textBox5.Size = new System.Drawing.Size(486, 43); + this.textBox5.TabIndex = 14; + this.textBox5.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox5_KeyDown); + // + // label10 + // + this.label10.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label10.Location = new System.Drawing.Point(12, 336); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(180, 40); + this.label10.TabIndex = 13; + this.label10.Text = "关键零件号5:"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label11.Location = new System.Drawing.Point(184, 418); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(108, 35); + this.label11.TabIndex = 18; + this.label11.Text = "label11"; + // + // textBox6 + // + this.textBox6.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.textBox6.Location = new System.Drawing.Point(403, 410); + this.textBox6.Name = "textBox6"; + this.textBox6.Size = new System.Drawing.Size(486, 43); + this.textBox6.TabIndex = 17; + this.textBox6.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox6_KeyDown); + // + // label12 + // + this.label12.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label12.Location = new System.Drawing.Point(12, 413); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(180, 40); + this.label12.TabIndex = 16; + this.label12.Text = "关键零件号6:"; + // + // FrmProScreen3 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(917, 543); + this.Controls.Add(this.label11); + this.Controls.Add(this.textBox6); + this.Controls.Add(this.label12); + this.Controls.Add(this.label9); + this.Controls.Add(this.textBox5); + this.Controls.Add(this.label10); + this.Controls.Add(this.label7); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.label8); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Name = "FrmProScreen3"; + this.Text = " "; + this.Load += new System.EventHandler(this.FrmProScreen3_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox textBox5; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox textBox6; + private System.Windows.Forms.Label label12; + } +} \ No newline at end of file diff --git a/PunchingMistake/FrmProScreen3.cs b/PunchingMistake/FrmProScreen3.cs new file mode 100644 index 0000000..2bbf77a --- /dev/null +++ b/PunchingMistake/FrmProScreen3.cs @@ -0,0 +1,710 @@ +//using PunchAndWeld.DataSouce; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace PunchingMistake +{ + public partial class FrmProScreen3 : Form + { + OtherPart parts = new OtherPart(); + private static string productID3 = "", productID4 = "", productID5 = "", productID6 = "", productID7 = "", productID8 = ""; + int[] isCheck = new int[6] { 0, 0, 0, 0, 0, 0 }; + + private List _needScanRows = new List(); + public FrmProScreen3(List needScanRows) + { + InitializeComponent(); + this._needScanRows = needScanRows; + } + + public FrmProScreen3(OtherPart part) + { + InitializeComponent(); + parts = part; + } + + private void FrmProScreen3_Load(object sender, EventArgs e) + { + textBox1.Text = ""; + textBox2.Text = ""; + textBox3.Text = ""; + textBox4.Text = ""; + textBox5.Text = ""; + textBox6.Text = ""; + textBox1.Enabled = false; + textBox2.Enabled = false; + textBox3.Enabled = false; + textBox4.Enabled = false; + textBox5.Enabled = false; + textBox6.Enabled = false; + label4.Text = ""; + label5.Text = ""; + label6.Text = ""; + label7.Text = ""; + label9.Text = ""; + label11.Text = ""; + int[] isCheck = new int[6] { 0, 0, 0, 0, 0, 0 }; + + if (_needScanRows.Count > 0) + { + label4.Text = _needScanRows[0]["PartNo2"].ToString(); + textBox1.Enabled = true; + textBox1.Focus(); + } + if (_needScanRows.Count > 1) + { + label5.Text = _needScanRows[1]["PartNo2"].ToString(); + textBox2.Enabled = true; + textBox2.Focus(); + } + if (_needScanRows.Count > 2) + { + label6.Text = _needScanRows[2]["PartNo2"].ToString(); + textBox3.Enabled = true; + textBox3.Focus(); + } + if (_needScanRows.Count > 3) + { + label7.Text = _needScanRows[3]["PartNo2"].ToString(); + textBox4.Enabled = true; + textBox4.Focus(); + } + if (_needScanRows.Count > 4) + { + label9.Text = _needScanRows[4]["PartNo2"].ToString(); + textBox5.Enabled = true; + textBox5.Focus(); + } + if (_needScanRows.Count > 5) + { + label11.Text = _needScanRows[5]["PartNo2"].ToString(); + textBox6.Enabled = true; + textBox6.Focus(); + } + + } + + private void textBox1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox1.Text.Trim(); + + productID3 = Function2.GetProductID(barcode); + if (parts.productID3 == productID3) + { + isCheck[0] = 1; + if (textBox2.Enabled) + { + textBox2.Text = ""; + textBox2.Focus(); + } + else if (textBox3.Enabled) + { + textBox3.Text = ""; + textBox3.Focus(); + } + else if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[1] = 1; + isCheck[2] = 1; + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = Function2.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = ""; + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = ""; + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ""; + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ""; + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox1.Text = ""; + } + } + } + + private void textBox2_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox2.Text.Trim(); + productID4 = Function2.GetProductID(barcode); + if (parts.productID4 == productID4) + { + isCheck[1] = 1; + + if (textBox3.Enabled) + { + textBox3.Text = ""; + textBox3.Focus(); + } + else if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[2] = 1; + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox2.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号54未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = Function2.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = Function2.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = ""; + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ""; + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ""; + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox2.Text = ""; + } + } + } + + private void textBox3_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox3.Text.Trim(); + productID5 = Function2.GetProductID(barcode); + if (parts.productID5 == productID5) + { + isCheck[2] = 1; + + if (textBox4.Enabled) + { + textBox4.Text = ""; + textBox4.Focus(); + } + else if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[3] = 1; + isCheck[4] = 1; + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox3.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox3.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = Function2.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = Function2.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = Function2.GetPartNoByID(productID5); + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = ""; + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ""; + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox3.Text = ""; + } + } + } + + private void button1_Click(object sender, EventArgs e) + { + ScanAll.ScanResult = false; + this.Close(); + } + + private void textBox4_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox4.Text.Trim(); + productID6 = Function2.GetProductID(barcode); + if (parts.productID6 == productID6) + { + isCheck[3] = 1; + + if (textBox5.Enabled) + { + textBox5.Text = ""; + textBox5.Focus(); + } + else if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[4] = 1; + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox4.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox4.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox4.Text = ""; + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = Function2.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = Function2.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = Function2.GetPartNoByID(productID5); + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = Function2.GetPartNoByID(productID6); + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = ""; + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox4.Text = ""; + } + } + } + + private void textBox5_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox5.Text.Trim(); + productID7 = Function2.GetProductID(barcode); + if (parts.productID7 == productID7) + { + isCheck[4] = 1; + + if (textBox6.Enabled) + { + textBox6.Text = ""; + textBox6.Focus(); + } + else + { + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox5.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox5.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox5.Text = ""; + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = Function2.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = Function2.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = Function2.GetPartNoByID(productID5); + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = Function2.GetPartNoByID(productID6); + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = Function2.GetPartNoByID(productID7); + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = ""; + this.Close(); + } + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox4.Text = ""; + } + } + } + + private void textBox6_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + string barcode = textBox6.Text.Trim(); + productID8 = Function2.GetProductID(barcode); + if (parts.productID8 == productID8) + { + isCheck[5] = 1; + + #region 判断关键零件是否都校验 + + if (isCheck[0] == 0) + { + MessageBox.Show("关键零件号1未校验!"); + textBox6.Text = ""; + textBox1.SelectAll(); + textBox1.Focus(); + return; + } + if (isCheck[1] == 0) + { + MessageBox.Show("关键零件号2未校验!"); + textBox6.Text = ""; + textBox2.SelectAll(); + textBox2.Focus(); + return; + } + if (isCheck[2] == 0) + { + MessageBox.Show("关键零件号3未校验!"); + textBox6.Text = ""; + textBox3.SelectAll(); + textBox3.Focus(); + return; + } + if (isCheck[3] == 0) + { + MessageBox.Show("关键零件号4未校验!"); + textBox6.Text = ""; + textBox4.SelectAll(); + textBox4.Focus(); + return; + } + if (isCheck[4] == 0) + { + MessageBox.Show("关键零件号5未校验!"); + textBox6.Text = ""; + textBox5.SelectAll(); + textBox5.Focus(); + return; + } + if (isCheck[5] == 0) + { + MessageBox.Show("关键零件号6未校验!"); + textBox6.SelectAll(); + textBox6.Focus(); + return; + } + + #endregion + + ScanAll.ScanResult = true; + ScanAll.barCode1 = textBox1.Text.Trim(); + ScanAll.partNo1 = Function2.GetPartNoByID(productID3); + ScanAll.barCode2 = textBox2.Text.Trim(); + ScanAll.partNo2 = Function2.GetPartNoByID(productID4); + ScanAll.barCode3 = textBox3.Text.Trim(); + ScanAll.partNo3 = Function2.GetPartNoByID(productID5); + + ScanAll.barCode4 = textBox4.Text.Trim(); + ScanAll.partNo4 = Function2.GetPartNoByID(productID6); + ScanAll.barCode5 = textBox5.Text.Trim(); + ScanAll.partNo5 = Function2.GetPartNoByID(productID7); + ScanAll.barCode6 = textBox6.Text.Trim(); + ScanAll.partNo6 = Function2.GetPartNoByID(productID8); + this.Close(); + } + else + { + MessageBox.Show("扫入条码与总成不匹配,请检查后再次扫描"); + textBox4.Text = ""; + } + } + } + } +} diff --git a/PunchingMistake/FrmProScreen3.resx b/PunchingMistake/FrmProScreen3.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/PunchingMistake/FrmProScreen3.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/PunchingMistake/FrmQualityNew.Designer.cs b/PunchingMistake/FrmQualityNew.Designer.cs new file mode 100644 index 0000000..f7529ee --- /dev/null +++ b/PunchingMistake/FrmQualityNew.Designer.cs @@ -0,0 +1,656 @@ +namespace PunchingMistake +{ + partial class FrmQualityNew + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + try + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + catch + { + + } + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmQualityNew)); + this.labTime = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.labTitle = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.label15 = new System.Windows.Forms.Label(); + this.labProductInfo = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.txtBarCode = new System.Windows.Forms.TextBox(); + this.labProPosition = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.button4 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + this.btnPlanDown = new System.Windows.Forms.Button(); + this.btnPlanUp = new System.Windows.Forms.Button(); + this.btnOk = new System.Windows.Forms.Button(); + this.btnRepair = new System.Windows.Forms.Button(); + this.btnNok = new System.Windows.Forms.Button(); + this.btnAbt = new System.Windows.Forms.Button(); + this.lableFP = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.lbProductName = new System.Windows.Forms.Label(); + this.lbProductCode = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.lbPlanCode = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.lbPlanQty = new System.Windows.Forms.Label(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.lbPlanCompleteQty = new System.Windows.Forms.Label(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.lbOkCount = new System.Windows.Forms.Label(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.lbRepairCount = new System.Windows.Forms.Label(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.lbBadCount = new System.Windows.Forms.Label(); + this.lbForeig = new System.Windows.Forms.Label(); + this.labWorkClass = new System.Windows.Forms.Label(); + this.labStation = new System.Windows.Forms.Label(); + this.labelVersion = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.panel1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.groupBox6.SuspendLayout(); + this.SuspendLayout(); + // + // labTime + // + this.labTime.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labTime.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labTime.Location = new System.Drawing.Point(1867, 17); + this.labTime.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.labTime.Name = "labTime"; + this.labTime.Size = new System.Drawing.Size(457, 146); + this.labTime.TabIndex = 18; + this.labTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.labTime.Click += new System.EventHandler(this.labTime_Click); + // + // pictureBox1 + // + this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(22, 17); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(291, 146); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 17; + this.pictureBox1.TabStop = false; + // + // labTitle + // + this.labTitle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labTitle.Font = new System.Drawing.Font("宋体", 48F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labTitle.Location = new System.Drawing.Point(296, 17); + this.labTitle.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.labTitle.Name = "labTitle"; + this.labTitle.Size = new System.Drawing.Size(1576, 146); + this.labTitle.TabIndex = 16; + this.labTitle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel2 + // + this.panel2.Location = new System.Drawing.Point(18, 870); + this.panel2.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1829, 578); + this.panel2.TabIndex = 48; + // + // pictureBox2 + // + this.pictureBox2.Location = new System.Drawing.Point(18, 352); + this.pictureBox2.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(1829, 509); + this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox2.TabIndex = 47; + this.pictureBox2.TabStop = false; + // + // label15 + // + this.label15.BackColor = System.Drawing.Color.Lime; + this.label15.Font = new System.Drawing.Font("黑体", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label15.Location = new System.Drawing.Point(21, 163); + this.label15.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(292, 130); + this.label15.TabIndex = 49; + this.label15.Text = "扫码信息"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // labProductInfo + // + this.labProductInfo.BackColor = System.Drawing.Color.White; + this.labProductInfo.Font = new System.Drawing.Font("黑体", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labProductInfo.Location = new System.Drawing.Point(1407, 163); + this.labProductInfo.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.labProductInfo.Name = "labProductInfo"; + this.labProductInfo.Size = new System.Drawing.Size(917, 130); + this.labProductInfo.TabIndex = 52; + this.labProductInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.Lime; + this.label2.Font = new System.Drawing.Font("黑体", 20F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(1106, 163); + this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(292, 130); + this.label2.TabIndex = 51; + this.label2.Text = "产品信息"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // txtBarCode + // + this.txtBarCode.BackColor = System.Drawing.Color.White; + this.txtBarCode.Font = new System.Drawing.Font("黑体", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.txtBarCode.Location = new System.Drawing.Point(325, 184); + this.txtBarCode.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.txtBarCode.Name = "txtBarCode"; + this.txtBarCode.Size = new System.Drawing.Size(764, 87); + this.txtBarCode.TabIndex = 0; + this.txtBarCode.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtBarCode.DoubleClick += new System.EventHandler(this.txtBarCode_DoubleClick); + this.txtBarCode.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtBarCode_KeyDown); + // + // labProPosition + // + this.labProPosition.BackColor = System.Drawing.Color.White; + this.labProPosition.Font = new System.Drawing.Font("黑体", 22F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labProPosition.Location = new System.Drawing.Point(1870, 315); + this.labProPosition.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.labProPosition.Name = "labProPosition"; + this.labProPosition.Size = new System.Drawing.Size(465, 151); + this.labProPosition.TabIndex = 64; + this.labProPosition.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // panel1 + // + this.panel1.AutoScroll = true; + this.panel1.Controls.Add(this.button4); + this.panel1.Controls.Add(this.button3); + this.panel1.Controls.Add(this.btnPlanDown); + this.panel1.Controls.Add(this.btnPlanUp); + this.panel1.Controls.Add(this.btnOk); + this.panel1.Controls.Add(this.btnRepair); + this.panel1.Controls.Add(this.btnNok); + this.panel1.Controls.Add(this.btnAbt); + this.panel1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.panel1.Location = new System.Drawing.Point(18, 1469); + this.panel1.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1829, 317); + this.panel1.TabIndex = 66; + // + // button4 + // + this.button4.BackColor = System.Drawing.Color.Red; + this.button4.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button4.Location = new System.Drawing.Point(1275, 181); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(326, 90); + this.button4.TabIndex = 74; + this.button4.Text = "结束计划"; + this.button4.UseVisualStyleBackColor = false; + // + // button3 + // + this.button3.BackColor = System.Drawing.Color.LawnGreen; + this.button3.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.button3.Location = new System.Drawing.Point(1275, 45); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(326, 90); + this.button3.TabIndex = 73; + this.button3.Text = "计划查询"; + this.button3.UseVisualStyleBackColor = false; + // + // btnPlanDown + // + this.btnPlanDown.BackColor = System.Drawing.Color.LawnGreen; + this.btnPlanDown.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnPlanDown.Location = new System.Drawing.Point(852, 181); + this.btnPlanDown.Name = "btnPlanDown"; + this.btnPlanDown.Size = new System.Drawing.Size(326, 81); + this.btnPlanDown.TabIndex = 72; + this.btnPlanDown.Text = "下一计划"; + this.btnPlanDown.UseVisualStyleBackColor = false; + this.btnPlanDown.Click += new System.EventHandler(this.btnPlanDown_Click); + // + // btnPlanUp + // + this.btnPlanUp.BackColor = System.Drawing.Color.LawnGreen; + this.btnPlanUp.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnPlanUp.Location = new System.Drawing.Point(852, 45); + this.btnPlanUp.Name = "btnPlanUp"; + this.btnPlanUp.Size = new System.Drawing.Size(326, 90); + this.btnPlanUp.TabIndex = 71; + this.btnPlanUp.Text = "上一计划"; + this.btnPlanUp.UseVisualStyleBackColor = false; + this.btnPlanUp.Click += new System.EventHandler(this.btnPlanUp_Click); + // + // btnOk + // + this.btnOk.BackColor = System.Drawing.Color.LawnGreen; + this.btnOk.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnOk.Location = new System.Drawing.Point(30, 45); + this.btnOk.Name = "btnOk"; + this.btnOk.Size = new System.Drawing.Size(326, 90); + this.btnOk.TabIndex = 67; + this.btnOk.Text = "合 格"; + this.btnOk.UseVisualStyleBackColor = false; + this.btnOk.Click += new System.EventHandler(this.btnOk_Click); + // + // btnRepair + // + this.btnRepair.BackColor = System.Drawing.Color.DodgerBlue; + this.btnRepair.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnRepair.Location = new System.Drawing.Point(30, 181); + this.btnRepair.Name = "btnRepair"; + this.btnRepair.Size = new System.Drawing.Size(326, 90); + this.btnRepair.TabIndex = 69; + this.btnRepair.Text = "返修"; + this.btnRepair.UseVisualStyleBackColor = false; + this.btnRepair.Click += new System.EventHandler(this.btnRepair_Click); + // + // btnNok + // + this.btnNok.BackColor = System.Drawing.Color.Yellow; + this.btnNok.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnNok.Location = new System.Drawing.Point(466, 45); + this.btnNok.Name = "btnNok"; + this.btnNok.Size = new System.Drawing.Size(321, 90); + this.btnNok.TabIndex = 68; + this.btnNok.Text = "返修合格"; + this.btnNok.UseVisualStyleBackColor = false; + this.btnNok.Click += new System.EventHandler(this.btnNok_Click); + // + // btnAbt + // + this.btnAbt.BackColor = System.Drawing.Color.OrangeRed; + this.btnAbt.Font = new System.Drawing.Font("宋体", 25.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnAbt.Location = new System.Drawing.Point(466, 181); + this.btnAbt.Name = "btnAbt"; + this.btnAbt.Size = new System.Drawing.Size(314, 90); + this.btnAbt.TabIndex = 70; + this.btnAbt.Text = "报 废"; + this.btnAbt.UseVisualStyleBackColor = false; + this.btnAbt.Click += new System.EventHandler(this.btnAbt_Click); + // + // lableFP + // + this.lableFP.AutoSize = true; + this.lableFP.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lableFP.ForeColor = System.Drawing.Color.Red; + this.lableFP.Location = new System.Drawing.Point(2201, 552); + this.lableFP.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lableFP.Name = "lableFP"; + this.lableFP.Size = new System.Drawing.Size(106, 42); + this.lableFP.TabIndex = 71; + this.lableFP.Tag = "存在返喷"; + this.lableFP.Text = " "; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.lbProductName); + this.groupBox1.Controls.Add(this.lbProductCode); + this.groupBox1.Controls.Add(this.label10); + this.groupBox1.Controls.Add(this.label9); + this.groupBox1.Controls.Add(this.label8); + this.groupBox1.Controls.Add(this.lbPlanCode); + this.groupBox1.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox1.ForeColor = System.Drawing.Color.Blue; + this.groupBox1.Location = new System.Drawing.Point(1879, 604); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(456, 192); + this.groupBox1.TabIndex = 72; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "当前计划"; + // + // lbProductName + // + this.lbProductName.AutoSize = true; + this.lbProductName.ForeColor = System.Drawing.Color.Black; + this.lbProductName.Location = new System.Drawing.Point(114, 156); + this.lbProductName.Name = "lbProductName"; + this.lbProductName.Size = new System.Drawing.Size(105, 33); + this.lbProductName.TabIndex = 5; + this.lbProductName.Text = " "; + // + // lbProductCode + // + this.lbProductCode.AutoSize = true; + this.lbProductCode.ForeColor = System.Drawing.Color.Black; + this.lbProductCode.Location = new System.Drawing.Point(114, 105); + this.lbProductCode.Name = "lbProductCode"; + this.lbProductCode.Size = new System.Drawing.Size(87, 33); + this.lbProductCode.TabIndex = 4; + this.lbProductCode.Text = " "; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.ForeColor = System.Drawing.Color.Black; + this.label10.Location = new System.Drawing.Point(17, 156); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(83, 33); + this.label10.TabIndex = 3; + this.label10.Text = "描述"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.ForeColor = System.Drawing.Color.Black; + this.label9.Location = new System.Drawing.Point(16, 105); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(83, 33); + this.label9.TabIndex = 2; + this.label9.Text = "产品"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.ForeColor = System.Drawing.Color.Black; + this.label8.Location = new System.Drawing.Point(16, 55); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(83, 33); + this.label8.TabIndex = 1; + this.label8.Text = "编号"; + // + // lbPlanCode + // + this.lbPlanCode.AutoSize = true; + this.lbPlanCode.ForeColor = System.Drawing.Color.Black; + this.lbPlanCode.Location = new System.Drawing.Point(114, 55); + this.lbPlanCode.Name = "lbPlanCode"; + this.lbPlanCode.Size = new System.Drawing.Size(87, 33); + this.lbPlanCode.TabIndex = 0; + this.lbPlanCode.Text = " "; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.lbPlanQty); + this.groupBox2.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox2.ForeColor = System.Drawing.Color.Blue; + this.groupBox2.Location = new System.Drawing.Point(1879, 821); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(456, 138); + this.groupBox2.TabIndex = 73; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "生产计划数量"; + // + // lbPlanQty + // + this.lbPlanQty.AutoSize = true; + this.lbPlanQty.Font = new System.Drawing.Font("宋体", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbPlanQty.ForeColor = System.Drawing.Color.Black; + this.lbPlanQty.Location = new System.Drawing.Point(41, 40); + this.lbPlanQty.Name = "lbPlanQty"; + this.lbPlanQty.Size = new System.Drawing.Size(78, 84); + this.lbPlanQty.TabIndex = 1; + this.lbPlanQty.Text = "0"; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.lbPlanCompleteQty); + this.groupBox3.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox3.ForeColor = System.Drawing.Color.Blue; + this.groupBox3.Location = new System.Drawing.Point(1885, 983); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(456, 138); + this.groupBox3.TabIndex = 74; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "计划完成数量"; + // + // lbPlanCompleteQty + // + this.lbPlanCompleteQty.AutoSize = true; + this.lbPlanCompleteQty.Font = new System.Drawing.Font("宋体", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbPlanCompleteQty.ForeColor = System.Drawing.Color.Black; + this.lbPlanCompleteQty.Location = new System.Drawing.Point(36, 40); + this.lbPlanCompleteQty.Name = "lbPlanCompleteQty"; + this.lbPlanCompleteQty.Size = new System.Drawing.Size(78, 84); + this.lbPlanCompleteQty.TabIndex = 0; + this.lbPlanCompleteQty.Text = "0"; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.lbOkCount); + this.groupBox4.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox4.ForeColor = System.Drawing.Color.Blue; + this.groupBox4.Location = new System.Drawing.Point(1885, 1153); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(456, 138); + this.groupBox4.TabIndex = 75; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "合格数量"; + // + // lbOkCount + // + this.lbOkCount.AutoSize = true; + this.lbOkCount.Font = new System.Drawing.Font("宋体", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbOkCount.ForeColor = System.Drawing.Color.Black; + this.lbOkCount.Location = new System.Drawing.Point(36, 40); + this.lbOkCount.Name = "lbOkCount"; + this.lbOkCount.Size = new System.Drawing.Size(78, 84); + this.lbOkCount.TabIndex = 1; + this.lbOkCount.Text = "0"; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.lbRepairCount); + this.groupBox5.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox5.ForeColor = System.Drawing.Color.Blue; + this.groupBox5.Location = new System.Drawing.Point(1885, 1324); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(456, 138); + this.groupBox5.TabIndex = 76; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "返修数量"; + // + // lbRepairCount + // + this.lbRepairCount.AutoSize = true; + this.lbRepairCount.Font = new System.Drawing.Font("宋体", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbRepairCount.ForeColor = System.Drawing.Color.Black; + this.lbRepairCount.Location = new System.Drawing.Point(36, 40); + this.lbRepairCount.Name = "lbRepairCount"; + this.lbRepairCount.Size = new System.Drawing.Size(78, 84); + this.lbRepairCount.TabIndex = 1; + this.lbRepairCount.Text = "0"; + // + // groupBox6 + // + this.groupBox6.Controls.Add(this.lbBadCount); + this.groupBox6.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.groupBox6.ForeColor = System.Drawing.Color.Blue; + this.groupBox6.Location = new System.Drawing.Point(1885, 1494); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Size = new System.Drawing.Size(456, 138); + this.groupBox6.TabIndex = 77; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "报废数量"; + // + // lbBadCount + // + this.lbBadCount.AutoSize = true; + this.lbBadCount.Font = new System.Drawing.Font("宋体", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbBadCount.ForeColor = System.Drawing.Color.Black; + this.lbBadCount.Location = new System.Drawing.Point(36, 40); + this.lbBadCount.Name = "lbBadCount"; + this.lbBadCount.Size = new System.Drawing.Size(78, 84); + this.lbBadCount.TabIndex = 1; + this.lbBadCount.Text = "0"; + // + // lbForeig + // + this.lbForeig.AutoSize = true; + this.lbForeig.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbForeig.Location = new System.Drawing.Point(26, 306); + this.lbForeig.Name = "lbForeig"; + this.lbForeig.Size = new System.Drawing.Size(69, 33); + this.lbForeig.TabIndex = 78; + this.lbForeig.Text = " "; + // + // labWorkClass + // + this.labWorkClass.AutoSize = true; + this.labWorkClass.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labWorkClass.Location = new System.Drawing.Point(1879, 487); + this.labWorkClass.Name = "labWorkClass"; + this.labWorkClass.Size = new System.Drawing.Size(67, 33); + this.labWorkClass.TabIndex = 79; + this.labWorkClass.Text = "A班"; + // + // labStation + // + this.labStation.AutoSize = true; + this.labStation.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labStation.Location = new System.Drawing.Point(2123, 487); + this.labStation.Name = "labStation"; + this.labStation.Size = new System.Drawing.Size(69, 33); + this.labStation.TabIndex = 80; + this.labStation.Text = "F02"; + // + // labelVersion + // + this.labelVersion.AutoSize = true; + this.labelVersion.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.labelVersion.Location = new System.Drawing.Point(1879, 552); + this.labelVersion.Name = "labelVersion"; + this.labelVersion.Size = new System.Drawing.Size(159, 33); + this.labelVersion.TabIndex = 81; + this.labelVersion.Text = "10.0.0.1"; + // + // FrmQualityNew + // + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 21F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(2351, 1789); + this.Controls.Add(this.labelVersion); + this.Controls.Add(this.labStation); + this.Controls.Add(this.labWorkClass); + this.Controls.Add(this.lbForeig); + this.Controls.Add(this.groupBox6); + this.Controls.Add(this.groupBox5); + this.Controls.Add(this.groupBox4); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.panel1); + this.Controls.Add(this.lableFP); + this.Controls.Add(this.labProPosition); + this.Controls.Add(this.txtBarCode); + this.Controls.Add(this.labProductInfo); + this.Controls.Add(this.label2); + this.Controls.Add(this.label15); + this.Controls.Add(this.panel2); + this.Controls.Add(this.pictureBox2); + this.Controls.Add(this.labTime); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.labTitle); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; + this.Margin = new System.Windows.Forms.Padding(6, 4, 6, 4); + this.Name = "FrmQualityNew"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "喷涂质检"; + this.Load += new System.EventHandler(this.FrmSecondCheck_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + this.panel1.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label labTime; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label labTitle; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label labProductInfo; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtBarCode; + private System.Windows.Forms.Label labProPosition; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Button btnOk; + private System.Windows.Forms.Button btnNok; + private System.Windows.Forms.Button btnRepair; + private System.Windows.Forms.Button btnAbt; + private System.Windows.Forms.Label lableFP; + private System.Windows.Forms.Button btnPlanDown; + private System.Windows.Forms.Button btnPlanUp; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.GroupBox groupBox6; + private System.Windows.Forms.Label lbForeig; + private System.Windows.Forms.Label labWorkClass; + private System.Windows.Forms.Label labStation; + private System.Windows.Forms.Label labelVersion; + private System.Windows.Forms.Label lbPlanCode; + private System.Windows.Forms.Label lbPlanCompleteQty; + private System.Windows.Forms.Label lbOkCount; + private System.Windows.Forms.Label lbRepairCount; + private System.Windows.Forms.Label lbBadCount; + private System.Windows.Forms.Label lbPlanQty; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label lbProductName; + private System.Windows.Forms.Label lbProductCode; + } +} \ No newline at end of file diff --git a/PunchingMistake/FrmQualityNew.cs b/PunchingMistake/FrmQualityNew.cs new file mode 100644 index 0000000..5c062c4 --- /dev/null +++ b/PunchingMistake/FrmQualityNew.cs @@ -0,0 +1,1544 @@ + +using PaintingPC.Model; +using PaintingPC.WebReference; +using System; +using System.Linq; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Drawing; +using System.IO; +using System.Net.NetworkInformation; +using System.Reflection; +using System.Threading; +using System.Windows.Forms; +using MESClassLibrary.BLL.BasicInfo; +using static System.Windows.Forms.AxHost; +using PaintingPC; + +namespace PunchingMistake +{ + public partial class FrmQualityNew : Form + { + int count = 0; //缺陷图选择个数 + public static string ColorName = ""; //修改颜色 + public static string paintId = ""; + + private static string position = "", reason = ""; + + private string _carType = string.Empty; + private Dictionary _lastJustDict = new Dictionary(); + private string _foreighColor = string.Empty; + private string _lineCode = string.Empty; + private List _stations = new List(); + + private StationBLL _stationBLL = new StationBLL(); + /// + /// 从tb_ForeignColorMap表得到的零件号 + /// + private string _foreignPartCode = string.Empty; + private bool _isSingleStation = false; + private string _isTest = "false"; + private string _stationNo = ""; + private string IsHigh = "1"; + public FrmQualityNew() + { + InitializeComponent(); + //WindowState = FormWindowState.Normal; + this.Size = new Size(1280, 1020); + + + + } + + + + + private void FrmSecondCheck_Load(object sender, EventArgs e) + { + try + { + Control.CheckForIllegalCrossThreadCalls = false; + InitPage(); + } + catch (Exception ex) + { + MessageBox.Show("网络故障,请联系网络管理员"); + LogHelper.WriteLog(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + + public void InitPage() + { + try + { + string title = ConfigurationManager.AppSettings["Display"].ToString(); + string workClass = Function.GetWorkClass2(); + _stationNo = ConfigurationManager.AppSettings["Station"].ToString(); + + labTitle.Text = title; + + labWorkClass.Text = workClass; + labStation.Text = _stationNo; + labelVersion.Text = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); + + LoadScreen(); + + + Thread t = new Thread(new ThreadStart(TimeGo)); + t.Start(); + } + catch (Exception ex) + { } + } + + + + private void TimeGo() + { + System.Timers.Timer timer = new System.Timers.Timer(); + timer.Interval = 10; + timer.Enabled = true; + timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick); + } + + private void timer_Tick(object sender, EventArgs e) + { + try + { + labTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + Thread.Sleep(500); + } + catch + { + + } + } + + /// + /// 缺陷图点击 + /// + /// + /// + void lblRoom_Click(object sender, EventArgs e) + { + Label a = (Label)sender; + string aa = a.Text; + if (a.BackColor == Color.Transparent) + { + a.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse); + position += aa; + count++; + } + else + { + a.BackColor = Color.Transparent; + count--; + } + } + + /// + /// 缺陷原因点击 + /// + /// + /// + void dLbRoom_Click(object sender, EventArgs e) + { + if (count == 0) + { + MessageBox.Show("请选择缺陷区域!"); + return; + } + Label a = (Label)sender; + string aa = a.Text; + if (a.BackColor == Color.Transparent) + { + a.BackColor = Color.Chartreuse; + reason += a.Text + ";"; + } + else + { + a.BackColor = Color.Transparent; + reason = reason.Replace(a.Text + ";", ""); + } + } + + private Control[] SetControlGroup() + { + //Control[] controls = { btnPass, btnAbt, btnRepair }; + Control[] controls = { }; + return controls; + } + + /// + /// 清除控件选中 + /// + /// + public void ClearControlColor(Control[] controls) + { + foreach (Control c in controls) + { + c.BackColor = Color.LightGray; + } + } + + bool SaveBeforeVerify( string currentRst) + { + string lastRst = GetLastInspectRst(txtBarCode.Text.Trim()); + if (lastRst.Contains("报废")) + { + MessageBox.Show($"条码已判定为报废,不能再判定为{currentRst}."); + Clear(); + return false; + } + return true; + } + /// + /// 合格 + /// + /// + /// + private void btnOk_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrEmpty(txtBarCode.Text.Trim())) + { + MessageBox.Show("请先扫描数据,然后操作."); + return; + } + #region 返喷下线数据验证 + if (lableFP.Text.Contains("[返喷]")) + { + string barcode = txtBarCode.Text.Trim(); + DataTable dtInspect = Function.GetInspectInfoByBarCode2(barcode); + if (dtInspect != null && dtInspect.Rows.Count > 0) + { + string inspectResult = dtInspect.Rows[0]["inspectResult"].ToString(); //检测结果 + string inspectColorInfo = dtInspect.Rows[0]["remark1"].ToString(); //颜色 + if (inspectResult.Contains("打磨")) + { + string createTime = dtInspect.Rows[0]["createTime"].ToString(); //创建时间 + int count = 0; + string colorInfo = ""; + if (_lineCode == "2") + { + count = Function.GetProducColorFromWms(barcode, "TM_BJBMPT_MES_DATA", createTime ,ref colorInfo); + } + else if (_lineCode == "1") + { + count = Function.GetProducColorFromWms(barcode, "TM_BJBMPT_MES_DATA_OLD", createTime , ref colorInfo); + + } + else + { + + } + + if (count == 0) + { + MessageBox.Show("未发现返喷下线数据!,无法进行质量判定"); + return; + } + else + { + if(inspectColorInfo != colorInfo) + { + btnOk.Enabled = false; + btnRepair.Enabled = false; + btnNok.Enabled = false; + + MessageBox.Show("当前产品返喷颜色与原颜色不符,需报废!"); + return; + } + + } + } + } + + } + #endregion + + ShowHint(""); + #region 判断产品是否有颜色 + string colorName = string.Empty; + string partName = string.Empty; + if (CheckColor(ref colorName, ref partName) == false) return; + + + #endregion + ClearControlColor(SetControlGroup()); + btnAbt.BackColor = Color.Red; + + bool rr = SaveBeforeVerify("合格"); + if (rr == false) + { + return; + } + + //if (lastRst.Contains("合格")) + //{ + // MessageBox.Show("条码已判定为合格,无需重复判定"); + // Clear(); + // return; + //} + SaveRst("合格", colorName, partName, 1); + } + catch(Exception ex) + { + ShowHint("执行合格判定发生异常,异常原因:" + ex.Message); + MessageBox.Show("执行合格判定发生异常,异常原因:" + ex.Message); + Clear(); + } + + } + void Clear() + { + ClearPage(); + ClearTxtBarcode(); + txtBarCode.TabIndex = 0; + } + + /// + /// 其它 + /// + /// + /// + private void btnNok_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrEmpty(txtBarCode.Text.Trim())) + { + MessageBox.Show("请先扫描数据,然后操作."); + return; + } + + #region 返喷下线数据验证 + if (lableFP.Text.Contains("[返喷]")) + { + string barcode = txtBarCode.Text.Trim(); + DataTable dtInspect = Function.GetInspectInfoByBarCode2(barcode); + if (dtInspect != null && dtInspect.Rows.Count > 0) + { + string inspectResult = dtInspect.Rows[0]["inspectResult"].ToString(); //检测结果 + string inspectColorInfo = dtInspect.Rows[0]["remark1"].ToString(); //颜色 + if (inspectResult.Contains("打磨")) + { + string createTime = dtInspect.Rows[0]["createTime"].ToString(); //创建时间 + int count = 0; + string colorInfo = ""; + if (_lineCode == "2") + { + count = Function.GetProducColorFromWms(barcode, "TM_BJBMPT_MES_DATA", createTime, ref colorInfo); + } + else if (_lineCode == "1") + { + count = Function.GetProducColorFromWms(barcode, "TM_BJBMPT_MES_DATA_OLD", createTime, ref colorInfo); + + } + else + { + + } + + if (count == 0) + { + MessageBox.Show("未发现返喷下线数据!,无法进行质量判定"); + return; + } + else + { + if (inspectColorInfo != colorInfo) + { + btnOk.Enabled = false; + btnRepair.Enabled = false; + btnNok.Enabled = false; + + MessageBox.Show("当前产品返喷颜色与原颜色不符,需报废!"); + return; + } + + } + } + } + + } + #endregion + + if (MessageBox.Show($"确认对[{txtBarCode.Text}]进行[其它]判定?", "操作确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return; + ShowHint(""); + #region 必须选择缺陷位置与缺陷原因,否则无法保存 + if (CheckDefect() == false) return; + #endregion + + #region 判断产品是否有颜色 + string colorName = string.Empty; + string partName = string.Empty; + if (CheckColor(ref colorName, ref partName) == false) return; + #endregion + + int cs = Function.OtherTimes(txtBarCode.Text.Trim()); + if (cs > 0) + { + MessageBox.Show("条码" + txtBarCode.Text.Trim() + "已存在判定为其它的记录,只允许判定1次."); + ShowHint("条码" + txtBarCode.Text.Trim() + "已存在判定为其它的记录,只允许判定1次."); + Clear(); + return; + } + + bool rr = SaveBeforeVerify("其它"); + if (rr == false) + { + return; + } + SaveRst("其它", colorName, partName, 4); + } + catch(Exception ex) + { + ShowHint("执行其它判定发生异常,异常原因:" + ex.Message); + MessageBox.Show("执行其它判定发生异常,异常原因:" + ex.Message); + Clear(); + } + } + + /// + /// 返喷按钮 + /// + /// + /// + private void btnRepair_Click(object sender, EventArgs e) + { + try + { + #region 可回喷次数 =1,不能打磨, =2 可以, 不能有两次质检结果为打磨 + if (string.IsNullOrEmpty(txtBarCode.Text.Trim())) + { + MessageBox.Show("请先扫描数据,然后操作."); + return; + } + + if (MessageBox.Show($"确认对[{txtBarCode.Text}]进行返喷操作?", "操作确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return; + ShowHint(""); + string barcode = Function.UniteBarCodeToOne(txtBarCode.Text.Trim()); + int cs = Function.YiDaMoCiShu(barcode); //记录中已返喷次数 + + int keHuiPen = Function.keHuiPen(barcode); //基础数据中,可返喷次数 + if (keHuiPen > 1) + keHuiPen = 1; + + if (keHuiPen > 0 && cs < keHuiPen) + { + #region 必须选择缺陷位置与缺陷原因,否则无法保存 + + if (CheckDefect() == false) return; + + #endregion + + #region 判断产品是否有颜色 + string colorName = string.Empty; + string partName = string.Empty; + + if (CheckColor(ref colorName, ref partName) == false) return; + #endregion + + ClearControlColor(SetControlGroup()); + btnRepair.BackColor = Color.Yellow; + + //string lastRst = GetLastInspectRst(txtBarCode.Text.Trim()); + //if (lastRst.Contains("打磨")) + //{ + // ShowHint("条码已判定为返喷,无需重复判定"); + // MessageBox.Show("条码已判定为返喷,无需重复判定"); + // Clear(); + // return; + //} + + + bool rr = SaveBeforeVerify("返喷"); + if (rr == false) + { + return; + } + SaveRst("", colorName, partName, 9); + + } + else + { + ShowHint("根据该零件可回喷次数设置,不能判定为返喷或已超过返喷次数!"); + MessageBox.Show("根据该零件可回喷次数设置,不能判定为返喷或已超过返喷次数!"); + Clear(); + return; + } + + #endregion + } + catch(Exception ex) + { + ShowHint("执行返喷操作发生异常,异常原因:"+ex.Message); + MessageBox.Show("执行返喷操作发生异常,异常原因:" + ex.Message); + Clear(); + } + + } + + /// + /// 报废按钮 + /// + /// + /// + private void btnAbt_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrEmpty(txtBarCode.Text.Trim())) + { + MessageBox.Show("请先扫描数据,然后操作."); + return; + } + + #region 返喷下线数据验证 + if (lableFP.Text.Contains("[返喷]")) + { + string barcode = txtBarCode.Text.Trim(); + DataTable dtInspect = Function.GetInspectInfoByBarCode2(barcode); + if (dtInspect != null && dtInspect.Rows.Count > 0) + { + string inspectResult = dtInspect.Rows[0]["inspectResult"].ToString(); //检测结果 + string inspectColorInfo = dtInspect.Rows[0]["remark1"].ToString(); //颜色 + if (inspectResult.Contains("打磨")) + { + string createTime = dtInspect.Rows[0]["createTime"].ToString(); //创建时间 + int count = 0; + string colorInfo = ""; + if (_lineCode == "2") + { + count = Function.GetProducColorFromWms(barcode, "TM_BJBMPT_MES_DATA", createTime, ref colorInfo); + } + else if (_lineCode == "1") + { + count = Function.GetProducColorFromWms(barcode, "TM_BJBMPT_MES_DATA_OLD", createTime, ref colorInfo); + + } + else + { + + } + + if (count == 0) + { + MessageBox.Show("未发现返喷下线数据!,无法进行质量判定"); + return; + } + } + } + + } + #endregion + + // if (MessageBox.Show($"确认对[{txtBarCode.Text}]进行报废操作?", "操作确认", MessageBoxButtons.OKCancel) == DialogResult.Cancel) return; + + //UserInput(userName => { + + //string userName = Program.UserName; + // if (string.IsNullOrEmpty(userName)) + // { + // MessageBox.Show("报废必须录入用户名."); + // return; + // } + // else + // { + ShowHint(""); + #region 必须选择缺陷位置与缺陷原因,否则无法保存 + if (CheckDefect() == false) return; + #endregion + + #region 判断产品是否有颜色 + string colorName = string.Empty; + string partName = string.Empty; + if (CheckColor(ref colorName, ref partName) == false) return; + #endregion + + //string lastRst = GetLastInspectRst(txtBarCode.Text.Trim()); + //if (lastRst.Contains("合格")) + //{ + // MessageBox.Show("条码已判定为合格,无法重新判定为报废"); + // Clear(); + // return; + //} + //if (lastRst.Contains("报废")) + //{ + // MessageBox.Show("条码已判定为报废,无需重复报废"); + // Clear(); + // return; + //} + + ClearControlColor(SetControlGroup()); + btnAbt.BackColor = Color.Red; + + bool rr = SaveBeforeVerify("报废"); + if (rr == false) + { + return; + } + + SaveRst("报废", colorName, partName, 2); + + // } + // }); + } + + catch(Exception ex) + { + ShowHint("执行报废操作发生异常,异常原因:" + ex.Message); + MessageBox.Show("执行报废操作发生异常,异常原因:" + ex.Message); + Clear(); + } + + } + /// + /// + /// + /// + /// + /// + /// 0-不合格;1-合格;9-返喷 8-其他 + void SaveRst(string state, string colorName, string partName,int isOK,string userName="") + { + if (string.IsNullOrEmpty(userName)) + { + userName = Program.UserName; + } + if (string.IsNullOrEmpty(userName)) + { + + } + + if(reason.Contains("点修补") && state!="其它") + { + MessageBox.Show("选择[点修补],只能判定为[其它]状态,不能判定为"+ state); + return; + } + string bcode = txtBarCode.Text.Trim(); + + bool ispass = ScanCodeValidVerify(bcode); + if (ispass == false) + { + txtBarCode.SelectAll(); + return; + } + + + + //保存 + string id = SaveInspect(state, colorName, partName, userName); + + try + { + if (!string.IsNullOrEmpty(id)) + { + string interfaceMsg = string.Empty; + bool rst = SendToWms(txtBarCode.Text.Trim(), isOK,ref interfaceMsg); + if (rst == false) + { + DeleteRepectRst(id, "Web接口调用返回false,原因:" + interfaceMsg, bcode); + } + else + { + ShowHint(txtBarCode.Text.Trim()+"操作成功",true); + Clear(); + } + } + else + { + MessageBox.Show("质检记录保存失败,请重新操作."); + return; + } + + } + catch (Exception ex) + { + if (ex.Message.Contains("WMS")) + { + DeleteRepectRst(id,"Web接口调用抛出异常,异常原因:" + ex.Message , bcode); + } + ShowHint(state+"-WMS报工异常,原因:" + ex.Message); + MessageBox.Show(state+"-WMS报工异常,原因:" + ex.Message); + LogHelper.WriteLog(state+"-WMS报工调用WMS接口:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + private void DeleteRepectRst(string id,string msg,string oneBarCode) + { + Function.DelInspectRst(id); + LogHelper.WriteLog($"接口异常,删除塑件[{oneBarCode}]喷涂质检记录,异常内容:" + msg, MethodBase.GetCurrentMethod().Name); + } + + /// + /// + /// + /// + /// + string GetLastInspectRst(string barCode) + { + DataTable inspectTable = Function.GetInspectInfoByBarCode2(txtBarCode.Text.Trim()); + if (inspectTable.Rows.Count > 0) + { + return inspectTable.Rows[0]["inspectResult"].ToString(); + } + return ""; + } + + /// + /// 发送wms罢工 + /// + /// + /// 0:报废 1:合格 9:返喷 + bool SendToWms(string scanBarCode, int isOk,ref string errorMsg) + { + try + { + if (_isTest == "true") + return true; + + //WMSWebService webService = new WMSWebService(); + //webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString(); + ////webService.Timeout = 1200000; + //string errorReason = ""; + ////上次异常提交 + //if (_lastJustDict.Count > 0) + //{ + // bool rst2 = webService.WMSSprayingForCS(Function.UniteBarCodeToOne(_lastJustDict.First().Key), int.Parse(_lastJustDict.First().Value), out errorReason); + //} + + + //bool rst = webService.WMSSprayingForCS(Function.UniteBarCodeToOne(scanBarCode), isOk, out errorReason); + //if (rst == false) + //{ + + // MessageBox.Show("调用远程接口失败"); + // ShowHint("调用远程接口失败: " + errorReason); + + // _lastJustDict.Clear(); + // _lastJustDict.Add(scanBarCode, isOk.ToString()); + + // return false; + //} + //_lastJustDict.Clear(); + return true; + } + catch(Exception ex) + { + throw new Exception("WMS接口调用异常,异常原因:" + ex.Message); + } + + } + /// + /// 判断产品是否有颜色 + /// + /// + bool CheckColor(ref string colorName,ref string partName) + { + string[] ss = null; + if (string.IsNullOrEmpty(labProductInfo.Text)) + { + MessageBox.Show("颜色信息有误,请重新扫描"); + return false; + } + if (labProductInfo.Text.Contains(",")) + { + ss = labProductInfo.Text.Split(','); + } + else + { + ss = labProductInfo.Text.Split(','); + } + if (ss.Length >= 1) + { + if (string.IsNullOrWhiteSpace(ss[0])) + { + MessageBox.Show("无颜色信息,请重新扫描"); + return false; + } + } + else + { + MessageBox.Show("颜色信息有误1,请重新扫描"); + return false; + } + colorName = ss[0]; + if (ss.Length > 1) + { + if (!string.IsNullOrEmpty(ss[1])) + { + partName = ss[1]; + } + } + return true; + } + /// + /// 必须选择缺陷位置与缺陷原因,否则无法保存 + /// + /// + bool CheckDefect() + { + string damnPositionTemp = ""; + string reasonTemp = ""; + //缺陷位置 + foreach (Control c in pictureBox2.Controls) + { + Label lab = c as Label; + if (lab.BackColor != Color.Transparent) + { + damnPositionTemp += lab.Text + ";"; + position = damnPositionTemp; + } + } + //缺陷原因 + foreach (Control c in panel2.Controls) + { + Label lab = c as Label; + if (lab.BackColor != Color.Transparent) + { + reasonTemp += lab.Text + ";"; + reason = reasonTemp; + } + } + + if (string.IsNullOrWhiteSpace(damnPositionTemp) || string.IsNullOrWhiteSpace(reasonTemp)) + { + MessageBox.Show("必须选择缺陷位置与缺陷原因,否则无法保存!"); + return false; + } + return true; + } + /// + /// 保存质检记录 tb_InspectResult + /// + /// + /// + /// + /// 返回插入记录的ID + public string SaveInspect(string inspectResult,string colorName, string partName,string userName) + { + try + { + + return ""; + } + catch (Exception ex) + { + ShowHint("质检提交异常,原因:" + ex.Message); + LogHelper.WriteLog("质检提交:" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + MessageBox.Show("质检提交异常,原因:" + ex.Message); + return null; + } + } + void ShowHint(string txt,bool isOk =false) + { + lbForeig.ForeColor = Color.Red; + lbForeig.Text = txt; + if(isOk == true) + { + lbForeig.ForeColor = Color.Green; + } + } + public void ClearInspect() + { + //缺陷位置 + foreach (Control c in pictureBox2.Controls) + { + Label lab = c as Label; + lab.BackColor = Color.Transparent; + } + //缺陷原因 + foreach (Control c in panel2.Controls) + { + Label lab = c as Label; + lab.BackColor = Color.Transparent; + } + } + + /// + /// 扫码-根据条码查询信息(产品信息、加载图片及缺陷原因、三次检验信息) + /// + /// + /// + private void txtBarCode_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + try + { + btnOk.Enabled = true; + btnRepair.Enabled = true; + btnNok.Enabled = true; + + lbForeig.Text = ""; + ClearPage(); + if (string.IsNullOrEmpty(lbPlanCode.Text)) + { + throw new Exception("当前没有生产计划."); + } + ScanBarCode(); + } + catch (Exception ex) + { + MessageBox.Show("请查看网络是否与服务器连通,无法连通请联系网络管理员。"+ ex); + LogHelper.WriteLog(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + } + + private void ScanBarCode() + { + try + { + ButtonEnable(SetControlGroup()); + //ClearPage(); + + string barcode = txtBarCode.Text.Trim(); + if (barcode.Contains(".")) + { + barcode = Function.TransToBarCodeOne(barcode); + } + + #region 判断条码有效性 + + if (! Function.BarCodeValid(barcode)) + { + MessageBox.Show("扫描的条码号:"+barcode+"无效,请重新扫描!"); + txtBarCode.Text = ""; + return; + } + //bool ispass = ScanCodeValidVerify(barcode); + //if (ispass == false) + //{ + // txtBarCode.SelectAll(); + // return; + //} + + DataTable stockInTable = Function2.SearchStockIn(barcode); + if(stockInTable.Rows.Count == 0) + { + ShowHint("扫描半成品码没有喷涂完工记录,无法使用.",false); + return; + } + + DataTable punchTable = Function2.SearchPunchCodeRecord(barcode); + if(punchTable.Rows.Count > 0) + { + if(punchTable.Rows[0]["Flag"].ToString() == "0" || punchTable.Rows[0]["Flag"].ToString() == "1") + { + ShowHint("扫描半成品码已存在装配记录,无法使用.", false); + return; + } + } + DataTable productTable = Function2.GetProductInfo(barcode.Substring(0, 10)); + if(productTable.Rows.Count == 0) + { + ShowHint($"扫描半成品码的存货代码[{barcode.Substring(0, 10)}]在零件表找不对对应零件号,请检查系统维护.", false); + return; + } + string asselblePartCode = Function2.GetAssemblePartCode(productTable.Rows[0]["PartNo"].ToString(), _stationNo); + + if(lbProductCode.Text?.ToLower() != asselblePartCode?.ToLower()) + { + ShowHint($"扫描半成品码在BOM中对应的总成零件号[{asselblePartCode}]与当前计划的零件号[{lbProductCode.Text}]不匹配.", false); + return; + } + + DataTable bomTable = Function2.GetBomTable(asselblePartCode, _stationNo); + List list = bomTable.AsEnumerable().Where(p => p.Field("IsChecked") == 1).ToList(); + + + #endregion + + + + + #region 如果是补打的条码,查询产品信息 + + //if (!barcode.Contains(".") && barcode.Length > 4) + //{ + // string strCode = barcode.Substring(barcode.Length - 4, 4); + // int num = 0; + // Int32.TryParse(strCode, out num); + // if (num > 7000) + // { + // labProductInfo.Text = Function.GetReprintInfo2(barcode); + // if (string.IsNullOrWhiteSpace(labProductInfo.Text.Trim())) + // { + // ButtonDisable(SetControlGroup()); + // labProductInfo.Text = "没有查询到补打条码信息"; + // return; + // } + // } + + //} + + #endregion + + //根据条码查询,加载图片及原因 + int row = 0, col = 0; + string picture = ""; + + #region 缺陷原因 + + try + { + int drow = 0, dcol = 5; //行,列 + + DataTable dt3 = Function.SearchDefectInfo(ConfigurationManager.AppSettings["Station"].Trim()); + if (dt3 != null && dt3.Rows.Count > 0) + { + drow = Convert.ToInt32(Math.Ceiling((double)dt3.Rows.Count / dcol)); + Label[] dLb = new Label[7]; + string[] dstr = new string[dt3.Rows.Count]; + + for (int i = 0; i < dt3.Rows.Count; i++) + { + dstr[i] = dt3.Rows[i]["DefectName"].ToString(); + } + + for (int i = 0; i < dcol; i++) //列 + { + for (int j = 0; j < drow; j++) //行 + { + dLb[i] = new Label(); + if ((i + dcol * j) < dstr.Length) + { + + dLb[i].Text = dstr[i + dcol * j].ToString(); + dLb[i].Font = new Font(dLb[i].Font.FontFamily, 24, FontStyle.Bold); + dLb[i].Size = new Size(150, 50); + dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width + 25), 5 + j * (dLb[i].Size.Height + 20)); + dLb[i].BorderStyle = BorderStyle.FixedSingle; + dLb[i].BackColor = Color.Transparent; + dLb[i].TextAlign = ContentAlignment.MiddleCenter; + + if (dLb[i].Text.Contains("点修补")) + { + dLb[i].Font = new Font(dLb[i].Font.FontFamily, 36, FontStyle.Bold); + dLb[i].Size = new Size(170, 60); + dLb[i].ForeColor = Color.Red; + //dLb[i].BackColor = Color.Red; + } + panel2.Controls.Add(dLb[i]); + dLb[i].Click += new EventHandler(dLbRoom_Click); + } + } + } + } + } + catch (Exception ex) + { + LogHelper.WriteLog("缺陷项-"+ex.ToString(), MethodBase.GetCurrentMethod().Name); + throw ex; + } + + #endregion + + #region 加载图片 + + try + { + DataTable dt2 = Function.SearchInfoByBarCode(barcode); + + if (dt2 != null && dt2.Rows.Count > 0) + { + row = Convert.ToInt32(dt2.Rows[0]["Rows"].ToString()); + col = Convert.ToInt32(dt2.Rows[0]["Cols"].ToString()); + picture = dt2.Rows[0]["PicturePath"].ToString(); + } + dt2.Dispose(); + + if (!string.IsNullOrEmpty(picture)) + { + if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture)) + { + + string strImageURL = Function.GetImgPath() + picture; + + if(_isTest != "true") + { + System.Net.WebClient webClient = new System.Net.WebClient(); + webClient.DownloadFile(strImageURL, Directory.GetCurrentDirectory() + @"\" + picture); + } + + } + + + FileStream fs = new FileStream(Directory.GetCurrentDirectory() + "\\" + picture, FileMode.Open, + FileAccess.Read);//获取图片文件流 + Image img = Image.FromStream(fs); // 文件流转换成Image格式 + pictureBox2.Image = img; //给 图片框设置要显示的图片 + fs.Close(); // 关闭流,释放图片资源 + } + } + catch (Exception ex) + { + LogHelper.WriteLog("图片项-" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + #endregion + + #region 缺陷图划分区域 + + Label[] lb = new Label[5]; + string[] str = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; + + for (int i = 0; i < col; i++) + { + for (int j = 0; j < row; j++) + { + lb[i] = new Label(); + lb[i].Text = str[i + col * j].ToString(); + lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold); + + lb[i].Size = new Size(pictureBox2.Width / col, pictureBox2.Height / row); + lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height); + lb[i].BorderStyle = BorderStyle.FixedSingle; + lb[i].BackColor = Color.Transparent; + lb[i].TextAlign = ContentAlignment.MiddleCenter; + pictureBox2.Controls.Add(lb[i]); + + lb[i].Click += new EventHandler(lblRoom_Click); + } + } + + #endregion + + //不是补打的条码,根据条码查询产品信息、检验信息,选中缺陷位置及原因 + DataTable dtInspect = Function.GetInspectInfoByBarCode2(barcode); + if (dtInspect != null && dtInspect.Rows.Count > 0) + { + //List list = dtInspect.AsEnumerable().Where(p => p.Field("inspectResult").Contains("打磨")).ToList(); + //string state = string.Empty; + //if (list.Count > 0) + //{ + // state = "返喷"; + //} + //List list2 = dtInspect.AsEnumerable().Where(p => p.Field("inspectResult").Contains("其它")).ToList(); + //if (list2.Count > 0) + //{ + // if(list2.Where(p=> p.Field("inspectResult")=="其它WMS").Count() > 0) + // { + // state = state + ",其它WMS"; + // } + // if (list2.Where(p => p.Field("inspectResult") == "其它").Count() > 0) + // { + // state = state + ",其它"; + // } + + //} + + //if (!string.IsNullOrEmpty(state)) + //{ + // lableFP.Text = "存在[" + state + "]状态"; + //} + + //_carType = dtInspect.Rows[0]["CarType"].ToString().Trim(); + //labProductInfo.Text = dtInspect.Rows[0]["productInfo"].ToString().Trim(); //产品信息 + ////string position1 = dtInspect.Rows[0]["damnPosition"].ToString(); //缺陷位置 + ////string reason1 = dtInspect.Rows[0]["reason"].ToString(); //原因 + //position= dtInspect.Rows[0]["damnPosition"].ToString(); //缺陷位置 + //reason= dtInspect.Rows[0]["reason"].ToString(); //原因 + + + + //paintId = dtInspect.Rows[0]["remark3"].ToString(); //原因 + + //string stationNo = dtInspect.Rows[0]["stationNo"].ToString(); //质检工位 + //if(!_stations.Contains(stationNo)) + //{ + + // //ShowHint(em, false); + // txtBarCode.Text = ""; + // txtBarCode.TabIndex = 0; + // txtBarCode.Select(); + // return; + //} + + //#region 选中缺陷位置及原因 + + //foreach (Control c in pictureBox2.Controls) + //{ + // Label lab = c as Label; + // if (position.Contains(lab.Text)) + // { + // lab.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse); + // count++; + // } + //} + //foreach (Control c in panel2.Controls) + //{ + // Label lab = c as Label; + // if (reason.Contains(lab.Text)) + // { + // lab.BackColor = Color.Chartreuse; + // reason += lab.Text + ";"; + // } + //} + + //#endregion + + #region 根据一检结果显示一检时的位置--暂时不要 + + labProPosition.Text = Function.GetFirstInsPosition2(dtInspect); + + #endregion + } + else + { + + #region 没有一检结果,查询老外数据库,取产品信息 + if ((_isSingleStation==true )) + { + string paintError = string.Empty; + //喷涂线边质检,没有质检结果,查询老外数据库,取产品信息 + string foreignVal = string.Empty; + if(_lineCode == "2") + { + foreignVal = Function.GetProductInfoFrWms(barcode, "TM_BJBMPT_MES_DATA", ref paintError); + } + else if (_lineCode == "1") + { + foreignVal = Function.GetProductInfoFrWms(barcode, "TM_BJBMPT_MES_DATA_OLD", ref paintError); + + } + else + { + foreignVal = Function.GetProductInfo2(barcode, ref paintError); + } + if (!string.IsNullOrEmpty(paintError)) + { + lbForeig.Text = paintError; + } + if (string.IsNullOrEmpty(foreignVal)) + { + return; + } + string[] info = foreignVal.Split(','); + if (!string.IsNullOrEmpty(paintError)) + { + ShowHint(paintError); + } + _foreighColor = info[0]; + labProductInfo.Text = info[0] + "," + info[1]; + paintId = info[2]; + labProPosition.Tag = paintId; + labProductInfo.Tag = Function.GetSide(barcode, paintId); + labProPosition.Text = labProductInfo.Tag.ToString().Replace(';', ' '); + if (info.Length == 4) + { + _foreignPartCode = info[3]; + } + } + else + { + //库房返喷,没有质检结果,不能查老外库,就是条码不正确 + MessageBox.Show("没有喷涂线边质检记录,无法返喷操作!"); + txtBarCode.Text = ""; + txtBarCode.TabIndex = 0; + txtBarCode.Select(); + return ; + } + + + #endregion + } + + + txtBarCode.SelectAll(); + } + catch (Exception ex) + { + MessageBox.Show("请查看网络是否与服务器连通,无法连通请联系网络管理员。" + ex.ToString()); + LogHelper.WriteLog("整体项-" + ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + } + /// + /// 一检 二检 点修补扫码是否允许验证 + /// + /// + /// + private bool ScanCodeValidVerify(string barcode) + { + //string position = _stationType; + // switch (position) + // { + // case "下线一检": return First(barcode); + // case "下线二检": return Second(barcode);; + // case "下线点修补": return Third(barcode); + // default:return true; + + // } + return true; + + } + + private bool First(string barcode) + { + if(_isSingleStation == true) + { + ShowHint("当前系统配置为[单工位生产],无法在此工位扫码,请去终检工位进行操作.", false); + return false; + } + + DataTable dt = Function.GetLastResult(barcode); + if (dt.Rows.Count > 0) + { + ShowHint("扫描条码["+ barcode + "]已存在质检记录,无法在[下线一检]工位进行重新扫码." , false); + return false; + } + return true; + } + + private bool Second(string barcode) + { + DataTable dt = Function.GetLastResult(barcode); + if (_isSingleStation == false) + { + if (dt.Rows.Count == 0) + { + ShowHint("扫描条码[" + barcode + "]不存在[下线一检]记录,无法在[下线二检]工位进行扫码.", false); + return false; + } + + DataRow dr = dt.Rows[0]; + if (dr["reason"].ToString().Contains("点修补") && dr["inspectResult"].ToString().Contains("其它")) + { + ShowHint("扫描条码[" + barcode + "]上次质量判定为[点修补],无法进行二检扫码.", false); + return false; + } + if (dr["inspectResult"].ToString().Contains("报废")) + { + ShowHint("上次质量判定为[报废],无法进行二检扫码.", false); + return false; + } + } + + + return true; + } + + /// + /// 点修补扫码校验 + /// + /// + /// + private bool Third(string barcode) + { + string errorMsg = string.Empty; + bool isExsit = Function. GetPointRepairFrWms(barcode, ref errorMsg); + if(isExsit == false) + { + if (!string.IsNullOrEmpty(errorMsg)) + { + ShowHint("在wms系统的查询返修入库记录时发生错误,错误原因:"+errorMsg, false); + return false; + + } + else{ + ShowHint("没有在wms系统的返修入库记录,无法进行点修补.", false); + return false; + } + + } + DataTable dt = Function.GetLastResult(barcode); + if (dt.Rows.Count > 0) + { + if(dt.Rows[0]["reason"].ToString().Contains("点修补") && dt.Rows[0]["inspectResult"].ToString().Contains("其它")) + { + return true; + } + else + { + ShowHint("必须上次质量判定记录为点修补,类型为其它,才能在当前[点修补]工位扫码.", false); + return false; + } + } + else + { + ShowHint("没有初始质量判定记录,无法在[点修补]工位扫码.", false); + return false; + } + + + + } + + /// + /// 设置按钮不可用 + /// + /// + private void ButtonDisable(Control[] controls) + { + foreach (Control c in controls) + { + Button btn = c as Button; + btn.Enabled = false; + } + } + + /// + /// 设置按钮可用 + /// + /// + private void ButtonEnable(Control[] controls) + { + foreach (Control c in controls) + { + Button btn = c as Button; + btn.Enabled = true; + } + } + + private void labWorkClass_Click(object sender, EventArgs e) + { + Function.ChangeWorkClass(labWorkClass); + } + + /// + /// 点击退出 + /// + /// + /// + private void labTime_Click(object sender, EventArgs e) + { + Environment.Exit(0); + } + + /// + /// 清空页面 + /// + private void ClearPage() + { + labProductInfo.Tag = null; + labProductInfo.Text = ""; + //btnAbt.BackColor = Color.LightGray; + //btnRepair.BackColor = Color.LightGray; + + //ClearRadioButton(); + ClearInspect(); + ClearControlColor(SetControlGroup()); + pictureBox2.Controls.Clear(); + panel2.Controls.Clear(); + pictureBox2.Image = null; + txtBarCode.TabIndex = 0; + txtBarCode.Select(); + position = ""; + reason = ""; + lableFP.Text = ""; + _foreighColor = ""; + _foreignPartCode = ""; + _carType = string.Empty; + } + + public void ClearRadioButton() + { + groupBox1.Controls.Clear(); + } + + public void ClearTxtBarcode() + { + txtBarCode.Text = ""; + labProPosition.Text = ""; + } + + public void LoadScreen() + { + DataTable dt = Function2.GetProScreen(_stationNo); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + + } + private void SetPage(DataTable dt) + { + IsHigh = "1"; + lbPlanCode.Text = ""; + lbProductCode.Text = ""; + lbProductName.Text = ""; + + + if (dt != null && dt.Rows.Count > 0) + { + lbPlanCode.Text = dt.Rows[0]["OrderNo"].ToString(); + lbPlanCode.Tag = dt.Rows[0]["ID"].ToString(); + lbProductName.Text = dt.Rows[0]["ProductName"].ToString(); + lbProductCode.Text = dt.Rows[0]["PartNo"].ToString(); + + SetProduceCount(dt.Rows[0]); + } + + } + /// + /// 设置生产数量 + /// + /// + void SetProduceCount(DataRow planRow) + { + int planQty = 0; + int okQty = 0; + int badQty = 0; + int repairQty = 0; + + int.TryParse(planRow["OrderCount"].ToString(), out planQty); + int.TryParse(planRow["OKCount"].ToString(), out okQty); + int.TryParse(planRow["BadCount"].ToString(), out badQty); + int.TryParse(planRow["RepairCount"].ToString(), out repairQty); + lbPlanQty.Text = planQty.ToString(); + lbPlanCompleteQty.Text = (okQty+ badQty).ToString(); + lbOkCount.Text = okQty.ToString(); + lbRepairCount.Text = repairQty.ToString(); + lbBadCount.Text = badQty.ToString(); + } + + private void btnPlanUp_Click(object sender, EventArgs e) + { + LoadPlanScreen(lbPlanCode.Tag?.ToString(), "上一计划"); + txtBarCode.Select(); + txtBarCode.Focus(); + } + + private void btnPlanDown_Click(object sender, EventArgs e) + { + LoadPlanScreen(lbPlanCode.Tag?.ToString(), "下一计划"); + txtBarCode.Select(); + txtBarCode.Focus(); + } + public void LoadPlanScreen(string id, string plan) + { + + DataTable dt = Function2.GetProScreenPlan(id, _stationNo, plan); + if (dt != null && dt.Rows.Count > 0) + { + SetPage(dt); + } + else + { + if (plan == "下一计划") + { + MessageBox.Show("无下一计划"); + txtBarCode.SelectAll(); + txtBarCode.Focus(); + } + else + { + MessageBox.Show("无上一计划"); + txtBarCode.SelectAll(); + txtBarCode.Focus(); + } + } + txtBarCode.SelectAll(); + txtBarCode.Focus(); + } + + private void txtBarCode_DoubleClick(object sender, EventArgs e) + { + txtBarCode.SelectAll(); + } + + } +} diff --git a/PunchingMistake/FrmQualityNew.resx b/PunchingMistake/FrmQualityNew.resx new file mode 100644 index 0000000..3d1eb78 --- /dev/null +++ b/PunchingMistake/FrmQualityNew.resx @@ -0,0 +1,475 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + RK5CYII= + + + \ No newline at end of file diff --git a/PunchingMistake/Function2.cs b/PunchingMistake/Function2.cs new file mode 100644 index 0000000..4161966 --- /dev/null +++ b/PunchingMistake/Function2.cs @@ -0,0 +1,632 @@ +using DBUtility; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PunchingMistake +{ + public class Function2 + { + public static DataTable GetProScreen(string stationNo) + { + DataTable res = new DataTable(); + try + { + string sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.OKCount,a.BadCount,a.RepairCount, c.PartNo1, c.PartNo2, b.IsHigh,d.StationNo + from tb_ZP_MK_Plan a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_Bom_MK c + on b.PartNo = c.PartNo1 + left join tb_Station d + on c.StationNo = d.StationNo + where d.StationNo = '" + stationNo + @"' + and a.State = 1 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (res == null || res.Rows.Count < 1) + { + sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.OKCount,a.BadCount,a.RepairCount, c.PartNo1, c.PartNo2, b.IsHigh,d.StationNo + from tb_ZP_MK_Plan a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_Bom_MK c + on b.PartNo = c.PartNo1 + left join tb_Station d + on c.StationNo = d.StationNo + where d.StationNo = '" + stationNo + @"' + and a.State = 0 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + if (res == null || res.Rows.Count < 1) + { + sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.OKCount,a.BadCount,a.RepairCount, c.PartNo1, c.PartNo2, b.IsHigh,d.StationNo + from tb_ZP_MK_Plan a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_Bom_MK c + on b.PartNo = c.PartNo1 + left join tb_Station d + on c.StationNo = d.StationNo + where d.StationNo = '" + stationNo + @"' + and a.State = 2 + order by CreateTime desc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + return res; + } + catch (Exception ex) + { + LogHelper.WriteLog(ex.ToString() ); + return res; + } + } + + + public static DataTable GetProScreenPlan(string id, string stationNo, string plan) + { + DataTable res = new DataTable(); + try + { + if (plan == "下一计划") + { + #region 查询当前计划时间 + + string time = ""; + string sql; + string sqll = @" select CreateTime from tb_ZP_MK_Plan where ID = '" + id + @"' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqll, null); + if (dt != null && dt.Rows.Count > 0) + { + time = dt.Rows[0][0].ToString(); + time = Tools.NumericParse.StringToDateTime(time).Value.AddSeconds(1).ToString("yyyy-MM-dd HH:mm:ss"); + } + + #endregion + + #region 查询下一计划 + DateTime dtime = DateTime.Now; + DateTime.TryParse(time, out dtime); + sql = @" select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.OKCount,a.BadCount,a.RepairCount, c.PartNo1, c.PartNo2, b.IsHigh,d.StationNo + from tb_ZP_MK_Plan a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_Bom_MK c + on b.PartNo = c.PartNo1 + left join tb_Station d + on c.StationNo = d.StationNo + where d.StationNo = '" + stationNo + @"' + and State <> 3 + and a.CreateTime > '" + dtime.ToString("yyyy-MM-dd HH:mm:ss") + @"' + order by CreateTime asc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + #endregion + } + else if (plan == "上一计划") + { + #region 查询当前计划时间 + + string time = ""; + string sql; + string sqll = @" select CreateTime from tb_ZP_MK_Plan where ID = '" + id + @"' "; + DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqll, null); + if (dt != null && dt.Rows.Count > 0) + { + time = dt.Rows[0][0].ToString(); + //time = Tools.NumericParse.StringToDateTime(time).Value.AddSeconds(-1).ToString("yyyy-MM-dd HH:mm:ss"); + } + + #endregion + + #region 查询上一计划 + DateTime dtime = DateTime.Now; + DateTime.TryParse(time, out dtime); + + sql = @" + select top 1 a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.OKCount,a.BadCount,a.RepairCount, c.PartNo1, c.PartNo2, b.IsHigh,d.StationNo + from tb_ZP_MK_Plan a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_Bom_MK c + on b.PartNo = c.PartNo1 + left join tb_Station d + on c.StationNo = d.StationNo + where d.StationNo = '" + stationNo + @"' + and State <> 3 + and a.CreateTime < '" + dtime.ToString("yyyy-MM-dd HH:mm:ss") + @"' + order by CreateTime asc + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + #endregion + + } + else if (plan == "当前计划") + { + string sql = @" + select a.ID, d.[Des], a.OrderNo, a.PartNo,b.ProductName,a.OrderCount,a.OKCount,a.BadCount,a.RepairCount, c.PartNo1, c.PartNo2, b.IsHigh,d.StationNo + from tb_ZP_MK_Plan a + left join tb_Product b + on a.PartNo = b.PartNo + left join tb_Bom_MK c + on b.PartNo = c.PartNo1 + left join tb_Station d + on c.StationNo = d.StationNo + where a.ID='" + id + @"' + "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + } + + return res; + } + catch (Exception ex) + { + LogHelper.WriteLog(ex.ToString()); + return res; + } + } + + /// + /// 塑件码是否通过了Wms报工 + /// + /// + /// + public static DataTable SearchStockIn(string sjBarCode) + { + DataTable res = new DataTable(); + try + { + string sql = $" select * from tb_StockIn where barcode='{sjBarCode}' and Pass=1"; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch(Exception ex) + { + LogHelper.WriteLog("小件装配,查询StockIn发生异常,异常原因:" + ex.ToString()); + return res; + } + } + + public static DataTable SearchPunchCodeRecord(string sjBarCode) + { + DataTable res = new DataTable(); + try + { + string sql = $" select Top 1 * from tb_Punch_Code_Record where barcode='{sjBarCode}' order by id desc "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteLog("小件装配,查询Punch_Code_Record发生异常,异常原因:" + ex.ToString()); + return res; + } + } + + public static DataTable GetProductInfo(string stockNo) + { + DataTable res = new DataTable(); + try + { + string sql = $" select Top 1 * from tb_Product where StockNo='{stockNo}' order by id desc "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + LogHelper.WriteLog("小件装配,tb_Product,异常原因:" + ex.ToString()); + return res; + } + } + /// + /// 半成品条码,找总成条码 + /// + /// + /// + /// + public static string GetAssemblePartCode(string partCode,string stationNo) + { + DataTable res = new DataTable(); + try + { + string sql = $" select Top 1 * from tb_Bom_MK where PartNo2='{partCode}' and IsPartAssemble=1 and StationNo='{stationNo}' order by id desc "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + if(res .Rows.Count > 1) + { + throw new Exception($"半成品条码[{partCode}]在工位[{stationNo}]上配置存在多个,请检查BOM配置."); + } + else if (res.Rows.Count == 0) + { + throw new Exception($"半成品条码[{partCode}]在工位[{stationNo}]上未进行配置,请检查BOM配置."); + } + else + { + return res.Rows[0]["PartNo1"].ToString(); + } + } + catch (Exception ex) + { + LogHelper.WriteLog("小件装配,在表tb_Bom_MK中根据半成品条码查询总成零件号错误,异常原因:" + ex.ToString()); + throw ex; + } + } + public static DataTable GetBomTable(string assemblePartCode,string stationNo) + { + DataTable res = new DataTable(); + try + { + string sql = $" select Top 1 * from tb_Bom_MK where PartNo1='{assemblePartCode}' and StationNo='{stationNo}' order by id desc "; + res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null); + + return res; + } + catch (Exception ex) + { + LogHelper.WriteLog($"小件装配,总成零件号[{assemblePartCode}],工位[{stationNo}]在表tb_Bom_MK中查询发生异常,异常原因:" + ex.ToString()); + throw ex; + } + } + + + public static string GetStation(string stationNo) + { + string res = ""; + try + { + string sql = @" select [des] from tb_Station where StationNo = '" + stationNo + @"' "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + return res; + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static int SavePartAndProduct_New(string barcode, string BcpID, string ZcID, string OrderNo, string WorkClass, string planID, string SerialNo, string barCode1, string barCode2, string barCode3, string barCode4, string barCode5, string barCode6, string stationId, string description) + { + int res = 0; + try + { + string sql = @" + INSERT INTO [dbo].[tb_Punch_Code_Record] + ([ID] + ,[barcode] + ,[BcpID] + ,[ZcID] + ,[OrderNo] + ,[WorkClass] + ,[CreateTime], PlanID,SerialNo + ,barCode1,barCode2,barCode3 + ,barCode4,barCode5,barCode6,StationId,StationDescription) + VALUES + ((select newid()) + ,'" + barcode + @"' + ,'" + BcpID + @"' + ,'" + ZcID + @"' + ,'" + OrderNo + @"' + ,'" + WorkClass + @"' + ,(select getdate()), '" + planID + @"','" + SerialNo + @"' + ,'" + barCode1 + @"','" + barCode2 + @"','" + barCode3 + @"' + ,'" + barCode4 + @"','" + barCode5 + @"','" + barCode6 + @"','" + stationId + @"','" + description + "@')"; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static string SerialNo(string partNo, string batch) + { + string res = ""; + try + { + string temp_no = partNo + "." + batch; + string sql = @"select top 1 SerialNo from tb_Punch_Code_Record where SerialNo like '" + temp_no + + @"%' order by CreateTime desc"; + object dt = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null) + { + res = dt.ToString(); + } + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + throw ex; + } + + return res; + } + public static int SaveZcCode(string barcode, string partNo) + { + int res = 0; + try + { + string sql = @" update tb_StockIn set ZcCode = '" + partNo + "' where barcode = '" + barcode + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + public static int AddCompleteCount(string ID) + { + int res = 0; + try + { + string sql = " update tb_Plan_Punch set CompleteCount = CompleteCount + 1 where ID = '" + ID + "' "; + res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null); + return res; + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + + public static bool CheckPlanCompleted(string ID) + { + bool res = false; + try + { + string sql = @" + select IsFinish from tb_Plan_Punch where ID = '" + ID + @"' + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + string bb = aa.ToString(); + if (bb == "3") + { + res = true; + } + else + { + res = false; + } + } + return res; + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + public static string GetProductID(string barcode) + { + string res = ""; + try + { + //LogHelper.WriteSysLogBase("[一码到底]扫入条码:" + barcode, MethodBase.GetCurrentMethod().Name); + if (barcode.Length != 20) + { + barcode = UniteBarCodeToOne(barcode); + } + + string sql = @" select ProductID + from tb_Product + where partNo = ( select top 1 paintCode from tb_StockIn where barcode = '" + barcode + @"' ) "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + res = aa.ToString(); + else + { + string sql1 = @" select top 1 productInfo + from tb_InspectResult + where barcode = '" + barcode + @"' + order by createtime desc "; + object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql1, null); + if (bb != null) + { + string color = ""; + string colorInfo = bb.ToString(); + string[] colors = colorInfo.Split(','); + if (colors.Length >= 2) + { + color = colors[2]; + + string sql2 = @" select partNo from tb_Product where stockNo = '" + barcode.Substring(0, 10) + @"' "; + object cc = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql2, null); + if (cc != null) + { + string partNo = cc.ToString(); + string paintCode = partNo.Replace("-P", "") + "-" + color; + string sql3 = @" select ProductID + from tb_Product + where partNo = '" + paintCode + @"' "; + object dd = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql3, null); + if (dd != null) + { + res = dd.ToString(); + } + } + } + } + else + { + + string partNo = "", stockNo = ""; + + if (barcode.Contains('/')) + { + string[] aastr = barcode.Split('/'); + partNo = aastr[0]; + } + else if (barcode.Contains('.')) + { + string[] aastr = barcode.Split('.'); + partNo = aastr[0]; + } + else if (barcode.Length == 20) + { + stockNo = barcode.Substring(0, 10); + } + else + { + partNo = barcode; + } + + string sql3 = ""; + if (partNo != "") + { + sql3 = @"select ProductID + from tb_Product + where partNo = '" + partNo + @"'"; + } + else + { + sql3 = @"select ProductID + from tb_Product + where StockNo = '" + stockNo + @"'"; + } + + object dd = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql3, null); + if (dd != null) + { + res = dd.ToString(); + } + } + } + //LogHelper.WriteSysLogBase("[一码到底]传出ProductID2:" + res, MethodBase.GetCurrentMethod().Name); + return res; + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + public static string UniteBarCodeToOne(string barcode) + { + string res = barcode; + if (!string.IsNullOrWhiteSpace(barcode)) + { + if (barcode.Contains(".")) + { + res = TransToBarCodeOne(barcode); + } + } + return res; + } + public static string TransToBarCodeOne(string barcode) + { + string res = barcode; + try + { + string sql = @" + SELECT TOP 1 OneBarCode FROM v_Code WHERE BarCode = '" + barcode + @"' + "; + object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (aa != null) + { + res = aa.ToString(); + } + else + { + string sql2 = @" SELECT TOP 1 OneBarCode FROM [10.60.101.9].[BBMPT].[dbo].[tb_BarCode] where BarCode = '" + barcode + @"' "; + object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql2, null); + if (bb != null) + { + res = bb.ToString(); + } + } + return res; + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + return res; + } + } + public static string GetPartNoByID(string id) + { + string res = ""; + try + { + string sql = @"select PartNo from tb_Product where ProductID ='" + id + @"'"; + object dt = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null); + if (dt != null) + { + res = dt.ToString(); + } + } + catch (Exception ex) + { + //LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); + } + + return res; + } + } + public static class ScanAll + { + public static bool ScanResult; + public static string barCode1; + public static string barCode2; + public static string barCode3; + public static string barCode4; + public static string barCode5; + public static string barCode6; + public static string partNo1; + public static string partNo2; + public static string partNo3; + public static string partNo4; + public static string partNo5; + public static string partNo6; + } + + public class OtherPart + { + public string productID3 { get; set; } + + public string qty3 { get; set; } + + public string productID4 { get; set; } + + public string qty4 { get; set; } + + public string productID5 { get; set; } + + public string qty5 { get; set; } + + public string productID6 { get; set; } + + public string qty6 { get; set; } + + public string productID7 { get; set; } + + public string qty7 { get; set; } + + public string productID8 { get; set; } + + public string qty8 { get; set; } + + } +} diff --git a/PunchingMistake/Images/assembleHead.png b/PunchingMistake/Images/assembleHead.png new file mode 100644 index 0000000000000000000000000000000000000000..290c9b258f0391fe92346f8d3872c41bc5510bf6 GIT binary patch literal 34708 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 z zTe35;s3<6V)U7l_uY+J}JGYyZLq97k=&NTZy+ivPFC=#JKAzF`VAr*V02szcZ{mO! zdZ6a?oBZ0zvieNR^CauG=boXPBc^2Sro9|)H%w9<>)oQl48<(V{ZjejlVo#^J@H?P z{Vl>75vRzvyd(VbizzA!#CN8(hQ$HsyrUxhGd<wQ;dB z=4I77VuSpYG+U!u<~>_GdTNZRH>O?;M!APDAlB=>Z9QeI7~WU;XH$?+ zW_s#?VQ={xr~HTSKO6d~iTGPbF*MGS*9}!bep@QTHK;u}CC)VDxFl9?G>f=y^3R|c z%Y^yNjPx+2p%6|v@&qkVKp*Z~RK5;+z0~EKjn|n!0j3rDVx1|8Z}F2FapWyZv|-z! z=L7GMc7$YFsapmr9{H}iY2&bYR&-g69^KOQk?M94F_+xbg&4u-yf>L=cxJ?Qrx=XF z_X?`2yv6R5=oswr#g`0fvU34xZ`361D!Sjt-QKp{g;@2}4 zlnSGYFR++DIhr1|_ERya{qB*}biAG#i9ZEh&PKXN1X`)s)9WI+`GQy`*a&7d^E38- z;8r*Ltk*>YcW;zI;TNBJ*aLp*?cnXdujW&Occ$-e$9rioGI)J{QKv*9!kQ?nkCm?? zI`NRz?l+mjN3rZ)^9C5wbgq??c)I{+qx}Yjk4IB=1{7=)k1|uwPp5#Mu8K-c!#i61 zph{@m@1&^0q1ATufVwKv3ZiKtd)#C?bU+RqN7MP@9r}IJgla{yl2cs* zQ#$qhJ>hW0?ZlV=X2_`^zxSf;lnLWDjz5o4*!k}c9o~%5bbM(08I2jh!#NkjalakC<&{^?^4fq{qS~?=j?ZZ(8O+Ked`?<~=ug5fxUUpMR%US>Zz+y{;RHx~8Tq{mGPWCYNlte2ZBn@2?gu0wOf4oaA&zLGf+wt6@W%~s^WAmZoC26=1 z;Z=6iJOB)W2Al$hn3`8|Z)&;dmzn-K*g>Z@iOZ<|@6!XHK_ta!`Phb}|C)0*iprMn{`CHlN<}>GhRyj{Ywn|66KkILtNI5l1xea`3c z?SF`t^Gk6mjv2)MG-~D3TN4T1m^Fn|^Dt*?$=T2GR10nnhZVFY@5G!o)w}Viy zJhham>Y*D-j0L7%Pdq=fNweb<_OoU%qU;a2tWZ}e{*?#OEr%<-_&4eyUa!F=nxra#TX*Jd0zW<6#tJzMEjcz&s ziUNlSvGwqP$NKx4?gSS+CUkbS+x#Eo>^_-KG!GepyXOQZTS|a}B)G5y_Y(m|g46O4 z{BUDeV!~z41$5lPlZlQxL^ITG_P8tnKnGqBVJX6@k8<63((wH;+dFi#7OkZAtPNC$ zdL{M$&6JwwNUhqYE-ht`W@LM=K3DT-%M+$>?teFu8ghUquQTXNc#5#y`v$vMuqKN@ zUwW|Z>?!LO`$|A_To=IVdCI6t5P}cek?516fH4 z4#o{$md;o~qCsuB564?|2P7D1+@6o+1(XMSF$ZXWwWOX#2P($A3TMlxWPuqxBrN(1 zdd2o?U^+O6HeG6#QWBB`RuOj)Yuarkl!y6%<6TMZLHcYe4x|3Px2E8og8q^+7@Br? zk&)JWHFV$Ia-lzgAIQ&T&a!r`g7AU{k(87~LZLsw*T7ZyZ7+;veZpU>$|W7xteg-| zX$m*gl_OK1^53XDGnx=7G?}n#;s$%R?-frN0G&{g#?F{kNfeWRZvyHjj8uN2-6X~3 z77Iw%DU?JT|EkM%FpZr>JZLmmNTB`B-;u>yV%l?80X^@|yY6 z6~um@%dQ^@w)+{)*}liP;1iikay=p}{i?O)k*k;YG`wBn<#jEu_vD5@y>CWF13(|L zIJ)vcE#`xIHPXX51h3a6h&vPmc8!Q0rY}D?O;kXUFWghI88GegT5*=5OKn1fX)F!) z--?`G$BArSd30095dKgu(#wzsUIgU2m0JFiRftz2s3RW=RQ*G#jqu>ozn;4UPn_KNgl zXs|4|;8+JWn7S0szQ%QOa6xy$U{tVfnB288-hZw*@QS5X{smpDA%mmee*Z(wx+CR( zgA&&)OpY7SJ=ZLKGbjSKT(PM~grxh;rI`1GJztIypBnzOW9e&RFGd$24~|Vokbn%m zLiKqPOgpzm+|PrB3S48c5nkdDuRSB{TFw1c(1YXdu zUU2)^uCU+z*fdik@SCMtjy(kHFc}h5N*8=cJtn%Ur7)~NOWStvL-$A+yvRUo^A|ns zX_n-tos%v`+X^HOcn{le^0XZ~BP5sP>5BvpkM|%PZ$FKPKRtJ1+~a8;K@gkSOF(V@ za$3S8VbkDG4DejZOVe_Cnjv}}hQ7H?18i{3$fzXOTZdc4XY4($jxC0-sRQ}y-Cczr zK;$C(s-Ml5%2@!LK;$Vi11MYx7E~-gF>!pEUfG|z4cNjQR9Wtb`X^Yku zwjP_Sir(#R+L%o2V1nr?`zp@lDiy`O*fhZJ81lAumr&PnUNmxS`s#0P9*y{wu>8|E zqFiVyx8PH>_ck5;3swhm3D;rjbTK)l+~_E?aDmY3C-5psejA@GQR3%r#Pc7#B)n-K zBiGn#g_!hr>|fr~HL$j)uG>=h=Zx$$tlx|KYk&MPK?l-Ax;qNL|BQYD+kY~~%ApD& zpq&DdXi3m3Pf)Cnb)&Lr&A+}|fECGdB?%YOQJYS-87_3R}OVgYSHwop0eDaa?$`9&^&%lqku#8Zlzz?tg2cxN3cK`qY literal 0 HcmV?d00001 diff --git a/PunchingMistake/Images/assembleLine.png b/PunchingMistake/Images/assembleLine.png new file mode 100644 index 0000000000000000000000000000000000000000..faa0903ba516bab9d0ccb3c13924156b01c2d9f8 GIT binary patch literal 3061 zcmZ{mc{CJiAIE2evL;!xWl5%_$a3x3u9>lARFbVwjHNKPnXIK@BJ0?h;hG`K*mr{@ z$<7cNOCmDHzGm(9{&(Mdd;fTr-#Op&e9v=!pYL-X%xzOc4%Q2-004jk0@jBC06>+K zeZm=rleu*MLiEW3M8FJnfn%MrAtwckC)f%B00@r!cK`(jyOsd}wseTT&YghFLt%gsOl+i5YfGVhAmvxfjwQ=tCYU@?oPH4V z3axwG1+PBrmiOLPthee6L;{xNrdy6?@qb#Ye|8#0nvDp#@npDp9Yi^Dl^4)w+XjX~ zilFwxT@|wEG(_TR=Js8su|jF}<_n!c$hb(<)9l80A7bhYg6jjkFlua}uiLUe_(?;`kamH&goUkETp&5LyRMww5sUtX(yE z5vw~bzoKgU_DGY1{Pu`5wS}Px+xrXClV?M;rw;s6O`dI&WLNpptONN0ml9PfMobif zH3Wm!Z)%TqwlBq4CpKjMVFjOi0AJwta;ftu-rj+EuzO!K>AJO*G^JkyU zcDQwd?Rd$RG0c84X+`MT`&q5k)>^y{{ukri`c7+mRyQv5xlmQ$^Vz<#bO)b-k2NW@GA?Tl~>e=kF)huqSMC8w)*2 z&gIcfr0d6eSs|;#6$79n(a7~|vPUxgrDBg%SPtC5)~$$Ylb{EpecO_nEN$gjld3)~ zb4e=muc{AJT#S^;wu>vg2@4h)p=KnzO2yj;X=ZVQduObtoWeoV`ZRPC(yK_JAU4Hyv^h=V?(1cqe5a6ok)U`T_h3KM#$!))NXiOHq>VG*J|KJK|^CeiTK{9 ze9p9*meg3>mgXvWoV=8Yb%4yk*1ym3Ju}Td^z9-oV(%%1vz0;kl%55*INM4(BrJH1 z4%twnTh@A>7VWA!G5}UWQ(*pDf&3P%fVO?Ih6E8n)Pn+{5m*K+Cx}T#1jc$>jlh%b z0|woq#lb=;;(rtLZEgrV;cW|;0WUX^43R5Nfp&q9xGY0q0ZmvRFOhNZGQXF9zOp0G3<<8N~G(lCHD$!?1!}>R|9|s=Q0BysFa~(Xhg-g z&@HCb4f$E33j{W=p484*VUk?=H*IMFR?c5@_lj#g9EZ=!($F=eiK;qj zv{#8HJL_r_U+rltpYm1mnP}1LA}BmynjDy1vZJ%f-&5DjlYKEAVym2q#K91cdX)eI zqW(ogn`AG7Eb@3hqGu;mP->Hu>FTz=5><) zkClJJM9Ha-AKRxGf6cfdgtE-O4Wrsz-iR);QY7YKj{69;J%P$8n%bo%&qzg7*re~ zl(AgeLknX8(}Ki_Wun3EGdhr?Po))If#vRuv%m5kl6QikVpFbP6(tB|5~+|izPDG2`qcLx8C5-Y66(~T^36@l^{t_$h0rCf&i*P* zjZ>axC$b$dwaQx({}dSw)|##=FjB4NHZHP}FpdCTeUZlaESD{(5>2WJAZdO2v%|MZ z6f;;ZLE%z29OQNdO^7|=CX<9=9!m}DP6ui0TEo>DwrRiuKALQR?pJTyV6n5fN+MBzbgkP#7*=lS0^&Jq6 zVb7IU4`nz28nP0}P*9U8JsS76=rVsi0V}7`JuntBIL#DrpI`{}W$f%pd#1y zH4MeLH@B%)QI17WwSb4F-OgIWx_-xz(tIZ=IGyFI)>yhN{*QiNrEu;QKVoJg@I2)0 zD>=40A~JzN@2(VYE{YL&rl&>%x6i^@J)gNX@1I1eu2#wZ=;hy@*_iI@d$cmDejP4uct&=LvqQ0=6aa;G+lK{iAQ-rL6wnuV(xewJh9m^!_7q zjMcVIB2AvIirmjB8R9Uvy%V~uO}RI6@tcKQ7ZjqGll2!T|Qzm zm#eeS|4_w#H;We5OL*h0$l|8c`h-4z-5Z;t&{MfYH83F0@aiW}3M+EseUFRZ7(FoR z-;f$t=tC$eAO{}}U3OC?%2ua<-xngP!FPVR8BDGUF$EA@%D+VQ-C6ZjlJ@BEvskp_ zy%W@ch5XpsGy3+Ze_l2kSvfU7^|;Yy=1t>}lAmMtt$Ny3Ys`I!u(GYn2S=hZbj@3` z#$(@Za^W*eZ1J`v5~G0>z1WLYi8A2oT<>Emk(Rr($ai5S31%XlKRn#~EtvYecOxtw z)xn`J!@mdp^0GkTLnmC0FI_M}-5arh%F#(7;-}(B34%-Cu{E zujnJxiLBgh$YQu=j)$_ZF`Cy-M8$~Ry>55!dPrLkKYEzm|8Zqwo(MBf!^&%ksRIcfGAINs9F1oJD2q_G9}#xk=?{p$B4) zGBxQ>mEtTSy)L}Sv#2Qm8OXmf88!`CCOBSEs`4nBQf1>Na8;n&R34*@2AV| zF5TY3++an;+CuR8!@V5(oD`|!no00D3B + //保存日志的文件夹 + // + private static string logPath = AppDomain.CurrentDomain.BaseDirectory + @"log\"; + /// + /// 写日志 + /// + /// + /// + public static void WriteLog(string msg, string errorFile = "") + { + try + { + if (string.IsNullOrEmpty(msg)) + { + return; + } + else + { + msg = string.Format("程序版本号:{0},Time:{1},Message:{2}", CodeVersion, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), msg); + } + //如果不存在log文件夹 则创建 + if (!Directory.Exists(logPath)) + { + Directory.CreateDirectory(logPath); + } + + StreamWriter sw = File.AppendText(logPath + errorFile + DateTime.Now.ToString("yyyyMMdd") + ".Log"); + sw.WriteLine(msg); + sw.Close(); + } + catch (Exception ex) + { + + } + } + } +} diff --git a/PunchingMistake/PunchingMistake.csproj b/PunchingMistake/PunchingMistake.csproj index 8fd4af9..618b3e4 100644 --- a/PunchingMistake/PunchingMistake.csproj +++ b/PunchingMistake/PunchingMistake.csproj @@ -32,11 +32,19 @@ 4 + + DLL\Interop.grdes6Lib.dll + True + False True bin\Debug\Interop.grdesLib.dll + + DLL\Interop.gregn6Lib.dll + True + ..\..\BjbmptMesNgccNew\Stone.Common.Dlls\Interop.grproLib.dll True @@ -58,18 +66,33 @@ + + ReportHelper.cs + Form Form1.cs + + Form + + + FrmAssemble.cs + Form FrmLogin.cs + + Form + + + FrmProScreen3.cs + Form @@ -95,9 +118,15 @@ Form1.cs + + FrmAssemble.cs + FrmLogin.cs + + FrmProScreen3.cs + FrmQualityNew.cs @@ -125,6 +154,7 @@ Settings.settings True + @@ -150,6 +180,12 @@ PaintingPC + + + + + +