Browse Source

seewo 验证

callm 1 year ago
parent
commit
c63b8ca6f5

+ 3 - 3
UAS_MES_PW/FunctionCode/Make/Make_FeedingCollection.cs

@@ -236,7 +236,7 @@ namespace UAS_MES_NEW.Make
                                 //刷新界面值
                                 sql.Clear();
                                 sql.Append("select mcd_inqty,ma_qty-mcd_inqty mcd_remainqty ");
-                                sql.Append("from make left join makecraftdetail_view on mcd_macode=ma_code where ");
+                                sql.Append("from make left join makecraftdetail on mcd_macode=ma_code where ");
                                 sql.Append("ma_code='" + oMakeCode + "' and mcd_stepcode='" + User.CurrentStepCode + "'");
                                 dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                                 BaseUtil.SetFormValue(Controls, dt);
@@ -377,7 +377,7 @@ namespace UAS_MES_NEW.Make
             sql.Append("sp_regex,max(pr_detail)pr_detail,max(substr(pr_spec,0,20))pr_spec from stepproduct left join product on pr_code=sp_fsoncode where ");
             sql.Append("sp_bomversion='" + ma_bomversion.Text + "' and sp_craftcode='" + ms_craftcode.Text + "' and sp_stepcode='" + User.CurrentStepCode + "' ");
             sql.Append("And sp_mothercode ='" + ma_prodcode.Text + "' and sp_tracekind=1 and not exists(select 1 from craftmaterial where ");
-            sql.Append("cm_sncode in (select '" + ms_firstsn + "' from dual union select sn from makesnrelation where firstsn='" + ms_firstsn + "') and cm_makecode='" + ma_code.Text + "' and cm_fsoncode=");
+            sql.Append("cm_sncode in (select '" + ms_firstsn + "' from dual ) and cm_makecode='" + ma_code.Text + "' and cm_fsoncode=");
             sql.Append("sp_fsoncode and cm_status=0) group by sp_fsoncode order by SP_DETNO asc");
             dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
             code.Clear();
@@ -536,7 +536,7 @@ namespace UAS_MES_NEW.Make
                     mcd_remainqty.Text = "";
                     sql.Clear();
                     sql.Append("select mcd_inqty,ma_qty-mcd_inqty mcd_remainqty ");
-                    sql.Append("from make left join makecraftdetail_view on mcd_macode=ma_code where ");
+                    sql.Append("from make left join makecraftdetail on mcd_macode=ma_code where ");
                     sql.Append("ma_code='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'");
                     DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                     if (dt.Rows.Count > 0)

+ 1 - 0
UAS_MES_PW/FunctionCode/Make/Make_GetTestFileData.Designer.cs

@@ -327,6 +327,7 @@ namespace UAS_MES_NEW.Make
             // 
             // WatchPath
             // 
+            this.WatchPath.Enabled = false;
             this.WatchPath.Location = new System.Drawing.Point(1367, 785);
             this.WatchPath.Name = "WatchPath";
             this.WatchPath.Size = new System.Drawing.Size(258, 35);

+ 79 - 33
UAS_MES_PW/FunctionCode/Make/Make_GetTestFileData.cs

