Browse Source

Merge branch 'master' of ssh://10.10.101.21/source/mes-client

Hcsy 8 years ago
parent
commit
d2c5e76c08
1 changed files with 75 additions and 56 deletions
  1. 75 56
      UAS-MES/FunctionCode/Make/Make_SeqProgramTransform.cs

+ 75 - 56
UAS-MES/FunctionCode/Make/Make_SeqProgramTransform.cs

@@ -32,11 +32,17 @@ namespace UAS_MES.Make
         DataTable dt;
         //step  记录检验规则的进度
         int step=0;
-        //记录采集的IMEI,BT,MAC等信息
-        Hashtable hs;
         //存放关联信息类型
         string type;
-
+        //存放二次校验的sql
+        StringBuilder container = new StringBuilder();
+        //存放包含IMEI的规则的值,方便拼接
+        StringBuilder imei = new StringBuilder();
+        LogStringBuilder logsql = new LogStringBuilder();
+        //存储最后插入数据库的赋值语句部分
+        StringBuilder s1 = new StringBuilder();
+        //存放工单中数量
+        int ma_qty;
         public Make_SeqProgramTransform()
         {
             InitializeComponent();
@@ -86,14 +92,16 @@ namespace UAS_MES.Make
                                     dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select", code.Text);
                                     if (dt.Rows.Count > 0)
                                     {
+                                        //记录数量
+                                        ma_qty = int.Parse(dt.Rows[0]["ma_qty"].ToString());
                                         BaseUtil.SetFormValue(this.Controls, dt);
                                         //判断用户是否锁定输入TSN长度,
-                                        if (!checkLengthOrPre(TSNLength_checkBox, TSNLength, "长度"))
+                                        if (!checkLengthOrPre(TSNLength_checkBox, TSNLength, "长度","TSN"))
                                         {
                                             return;
                                         }
                                         //判断用户是否锁定输入TSN前缀,
-                                        if (!checkLengthOrPre(TSNPre_checkBox, TSNPre, "前缀"))
+                                        if (!checkLengthOrPre(TSNPre_checkBox, TSNPre, "前缀","TSN"))
                                         {
                                             return;
                                         }
@@ -101,6 +109,7 @@ namespace UAS_MES.Make
                                     else
                                     {
                                         OperateResult.AppendText(">>序列号" + code.Text + "不存在\n", Color.Red);
+                                        code.Text = "";
                                         return;
                                     }
                                     //获取需要关联采集的信息,以及校验规则
@@ -112,7 +121,6 @@ namespace UAS_MES.Make
                                         OperateResult.AppendText("<<请输入TSN\n", Color.Green);
                                         return;
                                     }
-                                    hs = new Hashtable();
                                     step = 1;
 
                                     //记录转换前的序列号
@@ -140,12 +148,12 @@ namespace UAS_MES.Make
                             if (!dh.CheckExist("makeserial", "ms_sncode='" + code.Text + "'"))
                             {
                                 //判断用户是否锁定输入SN长度,
-                                if (!checkLengthOrPre(SNLength_checkBox, SNLength, "长度"))
+                                if (!checkLengthOrPre(SNLength_checkBox, SNLength, "长度","SN"))
                                 {
                                     return;
                                 }
                                 //判断用户是否锁定输入SN前缀,
-                                if (!checkLengthOrPre(SNPre_checkBox, SNPre, "前缀"))
+                                if (!checkLengthOrPre(SNPre_checkBox, SNPre, "前缀","SN"))
                                 {
                                     return;
                                 }
@@ -162,7 +170,8 @@ namespace UAS_MES.Make
                             }
                             else
                             {
-                                OperateResult.AppendText(">>序列号" + code.Text + "已存在,请输入SN\n", Color.Red);
+                                OperateResult.AppendText(">>序列号" + code.Text + "已存在\n", Color.Red);
+                                OperateResult.AppendText(">>请输入SN\n", Color.Green);
                                 code.Text = "";
                             }
                         }
@@ -192,7 +201,7 @@ namespace UAS_MES.Make
         /// <param name="checkbox"></param>
         /// <param name="c"></param>
         /// <param name="info"></param>
-        private bool checkLengthOrPre(CheckBox checkbox, TextBox textbox, string type)
+        private bool checkLengthOrPre(CheckBox checkbox, TextBox textbox, string type, string TSNorSN)
         {
             if (checkbox.Checked == true)
             {
@@ -202,9 +211,9 @@ namespace UAS_MES.Make
                     if (code.Text.Trim().Length != int.Parse(textbox.Text))
                     {
                         //序列号校验错误,长度错误
-                        OperateResult.AppendText(">>TSN号" + code.Text + "校验错误,长度错误\n", Color.Red);
+                        OperateResult.AppendText(">>" + TSNorSN + ":" + code.Text + "校验错误,长度错误\n", Color.Red);
                         code.Text = "";
-                        OperateResult.AppendText("<<请重新输入TSN\n", Color.Green);
+                        OperateResult.AppendText("<<请重新输入" + TSNorSN + "\n", Color.Green);
                         return false;
                     }
                 }
@@ -214,9 +223,9 @@ namespace UAS_MES.Make
                     if (!code.Text.StartsWith(textbox.Text.Trim()))
                     {
                         //序列号校验错误,前缀错误
-                        OperateResult.AppendText(">>TSN号" + code.Text + "校验错误,前缀错误\n", Color.Red);
+                        OperateResult.AppendText(">>" + TSNorSN + ":" + code.Text + "校验错误,前缀错误\n", Color.Red);
                         code.Text = "";
-                        OperateResult.AppendText("<<请重新输入TSN\n", Color.Green);
+                        OperateResult.AppendText("<<请重新输入" + TSNorSN + "\n", Color.Green);
                         return false;
                     }
                 }
