Example #1
0
        //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();
                }
            }
        }