@@ -77,29 +77,43 @@ namespace UAS_MES_NEW.Make
                 }
                 if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage))
                 {
+                    DataTable dt1 = new DataTable();
+                    dt1 = (DataTable)dh.ExecuteSql("select 1 from makeserial where ms_sncode='" + sncode.Text + "'", "select");
+                    if (dt1.Rows.Count == 0)
+                    {
+                        OperateResult.AppendText("序列号" + sncode.Text + "不存在\n", Color.Red);
+                        return;
+                    }
                     //if (LogicHandler.CheckStepSNAndMacode("", User.UserSourceCode, sncode.Text, User.UserCode, out omakeCode, out oMsid, out oErrorMessage))
                     //{
                     ma_code.Text = omakeCode;
                     LoadCollectedNum();
                     //发送对应平台的指令
-                    //if (MTK.Checked)
-                    //{
-                    //    BaseUtil.GetDataFromDevice("MTK");
-                    //}
-                    //else
-                    //{
-                    //    BaseUtil.GetDataFromDevice("ZHANXUN");
-                    //}
+                    if (MTK.Checked)
+                    {
+                        BaseUtil.GetDataFromDevice("MTK");
+                    }
+                    else
+                    {
+                        BaseUtil.GetDataFromDevice("ZHANXUN");
+                    }
                     string ms_prodcode = dh.getFieldDataByCondition("makeserial", "ms_prodcode", "ms_id='" + oMsid + "'").ToString();
                     DataTable dt = new DataTable();
                     if (Directory.Exists(Application.StartupPath + "/" + DateTime.Now.ToString("yyyy-MM-dd") + @"/" + sncode.Text))
                     {
                         DirectoryInfo di = new DirectoryInfo(Application.StartupPath + "/" + DateTime.Now.ToString("yyyy-MM-dd") + @"/" + sncode.Text);
-                     //   di.Delete(true);
+                        FileInfo[] file = di.GetFiles();
+                        for (int i = 0; i < file.Length; i++)
+                        {
+                            File.Delete(file[i].FullName);
+                        }
                     }
-                    //BaseUtil.GetDataFromDevice("GETFILE", WatchPath.Text + " ./" + DateTime.Now.ToString("yyyy-MM-dd") + @"/" + sncode.Text);
+                    BaseUtil.GetDataFromDevice("GETFILE", WatchPath.Text + " ./" + DateTime.Now.ToString("yyyy-MM-dd") + @"/" + sncode.Text);
                     string[] files = Directory.GetFiles(Application.StartupPath + "/" + DateTime.Now.ToString("yyyy-MM-dd") + @"/" + sncode.Text + "", "*.csv");
-
+                    if (files.Length == 0)
+                    {
+                        files = Directory.GetFiles(Application.StartupPath + "/" + DateTime.Now.ToString("yyyy-MM-dd") + @"/" + sncode.Text + "/factory", "*.csv");
+                    }
                     if (!BaseUtil.OpenCSVFile(ref dt, files[0]))
                     {
                         if (files.Length > 1)
@@ -110,34 +124,66 @@ namespace UAS_MES_NEW.Make
                     }
                     //移除标题行
                     dt.Rows.RemoveAt(0);
-                    //设置列名绑定数据
-                    dt.Columns[0].ColumnName = "std_class";
-                    dt.Columns[1].ColumnName = "std_testresult";
-                    dt.Columns[2].ColumnName = "std_sn";
-                    dt.Columns[3].ColumnName = "std_mac";
-                    dt.Columns[4].ColumnName = "std_bt";
-                    dt.Columns[5].ColumnName = "std_imei1";
-                    dt.Columns[6].ColumnName = "std_imei2";
-                    dt.Columns[7].ColumnName = "std_googlekey";
-                    dt.Columns[8].ColumnName = "std_videotest";
-                    dt.Columns[9].ColumnName = "std_version";
-                    if (dt.Columns.Count > 11)
+                    if (dt.Columns.Count == 12 || dt.Columns.Count == 13)
                     {
+                        //设置列名绑定数据
+                        dt.Columns[0].ColumnName = "std_class";
+                        dt.Columns[1].ColumnName = "std_testresult";
+                        dt.Columns[2].ColumnName = "std_sn";
+                        dt.Columns[3].ColumnName = "std_mac";
+                        dt.Columns[4].ColumnName = "std_bt";
+                        dt.Columns[5].ColumnName = "std_imei1";
+                        dt.Columns[6].ColumnName = "std_imei2";
+                        dt.Columns[7].ColumnName = "std_googlekey";
+                        dt.Columns[8].ColumnName = "std_videotest";
+                        dt.Columns[9].ColumnName = "std_version";
                         dt.Columns[10].ColumnName = "std_rom";
                         dt.Columns[11].ColumnName = "std_ram";
+                        if (dt.Rows.Count > 0)
+                        {
+                            PSN.Text = dt.Rows[0]["std_sn"].ToString();
+                            if (sncode.Text != PSN.Text)
+                            {
+                                OperateResult.AppendText("扫描SN【" + sncode.Text + "】和设备读取SN【" + PSN.Text + "不相符】\n", Color.Red);
+                                BaseUtil.CleanControls(this.Controls);
+                                WatchPath.Text = "/sdcard/factory";
+                                return;
+                            }
+                            MAC.Text = dt.Rows[0]["std_mac"].ToString().Replace(":", "").ToUpper();
+                            BT.Text = dt.Rows[0]["std_bt"].ToString().Replace(":", "").ToUpper();
+                            IMEI1.Text = dt.Rows[0]["std_imei1"].ToString().Replace("null", "").Replace("unknow", "");
+                            IMEI2.Text = dt.Rows[0]["std_imei2"].ToString().Replace("null", "").Replace("unknow", "");
+                            GoogleKey.Text = dt.Rows[0]["std_googlekey"].ToString().Replace("null", "").Replace("unknow", "").ToUpper();
+                            Aging.Text = dt.Rows[0]["std_videotest"].ToString().Replace("null", "").Replace("unknow", "").ToUpper();
+                            Version.Text = dt.Rows[0]["std_version"].ToString().Replace("null", "").Replace("unknow", "");
+                            ram.Text = dt.Rows[0]["std_ram"].ToString().Replace("null", "").Replace("unknow", "");
+                            rom.Text = dt.Rows[0]["std_rom"].ToString().Replace("null", "").Replace("unknow", "");
+                        }
                     }
-                    if (dt.Rows.Count > 0)
+                    if (dt.Columns.Count == 9 || dt.Columns.Count == 8)
                     {
-                        PSN.Text = dt.Rows[0]["std_sn"].ToString();
-                        MAC.Text = dt.Rows[0]["std_mac"].ToString().Replace(":", "").ToUpper();
-                        BT.Text = dt.Rows[0]["std_bt"].ToString().Replace(":", "").ToUpper();
-                        IMEI1.Text = dt.Rows[0]["std_imei1"].ToString().Replace("null", "").Replace("unknow", "");
-                        IMEI2.Text = dt.Rows[0]["std_imei2"].ToString().Replace("null", "").Replace("unknow", "");
-                        GoogleKey.Text = dt.Rows[0]["std_googlekey"].ToString().Replace("null", "").Replace("unknow", "").ToUpper();
-                        Aging.Text = dt.Rows[0]["std_videotest"].ToString().Replace("null", "").Replace("unknow", "").ToUpper();
-                        Version.Text = dt.Rows[0]["std_version"].ToString().Replace("null", "").Replace("unknow", "");
-                        if (dt.Columns.Count > 11)
+                        //设置列名绑定数据
+                        dt.Columns[0].ColumnName = "std_class";
+                        dt.Columns[1].ColumnName = "std_testresult";
+                        dt.Columns[2].ColumnName = "std_sn";
+                        dt.Columns[3].ColumnName = "std_mac";
+                        dt.Columns[4].ColumnName = "std_bt";
+                        dt.Columns[5].ColumnName = "std_version";
+                        dt.Columns[6].ColumnName = "std_rom";
+                        dt.Columns[7].ColumnName = "std_ram";
+                        if (dt.Rows.Count > 0)
                         {
+                            PSN.Text = dt.Rows[0]["std_sn"].ToString();
+                            if (sncode.Text != PSN.Text)
+                            {
+                                OperateResult.AppendText("扫描SN【" + sncode.Text + "】和设备读取SN【" + PSN.Text + "不相符】\n", Color.Red);
+                                BaseUtil.CleanControls(this.Controls);
+                                WatchPath.Text = "/sdcard/factory";
+                                return;
+                            }
+                            MAC.Text = dt.Rows[0]["std_mac"].ToString().Replace(":", "").ToUpper();
+                            BT.Text = dt.Rows[0]["std_bt"].ToString().Replace(":", "").ToUpper();
+                            Version.Text = dt.Rows[0]["std_version"].ToString().Replace("null", "").Replace("unknow", "");
                             ram.Text = dt.Rows[0]["std_ram"].ToString().Replace("null", "").Replace("unknow", "");
                             rom.Text = dt.Rows[0]["std_rom"].ToString().Replace("null", "").Replace("unknow", "");
                         }

+ 57 - 116
UAS_MES_PW/FunctionCode/Make/Make_ImeiCheck.cs

@@ -72,143 +72,84 @@ namespace UAS_MES_NEW.Make
                     OperateResult.AppendText("<<输入不能为空\n", Color.Red);
                     return;
                 }
-                //输入的是SN
-                if (!isImei1)
+                //说明输入的imei1对比一致
+                //判断工序属性attribute
+                if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage))
                 {
-                    OperateResult.AppendText("<<" + sncode.Text + "\n", Color.Black);
-                    //查询是否存在该ms_id
-                    sql.Clear();
-                    sql.Append("select max(ms_id) ms_id from makeserial where ms_sncode ='" + sncode.Text + "'");
-                    dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
-                    if (dt.Rows.Count == 0 || dt.Rows[0]["ms_id"].ToString() == "")
+                    //判断序列号下一工序(CHECKSTEPSNANDMACODE)
+                    if (LogicHandler.CheckStepSNAndMacode("", User.UserSourceCode, SN, User.UserCode, out omakeCode, out oMsid, out oErrorMessage))
                     {
-                        //SN错误,不存在
-                        //请输入SN
-                        OperateResult.AppendText("<<SN错误,序列号" + sncode.Text + "不存在\n", Color.Red, sncode);
-                        OperateResult.AppendText(">>请输入SN\n", Color.Black);
-                    }
-                    //存在该SN号
-                    else
-                    {
-                        //根据该ms_id查询ms_imei1,ms_makecode信息
-                        sql.Clear();
-                        sql.Append("select ms_sncode from  makeserial  where ms_id='" + dt.Rows[0]["ms_id"].ToString() + "'");
-                        info = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
-                        if (info.Rows.Count > 0)
+                        if (!LogicHandler.CheckSeeWoSN(SN, out oErrorMessage))
                         {
-                            //用变量记录imei1和makecode
-                            imei1 = info.Rows[0]["ms_sncode"].ToString();
-                            SN = sncode.Text;
-                            //>>SN对应的SN号为:xxxxxxxxx
-                            //>> 请输入彩盒上的SN
-                            OperateResult.AppendText("<<序列号" + sncode.Text + "对应的SN号为:" + imei1 + "\n", Color.Green);
-                            OperateResult.AppendText(">>请输入彩盒上的SN\n", Color.Black, sncode);
-                            //设定要输入imei1
-                            isImei1 = true;
-                            ////不为null 并且不为””才继续
-                            //if (info.Rows[0]["ms_imei1"].ToString() == null || info.Rows[0]["ms_imei1"].ToString() == "")
-                            //{
-                            //    // SN对应的SN不存在
-                            //    //>> 请输入SN
-                            //    OperateResult.AppendText("<<序列号" + sncode.Text + "对应的SN不存在\n", Color.Red, sncode);
-                            //    OperateResult.AppendText(">>请输入SN\n", Color.Black);
-                            //}
-                            //else
-                            ////存在该imei信息
-                            //{
-
-                            //}
+                            OperateResult.AppendText(">>条码" + sncode.Text + "已激活\n");
+                            return;
                         }
-                        else
+                        //调用  SETSTEPRESULT ,获取返回的工单号,
+                        if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, SN, "标签核对", "OK", User.UserCode, out oErrorMessage))
                         {
-                            OperateResult.AppendText("<<SN:" + sncode.Text + "对应的SN不存在\n", Color.Red, sncode);
+                            //提示正确返回时传递的信息
+                            if (oErrorMessage.Contains("AFTERSUCCESS"))
+                                OperateResult.AppendText(">>" + oErrorMessage + "\n");
+                            //根据工单号查询makecraftdetail 表中的 mcd_okqty 计数,剩余数为ma_qty - nvl(mcd_inqty,0),刷新页面中工单信息的显示
+                            sql.Clear();
+                            sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode,pr_detail,");
+                            sql.Append("ma_qty - nvl(mcd_okqty, 0) remain_qty from make left join makecraftdetail on ");
+                            sql.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + omakeCode + "'  and mcd_stepcode='" + User.CurrentStepCode + "'");
+                            dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
+                            BaseUtil.SetFormValue(Controls, dt);
+                            //将SN,时间,结果记录在页面
+                            recordResult(SN, DateTime.Now.ToString(), "成功");
+                            //记录日志
+                            LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "标签核对", "标签核对成功", SN, "");
+                            //SN核对成功
+                            //>> 请输入SN
+                            OperateResult.AppendText("<<SN核对成功\n", Color.Green, sncode);
                             OperateResult.AppendText(">>请输入SN\n", Color.Black);
