Sfoglia il codice sorgente

修改上料采集支持条码解析方式

章政 8 anni fa
parent
commit
19b2bd09ec
1 ha cambiato i file con 40 aggiunte e 74 eliminazioni
  1. 40 74
      UAS-MES/FunctionCode/Make/Make_FeedingCollection.cs

+ 40 - 74
UAS-MES/FunctionCode/Make/Make_FeedingCollection.cs

@@ -215,25 +215,27 @@ namespace UAS_MES.Make
                             string sp_id = dt1.Rows[RemainIndex]["sp_id"].ToString();
                             string sp_ifforsn = dt1.Rows[RemainIndex]["sp_ifforsn"].ToString();
                             string sp_tracekind = dt1.Rows[RemainIndex]["sp_tracekind"].ToString();
-                            int sp_length = int.Parse(length != "" ? length : "0");
-                            if (dt1.Rows[RemainIndex]["sp_type"].ToString() == "物料")
+                            string sp_barcoderule = dt1.Rows[RemainIndex]["sp_barcoderule"].ToString();
+                            switch (sp_barcoderule)
                             {
-                                //序列号用作条码
-                                if (sp_ifforsn != "0")
-                                {
-                                    dt = (DataTable)dh.ExecuteSql("select count(1) from makeserial where ms_sncode='" + code.Text + "' and ms_status=2 and ms_prodcode='" + sp_soncode + "'", "select");
+                                case "TSN":
+                                    dt = (DataTable)dh.ExecuteSql("select ms_id from makeserial where ms_sncode='" + code.Text + "' order by ms_id desc", "select");
                                     if (dt.Rows.Count > 0)
                                     {
-                                        if (dh.getRowCount("craftmaterial", "cm_sncode='" + sn_code.Text + "' and cm_barcode='" + code.Text + "' and cm_soncode='" + sp_soncode + "'") > 0)
-                                            OperateResult.AppendText(">>条码" + code.Text + "已经上料\n", Color.Red);
+                                        if (sp_soncode != dt.Rows[0]["ms_prodcode"].ToString())
+                                            OperateResult.AppendText(">>序列号对应的物料不是:" + sp_soncode + "\n");
                                         else
-                                            Save_OtherCode(sp_soncode, make_code, sn_code.Text, sp_id);
+                                        {
+                                            dt = (DataTable)dh.ExecuteSql("select cm_id from craftmaterial where cm_soncode='" + sp_soncode + "' and cm_barcode='" + code.Text + "'", "select");
+                                            if (dt.Rows.Count > 0)
+                                                OperateResult.AppendText(">>序列号" + code.Text + "已采集过\n", Color.Red, code);
+                                            else
+                                                Save_OtherCode(sp_soncode, make_code, sn_code.Text, sp_id);
+                                        }
                                     }
-                                    else OperateResult.AppendText(">>序列号不存在\n", Color.Red);
-                                }
-                                //单件管控物料
-                                else if (sp_tracekind == "1")
-                                {
+                                    else OperateResult.AppendText(">>序列号" + code.Text + "不存在\n");
+                                    break;
+                                case "BARCODE":
                                     dt = (DataTable)dh.ExecuteSql("select bar_prodcode,bar_code from barcode where bar_code='" + code.Text + "'", "select");
                                     if (dt.Rows.Count > 0)
                                     {
@@ -248,12 +250,10 @@ namespace UAS_MES.Make
                                                 Save_OtherCode(sp_soncode, make_code, sn_code.Text, sp_id);
                                         }
                                     }
-                                    else OperateResult.AppendText(">>条码不存在\n", Color.Red, code);
-                                }
-                                //不管控
-                                else if (sp_tracekind == "0")
-                                {
-                                    //进行前缀匹配
+                                    else OperateResult.AppendText(">>条码" + code.Text + "不存在\n", Color.Red, code);
+                                    break;
+                                case "RULE":
+                                    int sp_length = int.Parse(length != "" ? length : "0");
                                     if (code.Text.Substring(0, sp_prefix.Length) == sp_prefix || sp_prefix == "")
                                     {
                                         //进行长度匹配
@@ -272,33 +272,9 @@ namespace UAS_MES.Make
                                         else OperateResult.AppendText(">>长度不匹配\n", Color.Red);
                                     }
                                     else OperateResult.AppendText(">>前缀不匹配\n", Color.Red);
-                                }
-                            }
-                            else
-                            {
-                                //如果sp_type!='物料'的话
-                                //Wifi和蓝牙公用一个字段
-                                switch (dt1.Rows[RemainIndex]["sp_type"].ToString())
-                                {
-                                    case "MAC":
-                                        dh.UpdateByCondition("makeserial", "ms_mac='" + code.Text + "'", "ms_id=" + ms_id);
-                                        break;
-                                    case "BT":
-                                        dh.UpdateByCondition("makeserial", "ms_bt='" + code.Text + "'", "ms_id=" + ms_id);
-                                        break;
-                                    case "WIFI":
-                                        dh.UpdateByCondition("makeserial", "ms_bt='" + code.Text + "'", "ms_id=" + ms_id);
-                                        break;
-                                    case "IMEI1":
-                                        dh.UpdateByCondition("makeserial", "ms_imei1='" + code.Text + "'", "ms_id=" + ms_id);
-                                        break;
-                                    case "IMEI2":
-                                        dh.UpdateByCondition("makeserial", "ms_imei2='" + code.Text + "'", "ms_id=" + ms_id);
-                                        break;
-                                    default:
-                                        break;
-                                }
-                                Save_OtherCode(sp_soncode, make_code, sn_code.Text, sp_id);
+                                    break;
+                                default:
+                                    break;
                             }
                         }
                     }
