Browse Source

栈板装箱,自动计算重量

callm 2 weeks ago
parent
commit
4813e222a0
1 changed files with 66 additions and 10 deletions
  1. 66 10
      UAS_MES_YDCY/FunctionCode/Packing/Packing_PackageCollectionPallet.cs

+ 66 - 10
UAS_MES_YDCY/FunctionCode/Packing/Packing_PackageCollectionPallet.cs

@@ -288,7 +288,7 @@ namespace UAS_MES_NEW.Packing
                         PR_CHECKCARTONW = dh.getFieldDataByCondition("craftdetail left join craft on cr_id=cd_crid left join makeserial on ms_craftcode =cr_code and cr_prodcode = ms_prodcode", "nvl(cd_ifweigh,'0') cd_ifweigh", "ms_sncode='" + sn_code.Text + "' and ms_makecode='" + oMakeCode + "' and cd_stepcode = '" + User.CurrentStepCode + "'").ToString();
                         //获取序列号信息
                         sql.Clear();
-                        sql.Append("select nvl(pr_Singlelevelqty,1)pr_Singlelevelqty,nvl(ms_iostatus,0) ms_iostatus,pa_salecode,ms_salecode,ms_outno,ms_makecode,ms_prodcode,nvl(pa_downstatus,0) pa_downstatus,pa_sccode,pa_checkno,pr_packrule,");
+                        sql.Append("select nvl(pr_Singlelevelqty,1)pr_Singlelevelqty,nvl(ms_iostatus,0) ms_iostatus,pr_code,pa_salecode,ms_salecode,ms_outno,ms_makecode,ms_prodcode,nvl(pa_downstatus,0) pa_downstatus,pa_sccode,pa_checkno,pr_packrule,");
                         sql.Append("nvl(pr_outboxinnerqty,0)pr_outboxinnerqty,nvl(pr_sendchecktype,'LineCode')pr_sendchecktype from makeserial left join product on ms_prodcode=pr_code left join packagedetail ");
                         sql.Append("on pd_barcode=ms_sncode left join package on pa_id =pd_paid where ms_id='" + oMsID + "'");
                         dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
@@ -297,9 +297,9 @@ namespace UAS_MES_NEW.Packing
                         string ms_iostatus = "";
                         string ms_outno = "";
                         string ms_salecode_text = "";
-
                         if (dt.Rows.Count > 0)
                         {
+                            pr_code.Text = dt.Rows[0]["pr_code"].ToString();
                             pr_Singlelevelqty = dt.Rows[0]["pr_Singlelevelqty"].ToString();
                             StandardQTY = decimal.Parse(dt.Rows[0]["pr_outboxinnerqty"].ToString());
                             ms_makecode = dt.Rows[0]["ms_makecode"].ToString();
@@ -415,6 +415,11 @@ namespace UAS_MES_NEW.Packing
                                     return;
                                 }
                                 ////箱号不存在的情况
+                                if (!CheckRow())
+                                {
+                                    OperateResult.AppendText(">>采集后层数超出,不允许采集\n", Color.Red);
+                                    return;
+                                }
                                 if (LogicHandler.Packing_Pallet(sn_code.Text, pa_outboxcode.Text, AutoGenBoxCode.Checked, "标准", User.UserSourceCode, User.UserCode, pr_outboxinnerqty.Text, Cancel.Checked, out oOutBoxCode, out ErrorMessage))
                                 {
                                     //提示正确返回时传递的信息
@@ -978,23 +983,74 @@ namespace UAS_MES_NEW.Packing
             }
         }
 
-        private void RefreshWeight()
+        private bool CheckRow()
+        {
+            int packageqty = dh.getRowCount("makeserial", "ms_outboxcode='" + pa_outboxcode.Text + "'") + 1;
+            string pc_level = dh.getFieldDataByCondition("product left join PRODUCTCONSUMABLES on pc_prid=pr_id", "nvl(max(pc_level),0)", "pr_code='" + pr_code.Text + "'").ToString();
+            int rowcount = 0;
+            if (packageqty % int.Parse(pr_Singlelevelqty) == 0)
+            {
+                rowcount = packageqty / int.Parse(pr_Singlelevelqty);
+            }
+            else
+            {
+                rowcount = packageqty / int.Parse(pr_Singlelevelqty) + 1;
+            }
+            if (int.Parse(pc_level) < rowcount)
+            {
+                return false;
+            }
+            return true;
+        }
+
+        private string RefreshWeight()
         {
-            string boxweight = dh.getFieldDataByCondition("makeserial", "sum(nvl(MS_MIDBOXWEIGHT,0))", "ms_outboxcode='" + pa_outboxcode.Text + "'").ToString();
+            string boxweight = dh.getFieldDataByCondition("makeserial", "nvl(sum(MS_MIDBOXWEIGHT),0)", "ms_outboxcode='" + pa_outboxcode.Text + "'").ToString();
             sumpalletweight.Text = (double.Parse(boxweight)).ToString();
             int packageqty = dh.getRowCount("makeserial", "ms_outboxcode='" + pa_outboxcode.Text + "'");
-            //获取维护的层数信息
-            DataTable dt = (DataTable)dh.ExecuteSql("select pc_level,pc_weight from product left join PRODUCTCONSUMABLES on pc_prid=pr_id where pr_code='" + pr_code.Text + "'", "select");
             //根据单层装的数量,自动计算栈板装的层数
-            int rowcount = packageqty / int.Parse(pr_Singlelevelqty);
-            for (int i = 0; i < dt.Rows.Count; i++)
+            int rowcount = 0;
+            if (packageqty % int.Parse(pr_Singlelevelqty) == 0)
+            {
+                rowcount = packageqty / int.Parse(pr_Singlelevelqty);
+            }
+            else
+            {
+                rowcount = packageqty / int.Parse(pr_Singlelevelqty) + 1;
+            }
+            //获取维护的层数信息
+            DataTable dt = (DataTable)dh.ExecuteSql("select nvl(pc_level,0)pc_level,nvl(pc_weight,0)pc_weight from product left join PRODUCTCONSUMABLES on pc_prid=pr_id where pr_code='" + pr_code.Text + "' order by pc_level ", "select");
+            if (dt.Rows.Count > 0)
             {
-                string pc_level = dt.Rows[0]["pc_level"].ToString();
+                string pc_level = dt.Rows[dt.Rows.Count - 1]["pc_level"].ToString();
                 if (int.Parse(pc_level) < rowcount)
                 {
-
+                    return "栈板维护最大层数" + pc_level + ",超出层数不允许采集";
+                }
+                double attach_weight = 0;
+                for (int i = 0; i < rowcount; i++)
+                {
+                    if (rowcount == i + 1)
+                    {
+                        //如果当前层满层了
+                        if (packageqty % int.Parse(pr_Singlelevelqty) == 0)
+                        {
+                            attach_weight += (int.Parse(pr_Singlelevelqty)) * double.Parse(dt.Rows[i]["pc_weight"].ToString());
+                        }
+                        //没满层的话
+                        else
+                        {
+                            attach_weight += (packageqty % int.Parse(pr_Singlelevelqty)) * double.Parse(dt.Rows[i]["pc_weight"].ToString());
+                        }
+                    }
+                    else
+                    {
+                        attach_weight += (int.Parse(pr_Singlelevelqty)) * double.Parse(dt.Rows[i]["pc_weight"].ToString());
+                    }
                 }
+                sumpalletweight.Text = (double.Parse(boxweight) + attach_weight).ToString();
             }
+            return "";
         }