-                            SetCheck set = new SetCheck("NG", Color.Red);
+                            SetCheck set = new SetCheck("OK", Color.Green);
                             BaseUtil.SetFormCenter(set);
                             set.ShowDialog();
                         }
-                    }
-                }
-                //输入的是imei1
-                else
-                {
-                    OperateResult.AppendText("<<" + sncode.Text + "\n", Color.Black);
-                    if (imei1 == sncode.Text)
-                    {
-                        //说明输入的imei1对比一致
-                        //判断工序属性attribute
-                        if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage))
-                        {
-                            //判断序列号下一工序(CHECKSTEPSNANDMACODE)
-                            if (LogicHandler.CheckStepSNAndMacode("", User.UserSourceCode, SN, User.UserCode, out omakeCode, out oMsid, out oErrorMessage))
-                            {
-                                //调用  SETSTEPRESULT ,获取返回的工单号,
-                                if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, SN, "标签核对", "OK", User.UserCode, out oErrorMessage))
-                                {
-                                    //提示正确返回时传递的信息
-                                    if (oErrorMessage.Contains("AFTERSUCCESS"))
-                                        OperateResult.AppendText(">>" + oErrorMessage + "\n");
-                                    //根据工单号查询makecraftdetail 表中的 mcd_okqty 计数,剩余数为ma_qty - nvl(mcd_inqty,0),刷新页面中工单信息的显示
-                                    sql.Clear();
-                                    sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode,pr_detail,");
-                                    sql.Append("ma_qty - nvl(mcd_okqty, 0) remain_qty from make left join makecraftdetail on ");
-                                    sql.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + omakeCode + "'  and mcd_stepcode='" + User.CurrentStepCode + "'");
-                                    dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
-                                    BaseUtil.SetFormValue(Controls, dt);
-                                    //将SN,时间,结果记录在页面
-                                    recordResult(SN, DateTime.Now.ToString(), "成功");
-                                    //记录日志
-                                    LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "标签核对", "标签核对成功", SN, "");
-                                    //SN核对成功
-                                    //>> 请输入SN
-                                    OperateResult.AppendText("<<SN核对成功\n", Color.Green, sncode);
-                                    OperateResult.AppendText(">>请输入SN\n", Color.Black);
-                                    SetCheck set = new SetCheck("OK", Color.Green);
-                                    BaseUtil.SetFormCenter(set);
-                                    set.ShowDialog();
-                                }
-                                else
-                                {
-                                    //setstepresult不通过
-                                    OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
-                                    recordResult(SN, DateTime.Now.ToString(), "失败");
-                                    SetCheck set = new SetCheck("NG", Color.Red);
-                                    BaseUtil.SetFormCenter(set);
-                                    set.ShowDialog();
-                                }
-                            }
-                            else
-                            {
-                                //判定序列号下一工序不通过
-                                OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
-                                recordResult(SN, DateTime.Now.ToString(), "失败");
-                                SetCheck set = new SetCheck("NG", Color.Red);
-                                BaseUtil.SetFormCenter(set);
-                                set.ShowDialog();
-                            }
-                        }
                         else
                         {
-                            //判定工序属性不通过
+                            //setstepresult不通过
                             OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
                             recordResult(SN, DateTime.Now.ToString(), "失败");
+                            SetCheck set = new SetCheck("NG", Color.Red);
+                            BaseUtil.SetFormCenter(set);
+                            set.ShowDialog();
                         }
                     }