@@ -232,7 +241,7 @@ namespace UAS_MES.Make
         {
             type = ListA.Rows[step - 2]["psr_type"].ToString()=="WIFI"?"MAC": ListA.Rows[step - 2]["psr_type"].ToString();
             //如果前缀和长度都满足的话
-            if ((ListA.Rows[step-2]["psr_length"].ToString() == "" ? true : code.Text.Length == ListA.Rows[step-2]["psr_length"].ToString().Length) && (ListA.Rows[step - 2]["psr_prefix"].ToString() == "" ? true : code.Text.StartsWith(ListA.Rows[step - 2]["psr_prefix"].ToString())))
+            if ((ListA.Rows[step-2]["psr_length"].ToString() == "" ? true : code.Text.Length == int.Parse(ListA.Rows[step-2]["psr_length"].ToString())) && (ListA.Rows[step - 2]["psr_prefix"].ToString() == "" ? true : code.Text.StartsWith(ListA.Rows[step - 2]["psr_prefix"].ToString())))
             {
                 switch (type)
                 {
@@ -242,33 +251,40 @@ namespace UAS_MES.Make
                         if (checkExist("ms_imei1='" + code.Text + "' or ms_imei2 = '" + code.Text + "' or ms_imei3 = '" + code.Text + "'"))
                         {
                             OperateResult.AppendText(">>" + type + ":" + code.Text + "错误,不允许重复\n", Color.Red);
+                            OperateResult.AppendText(">>请输入"+type+"\n", Color.Green);
                             code.Text = "";
                             return false;
                         }
                         else
                         {
                             //判断IMEI1,IMEI2,IMEI3中是否已经有这个号了
-                            foreach (DictionaryEntry de in hs) {
-                                if (de.Key.ToString().Contains("IMEI")&&de.Value.ToString()==code.Text) {
-                                    OperateResult.AppendText(">>" + type + ":" + code.Text + "已录,请重新输入\n", Color.Red);
-                                    code.Text = "";
-                                    return false;
-                                }
+                            if (imei.ToString().Contains(code.Text)) {
+                                OperateResult.AppendText(">>" + type + ":" + code.Text + "已录,请重新输入\n", Color.Red);
+                                OperateResult.AppendText(">>请输入" + type + "\n", Color.Green);
+                                code.Text = "";
+                                return false;
                             }
                         }
+                        //通过校验,将包含IMEI的值拼接
+                        imei.Append("'"+code.Text+"',");
+                        s1.Append("MS_" + type + " = '" + code.Text + "',");
                         break;
                     case "BT":
                     case "MAC":
                     case "NETCODE":
                         if (checkExist("MS_"+type+"='"+code.Text+"'")) {
                             OperateResult.AppendText(">>" + type + ":" + code.Text + "错误,不允许重复\n", Color.Red);
+                            OperateResult.AppendText(">>请输入" + type + "\n", Color.Green);
                             code.Text = "";
                             return false;
                         }
+                        //通过校验,将包含IMEI的值拼接
+                        container.Append(" or MS_"+type+"='"+code.Text+"'");
+                        s1.Append("MS_" + type + " = '" + code.Text + "',");
                         break;
                 }
                 //满足规则,则采集
-                hs.Add(type,code.Text);
+                //hs.Add(type,code.Text);
                 //说明已经是最后一个校验规则
                 if (step == ListA.Rows.Count+1)
                 {
@@ -277,34 +293,31 @@ namespace UAS_MES.Make
                     if (!dh.CheckExist("makeserial", "ms_sncode='" + SN + "'"))
                     {
                         bool flag = true;
-                        StringBuilder s1 = new StringBuilder();
-                        //再次校验关联采集信息
-                        foreach (DictionaryEntry de in hs)
+                        //不包含IMEI采集信息
+                        if (imei.ToString() == "")
                         {
-                            s1.Append("MS_"+ de.Key.ToString()+" = '"+de.Value.ToString()+"',");
-                            if (de.Key.ToString().Contains("IMEI"))
-                            {
-                                if (checkExist("ms_imei1='" + de.Value.ToString() + "' or ms_imei2 = '" + de.Value.ToString() + "' or ms_imei3 = '" + de.Value.ToString() + "'"))
-                                {
-                                    flag = false;
-                                    OperateResult.AppendText(">>"+de.Key.ToString()+":" + de.Value.ToString() + "已存在,请重新输入TSN\n", Color.Red);
-                                    //清空信息
-                                    clearInfo();
-                                    break;
-                                }
+                            //已存在,错误
+                            if (checkExist(container.ToString().Substring(4))) {
+                                flag = false;
+                                OperateResult.AppendText(">>请重新输入TSN,重新转换\n", Color.Green);
+                                //清空信息
+                                clearInfo();
                             }
-                            else
-                            {
-                                if (checkExist("MS_" + de.Key.ToString() + "='" + de.Value.ToString() + "'"))
-                                {
-                                    flag = false;
-                                    OperateResult.AppendText(">>" + de.Key.ToString() + ":" + de.Value.ToString() + "已存在,请重新输入TSN\n", Color.Red);
-                                    //清空信息
-                                    clearInfo();
-                                    break;
-                                }
+                        }
+                        else
+                        {
+                            string imeiStr = imei.Remove(imei.Length - 1, 1).ToString();
+                            logsql.Clear();
+                            logsql.Append("ms_imei1 in(" + imeiStr + ") or ms_imei2 in (" + imeiStr + ") or ms_imei3 in (" + imeiStr + ")" + container.ToString());
+                            //已存在
+                            if (checkExist(logsql.GetString())){
+                                flag = false;
+                                OperateResult.AppendText(">>请重新输入TSN,重新转换\n", Color.Green);
+                                //清空信息
+                                clearInfo();
                             }
                         }
+
                         //根据flag判断关联采集信息二次校验结果
                         if (flag=true) {
                             //说明SN和关联采集信息二次校验通过,则进行转换和采集信息绑定
@@ -318,28 +331,29 @@ namespace UAS_MES.Make
                             //写入日志
                             LogManager.DoLog("修改序列号:" + TSN + "为" + SN + "成功!" + "操作人:" + User.UserCode);
                             //完成该道工序 setFinish
-                            LogicHandler.UpdateMakeMessage(TSN, ms_macode.Text, "序列烧录转换", User.UserSourceCode, User.UserCode, "序列烧录转换成功", out errorMessage);
+                            LogicHandler.UpdateMakeMessage(SN, ms_macode.Text, "序列烧录转换", User.UserSourceCode, User.UserCode, "序列烧录转换成功", out errorMessage);
 
                             //输出提示用户“>>序列号转换成功”,“>>关联采集成功”
                             OperateResult.AppendText(">>关联采集成功\n", Color.Green);
                             //获取剩余数,刷新页面
                             sql.Clear();
-                            sql.Append("select ma_qty-mcd_inqty as remain_qty ");
-                            sql.Append("from makeserial left join make on ms_makecode=ma_code left join product on ");
-                            sql.Append("ms_prodcode=pr_code left join makecraftdetail on ms_makecode=mcd_macode where ms_sncode=:sncode and mcd_stepcode='" + User.CurrentStepCode + "'");
+                            sql.Append("select mcd_inqty from makecraftdetail where mcd_macode='"+ms_macode.Text+"' and mcd_stepcode='"+ User.CurrentStepCode + "'");
                             dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select", SN);
-                            if (dt.Rows.Count>0) {
-                                remain_qty.Text = dt.Rows[0]["remain_qty"].ToString();
+                            if (dt.Rows.Count > 0)
+                            {
+                                remain_qty.Text = ma_qty -int.Parse(dt.Rows[0]["mcd_inqty"].ToString())+"";
                             }
                             //更新页面计数+1
                             count.Text = int.Parse(count.Text) + 1 + "";
                             //完成之后,清除信息
                             clearInfo();
+                            OperateResult.AppendText(">>请输入TSN号\n", Color.Green);
                         }
                     }
                     else
                     {
-                        OperateResult.AppendText(">>序列号" + SN + "已存在,请重新输入TSN\n", Color.Red);
+                        OperateResult.AppendText(">>序列号" + SN + "已存在\n", Color.Red);
+                        OperateResult.AppendText(">>请重新输入TSN\n", Color.Green);
                         code.Text = "";
                         //清空信息
                         clearInfo();
@@ -356,6 +370,7 @@ namespace UAS_MES.Make
             else {
                 //重新输入
                 OperateResult.AppendText(">>" + ListA.Rows[step-2]["psr_type"] + "校验不通过,请重新输入\n", Color.Red);
+                OperateResult.AppendText(">>请重新输入" + ListA.Rows[step - 2]["psr_type"] + "\n", Color.Green);
                 code.Text = "";
                 return false;
             }
@@ -482,9 +497,13 @@ namespace UAS_MES.Make
             //步骤重置为0
             step = 0;
             //关联采集信息清空
-            if (hs!=null) {
-                hs.Clear();
-            }
+            //if (hs!=null) {
+            //    hs.Clear();
+            //}
+            container.Clear();
+            imei.Clear();
+            logsql.Clear();
+            s1.Clear();
         }
 
         private void cancel_Click(object sender, EventArgs e)