@@ -307,34 +283,22 @@ namespace UAS_MES.Make
                     {
                         if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, User.UserSourceCode, code.Text, User.UserCode, out oMakeCode, out oMsid, out ErrorMessage))
                         {
-                            if (sn_code.Text != "")
-                            {
-                                dt = (DataTable)dh.ExecuteSql("select cm_id,cm_stepcode,ms_makecode,cm_mccode from craftmaterial left join makeserial on cm_makecode=ms_makecode and cm_sncode=ms_sncode where ms_sncode='" + sn_code.Text + "' and cm_barcode='" + code.Text + "'", "select");
-                                if (dt.Rows.Count > 0)
-                                {
-                                    string cm_id = dt.Rows[0]["cm_id"].ToString();
-                                    string ms_macode = dt.Rows[0]["ms_makecode"].ToString();
-                                    string cm_stepcode = dt.Rows[0]["cm_stepcode"].ToString();
-                                    string cm_mccode = dt.Rows[0]["cm_mccode"].ToString();
-                                    dh.ExecuteSql("delete from Craftmaterial where cm_id=" + cm_id, "delete");
-                                    LogicHandler.InsertMakeProcess(ms_macode, sn_code.Text, User.UserSourceCode, "上料采集操作", "下料成功", User.UserName);
-                                    int count = dh.getRowCount("craftMaterial", "cm_mccode='" + cm_mccode + "' and cm_stepcode='" + cm_stepcode + "' and cm_sncode='" + sn_code.Text + "'");
-                                    if (count == 0)
-                                        dh.UpdateByCondition("makecraftdetail ", "mcd_inqty=mcd_inqty-1,mcd_outqty=mcd_outqty-1,mcd_okqty = mcd_okqty - 1", "mcd_mccode='" + cm_mccode + "' and mcd_stepcode='" + cm_stepcode + "'");
-                                    OperateResult.AppendText(">>下料成功\n", Color.Green, code);
-                                }
-                            }
-                            else if (sn_code.Text == "")
+                            dt = (DataTable)dh.ExecuteSql("select cm_id,cm_stepcode,ms_makecode,cm_mccode from craftmaterial left join makeserial on cm_makecode=ms_makecode and cm_sncode=ms_sncode where ms_sncode='" + code.Text + "' and cm_makecode='" + ma_code.Text + "'", "select");
+                            if (dt.Rows.Count > 0)
                             {
-                                dt = (DataTable)dh.ExecuteSql("select cm_id from craftmaterial where cm_sncode='" + sn_code.Text + "'", "select");
-                                if (dt.Rows.Count > 0)
-                                {
-                                    OperateResult.AppendText(">>请采集需要下料的序列号\n", Color.Black, code);
-                                    sn_code.Text = code.Text;
-                                }
-                                else OperateResult.AppendText(">>该序列号未上料,无需下料\n", Color.Red, code);
+                                string ms_macode = dt.Rows[0]["ms_makecode"].ToString();
+                                string cm_stepcode = dt.Rows[0]["cm_stepcode"].ToString();
+                                string cm_mccode = dt.Rows[0]["cm_mccode"].ToString();
+                                dh.ExecuteSql("delete from craftmaterial where cm_sncode='" + code.Text + "' and cm_makecode='" + ma_code.Text + "'", "delete");
+                                LogicHandler.InsertMakeProcess(ms_macode, code.Text, User.UserSourceCode, "上料采集操作", "下料成功", User.UserCode);
+                                int count = dh.getRowCount("craftMaterial", "cm_mccode='" + cm_mccode + "' and cm_stepcode='" + cm_stepcode + "' and cm_sncode='" + code.Text + "'");
+                                if (count == 0)
+                                    dh.UpdateByCondition("makecraftdetail ", "mcd_inqty=mcd_inqty-1,mcd_outqty=mcd_outqty-1,mcd_okqty = mcd_okqty - 1", "mcd_mccode='" + cm_mccode + "' and mcd_stepcode='" + cm_stepcode + "'");
+                                OperateResult.AppendText(">>序列号" + code.Text + "下料成功\n", Color.Green, code);
                             }
+                            else OperateResult.AppendText(">>该序列号未上料,无需下料\n", Color.Red, code);
                         }
