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==
+
+
+
+
+ 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
+ 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 0000000..290c9b2
Binary files /dev/null and b/PunchingMistake/Images/assembleHead.png differ
diff --git a/PunchingMistake/Images/assembleLine.png b/PunchingMistake/Images/assembleLine.png
new file mode 100644
index 0000000..faa0903
Binary files /dev/null and b/PunchingMistake/Images/assembleLine.png differ
diff --git a/PunchingMistake/LogHelper.cs b/PunchingMistake/LogHelper.cs
new file mode 100644
index 0000000..720a426
--- /dev/null
+++ b/PunchingMistake/LogHelper.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace PunchingMistake
+{
+ public class LogHelper
+ {
+ private static string CodeVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString().Trim();
+
+ //
+ //保存日志的文件夹
+ //
+ 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
+
+
+
+
+
+