-                    //说明比对不一致
                     else
                     {
-                        //清空imei1变量的值
-                        imei1 = "";
-                        //SN核对失败
-                        //>> 请输入SN
-                        OperateResult.AppendText(">>SN核对失败,不一致\n", Color.Red, sncode);
-                        OperateResult.AppendText(">>请输入SN\n", Color.Black);
+                        //判定序列号下一工序不通过
+                        OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
+                        recordResult(SN, DateTime.Now.ToString(), "失败");
+                        SetCheck set = new SetCheck("NG", Color.Red);
+                        BaseUtil.SetFormCenter(set);
+                        set.ShowDialog();
                     }
-                    //imei1校对结束,下次输入的是SN
-                    isImei1 = false;
+                }
+                else
+                {
+                    //判定工序属性不通过
+                    OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
+                    recordResult(SN, DateTime.Now.ToString(), "失败");
                 }
             }
+            //说明比对不一致
+            else
+            {
+                //清空imei1变量的值
+                imei1 = "";
+                //SN核对失败
+                //>> 请输入SN
+                OperateResult.AppendText(">>SN核对失败,不一致\n", Color.Red, sncode);
+                OperateResult.AppendText(">>请输入SN\n", Color.Black);
+            }
+            //imei1校对结束,下次输入的是SN
+            isImei1 = false;
         }