+                        else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, code);
                     }
                 }
                 else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, code);
@@ -360,6 +324,7 @@ namespace UAS_MES.Make
                 nextstepcode = dt.Rows[0]["ms_nextstepcode"].ToString();
                 ms_status = dt.Rows[0]["ms_status"].ToString();
                 BaseUtil.SetFormValue(this.Controls, dt);
+                LockMakeCode.Checked = true;
                 string oMakeCode = "";
                 string oMsID = "";
                 if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
@@ -369,8 +334,8 @@ namespace UAS_MES.Make
                         //单独用一个DataTable存储一个
                         dt1 = new DataTable();
                         sql.Clear();
-                        sql.Append("select sp_id,sp_tracekind,sp_prefix,sp_ifuseregex,sp_ifforsn,sp_length,sp_description,sp_soncode,pr_detail,pr_spec,sp_repcode,pr_id,");
-                        sql.Append("sp_type,case when (sp_type='物料' and sp_soncode=pr_code) then '已采集' else '未采集' end sp_ifpick ,sp_prefix,");
+                        sql.Append("select sp_id,sp_tracekind,sp_barcoderule,sp_prefix,sp_ifuseregex,sp_ifforsn,sp_length,sp_description,sp_soncode,pr_detail,pr_spec,");
+                        sql.Append("sp_repcode,pr_id,sp_type,case when (sp_type='物料' and sp_soncode=pr_code) then '已采集' else '未采集' end sp_ifpick ,sp_prefix,");
                         sql.Append("sp_length,sp_regex,sp_ifforsn from stepproduct left join product on pr_code=sp_soncode where sp_bomversion='" + ma_bomversion + "' and ");
                         sql.Append("sp_craftcode='" + ms_craftcode + "' and sp_stepcode='" + User.CurrentStepCode + "' And sp_mothercode ='" + make_prodcode + "' ");
                         sql.Append("and((sp_type = '物料' and( sp_tracekind <> 2 or sp_tracekind is null))or sp_type <> '物料') order by SP_DETNO asc");
@@ -473,6 +438,7 @@ namespace UAS_MES.Make
             CollectDataSonCode.Clear();
             BaseUtil.CleanDataTableData(dt1);
             RemainIndex = 0;
+            OperateResult.AppendText(">>请采集序列号\n",Color.Black);
         }
 
         private void ma_code_UserControlTextChanged(object sender, EventArgs e)