Browse Source

标签核对修改功能

shim 8 years ago
parent
commit
e5a7d600fc
1 changed files with 68 additions and 48 deletions
  1. 68 48
      UAS-MES/FunctionCode/Make/Make_LabelCheck.cs

+ 68 - 48
UAS-MES/FunctionCode/Make/Make_LabelCheck.cs

@@ -24,17 +24,23 @@ namespace UAS_MES.Make
 
         DataTable info;
 
-        string imei1 = "";
+        DataTable checkItemInfo;//存储需要核对的所有信息列表
 
-        bool isImei1 = false;
+        string needCheckedInfo = "";
+
+        bool isCheckItem = false;
 
         string oErrorMessage = "";
 
         string SN = "";
 
+        string TSN = "";//存TSN
+
         string omakeCode = "";
 
         string oMsid = "";
+
+        int checkIndex = 0;//记录核对的当前位置,从0开始
         public Make_LabelCheck()
         {
             InitializeComponent();
@@ -66,65 +72,60 @@ namespace UAS_MES.Make
                     return;
                 }
                 //输入的是SN
-                if (!isImei1)
+                if (!isCheckItem)
                 {
                     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+"' or ms_firstsn in (select firstsn from makesnrelation where beforesn='"+sncode.Text+"')");
+                    sql.Append("select ms_id,ms_prodcode,ms_makecode,ms_craftcode,ms_beforesn from makeserial where ms_id in (select max(MS_id) ms_id from makeserial where ms_sncode='" + sncode.Text+"' or ms_firstsn in (select firstsn from makesnrelation where beforesn='"+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号
-                    else
+                    //存在该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)
                     {
-                        //根据该ms_id查询ms_imei1,ms_makecode信息
-                        sql.Clear();
-                        sql.Append("select ms_imei1 from  makeserial  where ms_id='"+ dt.Rows[0]["ms_id"].ToString() + "'");
-                        info = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
-                        if (info.Rows.Count > 0)
-                        {
-                            //不为null 并且不为””才继续
-                            if (info.Rows[0]["ms_imei1"].ToString() == null || info.Rows[0]["ms_imei1"].ToString() == "")
-                            {
-                                // SN对应的IMEI不存在
-                                //>> 请输入SN
-                                OperateResult.AppendText("<<序列号" + sncode.Text + "对应的IMEI不存在\n", Color.Red, sncode);
-                                OperateResult.AppendText(">>请输入SN\n", Color.Black);
-                            }
-                            else
-                            //存在该imei信息
-                            {
-                                //用变量记录imei1和makecode
-                                imei1 = info.Rows[0]["ms_imei1"].ToString();
-                                SN = sncode.Text;
-                                //>>SN对应的IMEI号为:xxxxxxxxx
-                                //>> 请输入彩盒上的IMEI
-                                OperateResult.AppendText("<<序列号"+sncode.Text+"对应的IMEI号为:" + imei1 + "\n", Color.Green);
-                                OperateResult.AppendText(">>请输入彩盒上的IMEI\n", Color.Black, sncode);
-                                //设定要输入imei1
-                                isImei1 = true;
-                            }
-                        }
-                        else
-                        {
-                            OperateResult.AppendText("<<SN:" + sncode.Text + "对应的IMEI不存在\n", Color.Red, sncode);
-                            OperateResult.AppendText(">>请输入SN\n", Color.Black);
-                        }
+                        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 (imei1 == sncode.Text)
+                    if (needCheckedInfo == sncode.Text)
                     {
-                        //说明输入的imei1对比一致
+                        checkIndex += 1;//序号+1,进入下一步
+                        //输入一致则进入下一个
+                        getNextInfo(checkIndex);
+                        if (checkIndex < checkItemInfo.Rows.Count-1)
+                        {
+                            return;
+                        }
+                        //说明输入的核对信息对比一致
                         //判断工序属性attribute
                         if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out oErrorMessage))
                         {
@@ -150,7 +151,7 @@ namespace UAS_MES.Make
                                     LogicHandler.DoCommandLog(Tag.ToString(),User.UserCode,ma_code.Text,User.UserLineCode,User.UserSourceCode,"标签核对","标签核对成功",SN,"");
                                     //IMEI核对成功
                                     //>> 请输入SN
-                                    OperateResult.AppendText("<<IMEI核对成功\n", Color.Green, sncode);
+                                    OperateResult.AppendText("<<核对成功\n", Color.Green, sncode);
                                     OperateResult.AppendText(">>请输入SN\n", Color.Black);
                                 }
                                 else
@@ -177,15 +178,15 @@ namespace UAS_MES.Make
                     //说明比对不一致
                     else
                     {
-                        //清空imei1变量的值
-                        imei1 = "";
-                        //IMEI核对失败
+                        //清空核对变量的值
+                        needCheckedInfo = "";
+                        //信息核对失败
                         //>> 请输入SN
-                        OperateResult.AppendText(">>IMEI核对失败,不一致\n", Color.Red, sncode);
+                        OperateResult.AppendText(">>上料信息或序列号采集信息"+needCheckedInfo+"核对失败,不一致\n", Color.Red, sncode);
                         OperateResult.AppendText(">>请输入SN\n", Color.Black);
                     }
                     //imei1校对结束,下次输入的是SN
-                    isImei1 = false;
+                    isCheckItem = false;
                 }
             }
         }
@@ -210,7 +211,26 @@ namespace UAS_MES.Make
             omakeCode = "";
             oMsid = "";
             SN = "";
-            imei1 = "";
+            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);
+            }
         }
     }
 }