+
         private void recordResult(string SN, string time, string result)
         {
             //if (showResult.Items.Count >= 10)

+ 50 - 158
UAS_MES_PW/FunctionCode/Make/Make_LabelCheck.cs

@@ -32,8 +32,6 @@ namespace UAS_MES_NEW.Make
 
         string oErrorMessage = "";
 
-        string SN = "";
-
         string TSN = "";//存TSN
 
         string omakeCode = "";
@@ -49,10 +47,10 @@ namespace UAS_MES_NEW.Make
         private void Make_LabelCheck_Load(object sender, EventArgs e)
         {
             asc.controllInitializeSize(this);
-            //聚焦SN
+            //聚焦sncode.Text
             sncode.Focus();
-            //打开界面提示用户:请输入SN 
-            OperateResult.AppendText(">>请采集SN\n", Color.Black);
+            //打开界面提示用户:请输入sncode.Text 
+            OperateResult.AppendText(">>请采集sncode.Text\n", Color.Black);
             sql = new LogStringBuilder();
             dh = SystemInf.dh;
             StepCount.StepCode = User.CurrentStepCode;
@@ -72,187 +70,81 @@ namespace UAS_MES_NEW.Make
             //判断是enter事件
             if (e.KeyCode == Keys.Enter)
             {
-                if (sncode.Text == "") {
+                if (sncode.Text == "")
+                {
                     OperateResult.AppendText("<<输入不能为空\n", Color.Red);
                     return;
                 }
-                //输入的是SN
-                if (!isCheckItem)
+                //输入的是sncode.Text
+                //说明输入的核对信息对比一致
+                //判断工序属性attribute
+                if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage))
                 {
-                    OperateResult.AppendText("<<"+sncode.Text+"\n", Color.Black);
-                    //查询是否存在该ms_id
-                    sql.Clear();
-                    sql.Append("select ms_id,ms_prodcode,ms_makecode,ms_craftcode,ms_beforesn from makeserial where ms_id = (select max(ms_id) from makeserial where ms_sncode ='"+sncode.Text+"' )");
-                    dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
-                    
-                    if (dt.Rows.Count == 0 || dt.Rows[0]["ms_id"].ToString() == "")
-                    {
-                        //SN错误,不存在
-                        //请输入SN
-                        OperateResult.AppendText("<<SN错误,序列号" + sncode.Text + "不存在\n", Color.Red, sncode);
-                        OperateResult.AppendText(">>请采集SN\n", Color.Black);
-                        return;
-                    }
-                    //存在该SN号,查询相关需要核对的信息
-                    sql.Clear();
-                    sql.Append("select checkitem,fsoncode,type,detno from (select psr_type checkitem ,'' fsoncode,'MS' type ,");
-                    sql.Append("ROW_NUMBER() OVER (order by psr_detno asc )detno from productsnrelation where psr_prodcode='"+ dt.Rows[0]["ms_prodcode"].ToString() + "' and nvl(psr_iflabelcheck,0)<>0");
-                    sql.Append(" UNION ALL select wm_concat(sp_soncode)checkitem,sp_fsoncode fsoncode ,'SP' type,");
-                    sql.Append(" ROW_NUMBER()OVER(order by min(sp_detno)asc) detno from make inner join stepbom on sb_bomversion=ma_bomversion and sb_prodcode=ma_prodcode");
-                    sql.Append(" inner join stepproduct on sp_sbid=sb_id where ma_code='"+ dt.Rows[0]["ms_makecode"].ToString() + "' and sb_craftcode='"+ dt.Rows[0]["ms_craftcode"].ToString() + "' and nvl(sp_iflabelcheck,0)<>0");
-                    sql.Append(" GROUP BY sp_fsoncode) order by type,detno");
-                    checkItemInfo = (DataTable)dh.ExecuteSql(sql.GetString(),"select");
-                    //判断是否无需要核对的项
-                    if (checkItemInfo.Rows.Count==0)
+                    //判断序列号下一工序(CHECKSTEPSNANDMACODE)
+                    if (LogicHandler.CheckStepSNAndMacode("", User.UserSourceCode, sncode.Text, User.UserCode, out omakeCode, out oMsid, out oErrorMessage))
                     {
-                        OperateResult.AppendText("<<序列号" + sncode.Text + "没有需要核对的项\n", Color.Red, sncode);
-                        OperateResult.AppendText(">>请采集SN\n", Color.Black);
-                        return;
-                    }
-                    //记录SN
-                    SN = sncode.Text;
-                    TSN = dt.Rows[0]["ms_beforesn"].ToString();
-                    //查询第一个需要核对的信息
-                    getNextInfo(checkIndex);
-                    //设定要输入核对信息
-                    isCheckItem = true;
-                }
-                //输入的是imei1
-                else
-                {
-                    OperateResult.AppendText("<<" + sncode.Text + "\n", Color.Black);
+                        if (!LogicHandler.CheckSeeWoSN(sncode.Text, out oErrorMessage))
+                        {
 
-                    if (needCheckedInfo == sncode.Text||((needCheckedInfo == sncode.Text.Replace(":", "").Replace("-", ""))&&(checkItemInfo.Rows[checkIndex]["checkitem"].ToString() == "MAC"|| checkItemInfo.Rows[checkIndex]["checkitem"].ToString() == "BT")))
-                    {
-                        checkIndex += 1;//序号+1,进入下一步
-                        if (checkIndex == checkItemInfo.Rows.Count)
+                        }
+                        //调用  SETSTEPRESULT ,获取返回的工单号,
+                        if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, sncode.Text, "标签核对", "OK", User.UserCode, out oErrorMessage))
                         {
-                            //说明输入的核对信息对比一致
-                            //判断工序属性attribute
-                            if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage))
-                            {
-                                //判断序列号下一工序(CHECKSTEPSNANDMACODE)
-                                if (LogicHandler.CheckStepSNAndMacode("", User.UserSourceCode, SN, User.UserCode, out omakeCode, out oMsid, out oErrorMessage))
-                                {
-                                    //调用  SETSTEPRESULT ,获取返回的工单号,
-                                    if (LogicHandler.SetStepResult(omakeCode, User.UserSourceCode, SN, "标签核对", "OK", User.UserCode, out oErrorMessage))
-                                    {
-                                        //提示正确返回时传递的信息
-                                        if (oErrorMessage.Contains("AFTERSUCCESS"))
-                                            OperateResult.AppendText(">>" + oErrorMessage + "\n");
-                                        //根据工单号查询makecraftdetail 表中的 mcd_okqty 计数,剩余数为ma_qty - nvl(mcd_inqty,0),刷新页面中工单信息的显示
-                                        sql.Clear();
-                                        sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode,pr_detail,");
-                                        sql.Append("ma_qty - nvl(mcd_okqty, 0) remain_qty from make left join makecraftdetail on ");
-                                        sql.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + omakeCode + "'  and mcd_stepcode='" + User.CurrentStepCode + "'");
-                                        dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
-                                        BaseUtil.SetFormValue(Controls, dt);
-                                        //将SN,时间,结果记录在页面
-                                        recordResult(SN, DateTime.Now.ToString(), "成功");
-                                        //记录日志
-                                        LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "标签核对", "标签核对成功", SN, "");
-                                        //IMEI核对成功
-                                        //>> 请输入SN
-                                        OperateResult.AppendText("<<核对成功\n", Color.Green, sncode);
-                                    }
-                                    else
-                                    {
-                                        //setstepresult不通过
-                                        OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
-                                        recordResult(SN, DateTime.Now.ToString(), "失败");
-                                    }
-                                }
-                                else
-                                {
-                                    //判定序列号下一工序不通过
-                                    OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
-                                    recordResult(SN, DateTime.Now.ToString(), "失败");
-                                }
-                            }
-                            else
-                            {
-                                //判定工序属性不通过
-                                OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
-                                recordResult(SN, DateTime.Now.ToString(), "失败");
-                            }
-                            OperateResult.AppendText(">>请采集SN\n", Color.Black);
-                            checkIndex = 0;
-                            isCheckItem = false;
+                            //提示正确返回时传递的信息
+                            if (oErrorMessage.Contains("AFTERSUCCESS"))
+                                OperateResult.AppendText(">>" + oErrorMessage + "\n");
+                            //根据工单号查询makecraftdetail 表中的 mcd_okqty 计数,剩余数为ma_qty - nvl(mcd_inqty,0),刷新页面中工单信息的显示
+                            sql.Clear();
+                            sql.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode,pr_detail,");
+                            sql.Append("ma_qty - nvl(mcd_okqty, 0) remain_qty from make left join makecraftdetail on ");
+                            sql.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + omakeCode + "'  and mcd_stepcode='" + User.CurrentStepCode + "'");
+                            dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
+                            BaseUtil.SetFormValue(Controls, dt);
+                            //将sncode.Text,时间,结果记录在页面
+                            //记录日志
+                            LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "标签核对", "标签核对成功", sncode.Text, "");
+                            //IMEI核对成功
+                            //>> 请输入sncode.Text
+                            OperateResult.AppendText("<<核对成功\n", Color.Green, sncode);
                         }
                         else
                         {
-                            //输入一致则进入下一个
-                            getNextInfo(checkIndex);
+                            //setstepresult不通过
+                            OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
                         }
                     }
