//MAC扫描过站 private void tabControl2_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { //---开始MAC扫描 ScanDataInitial(); setRichtexBox("-----开始MAC过站扫描--------"); string tt_smalltask = this.textBox1.Text.Trim(); string tt_bigtask = this.textBox9.Text.Trim(); string tt_scanmac = this.textBox2.Text.Trim(); string tt_shortmac = tt_scanmac.Replace(":", ""); //第一步位数判断 Boolean tt_flag1 = false; tt_flag1 = CheckStrLengh(tt_scanmac, this.textBox3.Text); //第二步包含符判断 Boolean tt_flag2 = false; if (tt_flag1) { tt_flag2 = CheckStrContain(tt_scanmac, this.textBox4.Text.Trim()); } //第三步 检查模板 Boolean tt_flag3 = false; if (tt_flag1 && tt_flag2) { tt_flag3 = getPathIstrue(tt_path); if (tt_flag3) { setRichtexBox("3、已找到一个铭牌模板,:" + tt_path + ",goon"); } else { setRichtexBox("3、没有找到铭牌模板,:" + tt_path + ",over"); PutLableInfor("没有找到铭牌模板,请检查!"); } } //第四步第一次数量检查(同时生产的话会出现问题) Boolean tt_flag4 = false; int tt_tasknumber = int.Parse(this.label12.Text); if (tt_flag1 && tt_flag2 && tt_flag3) { int tt_productnum = int.Parse(this.label59.Text); if (tt_productnum < tt_tasknumber) { tt_flag4 = true; setRichtexBox("4、第一次数量检查,已获取序列号生产数量:" + tt_productnum.ToString() + ",小于计划数量:" + tt_tasknumber.ToString() + ",还可以再生产gong"); } else { setRichtexBox("4、第一次数量检查,已获取序列号生产数量:" + tt_productnum.ToString() + ",大于等于计划数量:" + tt_tasknumber.ToString() + ",不能再生产gong"); PutLableInfor("生产数量已满不能再生产了!"); } } //第五步第二次数量检查 Boolean tt_flag5 = false; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4) { string tt_sql5 = "select count(1),0,0 from odc_alllable " + "where taskscode = '" + tt_smalltask + "' "; string[] tt_array5 = new string[3]; tt_array5 = Dataset1.GetDatasetArray(tt_sql5, tt_conn); int tt_productnum1 = int.Parse(tt_array5[0]); if (tt_productnum1 < tt_tasknumber) { tt_flag5 = true; setRichtexBox("5、第二次数量检查,已获取序列号生产数量:" + tt_productnum1.ToString() + ",小于计划数量:" + tt_tasknumber.ToString() + ",还可以再生产gong"); } else { setRichtexBox("5、第二次数量检查,已获取序列号生产数量:" + tt_productnum1.ToString() + ",大于等于计划数量:" + tt_tasknumber.ToString() + ",不能再生产gong"); PutLableInfor("生产数量已满不能再生产了!"); } } //第六步流程检查 Boolean tt_flag6 = false; string tt_gyid = this.label54.Text; string tt_ccode = this.label56.Text; string tt_ncode = this.label57.Text; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5) { if (tt_ccode == "" || tt_ncode == "") { setRichtexBox("6、该工单没有配置流程," + tt_ccode + "," + tt_ncode + ",over"); PutLableInfor("没有获取到当前待测站位,及下一站位,请检查"); } else { tt_flag6 = true; setRichtexBox("6、该工单已配置流程," + tt_ccode + "," + tt_ncode + ",goon"); } } //第七步查找关联表数据 Boolean tt_flag7 = false; string tt_hostlable = ""; string tt_smtaskscode = ""; string tt_longmac = ""; string tt_oldtype = ""; string tt_id = ""; string tt_gpsn = ""; string tt_pcba = ""; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5 && tt_flag6) { string tt_sql7 = "select hostlable,maclable,smtaskscode,bprintuser,id,ageing,shelllable,pcbasn from odc_alllable " + "where hprintman = '" + tt_bigtask + "' and taskscode = '" + tt_smalltask + "' and maclable = '" + tt_shortmac + "' "; DataSet ds7 = Dataset1.GetDataSet(tt_sql7, tt_conn); if (ds7.Tables.Count > 0 && ds7.Tables[0].Rows.Count > 0) { tt_flag7 = true; tt_hostlable = ds7.Tables[0].Rows[0].ItemArray[0].ToString(); //主机条码 tt_shortmac = ds7.Tables[0].Rows[0].ItemArray[1].ToString(); //短MAC tt_smtaskscode = ds7.Tables[0].Rows[0].ItemArray[2].ToString(); //移动串号 tt_longmac = ds7.Tables[0].Rows[0].ItemArray[3].ToString(); //长MAC tt_id = ds7.Tables[0].Rows[0].ItemArray[4].ToString(); //行ID tt_oldtype = ds7.Tables[0].Rows[0].ItemArray[5].ToString(); //老化状态 tt_gpsn = ds7.Tables[0].Rows[0].ItemArray[6].ToString(); //GPSN tt_pcba = ds7.Tables[0].Rows[0].ItemArray[7].ToString(); //单板号 setRichtexBox("7、关联表查询到一条数据,hostlable=" + tt_hostlable + ",mac=" + tt_shortmac + ",smtaskscode=" + tt_smtaskscode + ",id=" + tt_id + ",老化ageing=" + tt_oldtype + ",goon"); } else { setRichtexBox("7、关联表没有查询到数据,over"); PutLableInfor("关联表没有查询到数据,请检查!"); } } //第八步 查找站位信息 Boolean tt_flag8 = false; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5 && tt_flag6 && tt_flag7) { string tt_sql8 = "select count(1),min(ccode),min(ncode) from odc_routingtasklist " + "where pcba_pn = '" + tt_shortmac + "' and napplytype is null "; string[] tt_array8 = new string[3]; tt_array8 = Dataset1.GetDatasetArray(tt_sql8, tt_conn); if (tt_array8[0] == "1") { if (tt_array8[2] == tt_ccode) { tt_flag8 = true; setRichtexBox("8、该单板有待测站位,站位:" + tt_array8[1] + "," + tt_array8[2] + ",可以过站 goon"); } else { setRichtexBox("8、该单板待测站位不在" + tt_ccode + ",站位:" + tt_array8[1] + "," + tt_array8[2] + ",不可以过站 goon"); PutLableInfor("该单板当前站位:" + tt_array8[2] + "不在" + tt_ccode + "站位!"); } } else { setRichtexBox("8、没有找到待测站位,或有多条待测站位,流程异常,over"); PutLableInfor("没有找到待测站位,或有多条待测站位,流程异常!"); } } //第九步查询MACINFO信息 Boolean tt_flag9 = false; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5 && tt_flag6 && tt_flag7 && tt_flag8) { tt_flag9 = true; setRichtexBox("9、查找Macinfo表信息过 goon"); } //第十步物料追溯添加 Boolean tt_flag10 = false; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5 && tt_flag6 && tt_flag7 && tt_flag8 && tt_flag9) { tt_flag10 = true; setRichtexBox("10、物料追溯记录过,gong"); } //第十一步是否获取主机条码判断 Boolean tt_flag11 = false; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5 && tt_flag6 && tt_flag7 && tt_flag8 && tt_flag9 && tt_flag10) { if (tt_hostlable == tt_shortmac) { tt_flag11 = true; setRichtexBox("10、该条码主机条码:" + tt_hostlable + ",数据与MAC:" + tt_shortmac + "一致,还没有获取主机条码,gong"); } else { setRichtexBox("10、该条码主机条码:" + tt_hostlable + ",数据与MAC:" + tt_shortmac + "不一致,可能已获取主机条码,ober"); setRichtexBox("10、可能已获取主机条码:" + tt_hostlable + ",请确认"); } } //第十二步开始过站 Boolean tt_flag12 = false; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5 && tt_flag6 && tt_flag7 && tt_flag8 && tt_flag10 && tt_flag11) { string tt_username = STR; tt_flag12 = Dataset1.FhwifSnInStation(tt_smalltask, tt_bigtask, tt_username, tt_hostlable, tt_shortmac, tt_gyid, tt_ccode, tt_ncode, tt_conn); if (tt_flag12) { setRichtexBox("12、该产品过站成功,请继续扫描,ok"); } else { setRichtexBox("12、过站不成功,事务已回滚"); PutLableInfor("过站不成功,请检查或再次扫描!"); } } //第十三站:查询身程序序列号 Boolean tt_flag13 = false; string tt_boxlable = ""; if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5 && tt_flag6 && tt_flag7 && tt_flag8 && tt_flag10 && tt_flag11 && tt_flag12) { string tt_sql13 = "select count(1), min(boxlable),0 from odc_alllable " + "where taskscode = '" + tt_smalltask + "' and hprintman = '" + tt_bigtask + "' and maclable = '" + tt_shortmac + "' "; string[] tt_array13 = new string[3]; tt_array13 = Dataset1.GetDatasetArray(tt_sql13, tt_conn); if (tt_array13[0] == "1") { tt_flag13 = true; tt_boxlable = tt_array13[1]; this.label67.Text = tt_boxlable; setRichtexBox("13、生产序列号获取成功,已获取序列号:" + tt_boxlable + ", goon"); } else { setRichtexBox("13、生产序列号获取不成功,序列号:" + tt_boxlable + ", over"); PutLableInfor("生产序列号获取不成功,请检查!"); } } //最后判断 if (tt_flag1 && tt_flag2 && tt_flag3 && tt_flag4 && tt_flag5 && tt_flag6 && tt_flag7 && tt_flag8 && tt_flag10 && tt_flag11 && tt_flag12 && tt_flag13) { //条码信息 this.label42.Text = tt_pcba; //单板号 this.label43.Text = tt_boxlable; //主机条码 this.label44.Text = tt_smtaskscode; //移动串号 this.label45.Text = tt_shortmac; //短MAC this.label46.Text = tt_longmac; //长MAC this.label47.Text = tt_gpsn; //GPSN //生产节拍 getProductRhythm(); //打印 GetParaDataPrint(1); GetProductNumInfo(); CheckStation(tt_shortmac); this.richTextBox1.BackColor = Color.Chartreuse; PutLableInfor("过站成功,请继续扫描!"); textBox2.Focus(); textBox2.SelectAll(); } else { this.richTextBox1.BackColor = Color.Red; textBox2.Focus(); textBox2.SelectAll(); } } }