-                    //说明比对不一致
                     else
                     {
-                        //信息核对失败
-                        //>> 请输入SN
-                        OperateResult.AppendText(">>上料信息或序列号采集信息"+needCheckedInfo+"核对失败,不一致\n", Color.Red, sncode);
-                        //为采集信息
-                        if (checkItemInfo.Rows[checkIndex]["TYPE"].ToString() == "MS")
-                        {
-                            OperateResult.AppendText(">>请采集" + checkItemInfo.Rows[checkIndex]["checkitem"].ToString() + "\n", Color.Black, sncode);
-                        }
-                        else//为上料信息
-                        {
-                            OperateResult.AppendText(">>请采集物料" + checkItemInfo.Rows[checkIndex]["checkitem"].ToString() + "条码\n", Color.Black, sncode);
-                        }
+                        //判定序列号下一工序不通过
+                        OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
                     }
                 }
+                else
+                {
+                    //判定工序属性不通过
+                    OperateResult.AppendText(">>" + oErrorMessage + "\n", Color.Red, sncode);
+                }
+                OperateResult.AppendText(">>请采集sncode.Text\n", Color.Black);
+                checkIndex = 0;
+                isCheckItem = false;
             }
         }
-        private void recordResult(string SN, string time, string result)
+    
+        private void clear()
         {
-            //if (showResult.Items.Count >= 10)
-            //{
-            //    //如果有10行的话,则删除最前一行
-            //    showResult.Items.RemoveAt(0);
-            //}
-            //创建一个item
-            ListViewItem lvi = new ListViewItem();
-            //分条赋值
-            lvi.SubItems.Add(SN);
-            lvi.SubItems.Add(time);
-            lvi.SubItems.Add(result);
-            //添加结果的信息进去
-            showResult.Items.Add(lvi);
-        }
-        private void clear() {
             //清空变量的值
             omakeCode = "";
             oMsid = "";
-            SN = "";
+            sncode.Text = "";
             needCheckedInfo = "";
         }
-        private void getNextInfo(int index)
-        {
-            //判断为上料或者采集信息
-            //为采集信息
-            if (checkItemInfo.Rows[index]["TYPE"].ToString() == "MS")
-            {
-                //从makeserial表中查询对应字段的值
-                needCheckedInfo = dh.getFieldDataByCondition("makeserial","ms_"+ checkItemInfo.Rows[index]["checkitem"].ToString(),"ms_id ='"+ dt.Rows[0]["ms_id"].ToString() + "'").ToString();
-                OperateResult.AppendText("<<序列号" + SN + "对应的"+ checkItemInfo.Rows[index]["checkitem"].ToString() + "为" + needCheckedInfo + "\n", Color.Green);
-                OperateResult.AppendText(">>请采集"+ checkItemInfo.Rows[index]["checkitem"].ToString() + "\n", Color.Black, sncode);
-            }
-            else//为上料信息
-            {
-                //从craftmaterial中查询上料记录
-                needCheckedInfo = dh.getFieldDataByCondition("craftmaterial", "cm_barcode", "cm_makecode='"+ dt.Rows[0]["ms_makecode"].ToString() + "' and cm_sncode in ('"+SN+"'"+(TSN==""?"":(",'"+TSN+"'"))+") and cm_fsoncode='"+checkItemInfo.Rows[index]["fsoncode"].ToString()+"' and cm_status=0").ToString();
-                OperateResult.AppendText("<<序列号" + SN + "上料物料"+ checkItemInfo.Rows[index]["checkitem"].ToString() + "的条码号为" + needCheckedInfo + "\n", Color.Green);
-                OperateResult.AppendText(">>请采集物料"+ checkItemInfo.Rows[index]["checkitem"].ToString() + "条码\n", Color.Black, sncode);
-            }
-        }
-
+       
         private void cancel_Click(object sender, EventArgs e)
         {
-            OperateResult.AppendText(">>请采集SN\n", Color.Black);
+            OperateResult.AppendText(">>请采集sncode.Text\n", Color.Black);
             checkIndex = 0;
             isCheckItem = false;
-            SN = "";
+            sncode.Text = "";
         }
     }
 }

+ 45 - 0
UAS_MES_PW/PublicMethod/BaseUtil.cs

@@ -40,6 +40,51 @@ namespace UAS_MES_NEW.PublicMethod
             return !((c.Client.Poll(1000, SelectMode.SelectRead) && (c.Client.Available == 0)) || !c.Client.Connected);
         }
 
+        public static Dictionary<string, object> ToDictionary(string JsonData)
+        {
+            object Data = null;
+            Dictionary<string, object> Dic = new Dictionary<string, object>();
+            if (JsonData.StartsWith("["))
+            {
+                //如果目标直接就为数组类型,则将会直接输出一个Key为List的List<Dictionary<string, object>>集合 
+                //使用示例List<Dictionary<string, object>> ListDic = (List<Dictionary<string, object>>)Dic["List"]; 
+                List<Dictionary<string, object>> List = new List<Dictionary<string, object>>();
+                MatchCollection ListMatch = Regex.Matches(JsonData, @"{[\s\S]+?}");//使用正则表达式匹配出JSON数组 
+                foreach (Match ListItem in ListMatch)
+                {
+                    List.Add(ToDictionary(ListItem.ToString()));//递归调用 
+                }
+                Data = List;
+                Dic.Add("List", Data);
+            }
+            else
+            {
+                MatchCollection Match = Regex.Matches(JsonData, @"""(.+?)"": {0,1}(\[[\s\S]+?\]|null|"".+?""|-{0,1}\d*)");//使用正则表达式匹配出JSON数据中的键与值 
+                foreach (Match item in Match)
+                {
+                    try
+                    {
+                        if (item.Groups[2].ToString().StartsWith("["))
+                        {
+                            //如果目标是数组,将会输出一个Key为当前Json的List<Dictionary<string, object>>集合 
+                            //使用示例List<Dictionary<string, object>> ListDic = (List<Dictionary<string, object>>)Dic["Json中的Key"]; 
+                            List<Dictionary<string, object>> List = new List<Dictionary<string, object>>();
+                            MatchCollection ListMatch = Regex.Matches(item.Groups[2].ToString(), @"{[\s\S]+?}");//使用正则表达式匹配出JSON数组 
+                            foreach (Match ListItem in ListMatch)
+                            {
+                                List.Add(ToDictionary(ListItem.ToString()));//递归调用 
+                            }
+                            Data = List;
+                        }
+                        else if (item.Groups[2].ToString().ToLower() == "null") Data = null;//如果数据为null(字符串类型),直接转换成null
+                        else Data = item.Groups[2].ToString(); //数据为数字、字符串中的一类,直接写入 
+                        Dic.Add(item.Groups[1].ToString(), Data);
+                    }
+                    catch { }
+                }
+            }
+            return Dic;
+        }
         /// <summary>
         /// 通过DataTable的ColumnName和Caption来拼接一条语句
         /// </summary>

+ 54 - 1
UAS_MES_PW/PublicMethod/LogicHandler.cs

@@ -2,6 +2,8 @@
 using System.Collections.Generic;
 using System.Data;
 using System.Drawing;
+using System.IO;
+using System.Net;
 using System.Text;
 using System.Windows;
 using System.Windows.Forms;
@@ -185,7 +187,8 @@ namespace UAS_MES_NEW.PublicMethod
             }
             else
             {
-                if (User.CurrentStepCode != "B_WEIGH") {
+                if (User.CurrentStepCode != "B_WEIGH")
+                {
                     SetCheck set = new SetCheck("NG", Color.Red);
                     BaseUtil.SetFormCenter(set);
                     set.ShowDialog();
@@ -1419,5 +1422,55 @@ namespace UAS_MES_NEW.PublicMethod
                 return false;
             }
         }
+
+        //YLXPV11001149936T00111
+        public static bool CheckSeeWoSN(string SN, out string oMsg)
+        {
+            oMsg = "";
+            string url = "http://192.168.1.7:8099/mes/api/pda/seewo/checkseewosn.action?code=" + SN;//html调用的地址              
+            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);
+            if (webrequest == null)
+            {
+                return false;
+            }
+            webrequest.Method = "GET";
+            webrequest.Timeout = 1000;
+            webrequest.ContentType = "application/x-www-form-urlencoded";
+            System.Collections.Hashtable pars = new System.Collections.Hashtable();
+            string buffer = "";
+            if (!(pars == null || pars.Count == 0))
+            {
+                foreach (string key in pars.Keys)
+                {
+                    buffer = buffer + "&" + key + "=" + pars[key].ToString();
+                }
+                byte[] data = Encoding.UTF8.GetBytes(buffer);
+                using (Stream stream = webrequest.GetRequestStream())
+                {
+                    stream.Write(data, 0, data.Length);
+                }
+            }
+
+            string[] values = webrequest.Headers.GetValues("Content-Type");
+            WebResponse myResponse = webrequest.GetResponse();
+
+            using (Stream resStream = myResponse.GetResponseStream())//得到回写的流
+            {
+                StreamReader newReader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
+                string Content = newReader.ReadToEnd();
+                Content = Content.Replace(@"\", "");
+                Content = Content.Replace("\\", "");
+                if (Content.Contains(@"hasActivated"":false"))
+                {
+                    return true;
+                }
+                if (Content.Contains(@"hasActivated"":true"))
+                {
+                    return false;
+                }
+                newReader.Close();
+                return false;
+            }
+        }
     }
 }