Browse Source

添加包装过站送检

章政 7 years ago
parent
commit
cc612b6703
1 changed files with 96 additions and 3 deletions
  1. 96 3
      UAS-MES/PublicMethod/LogicHandler.cs

+ 96 - 3
UAS-MES/PublicMethod/LogicHandler.cs

@@ -478,25 +478,39 @@ namespace UAS_MES.PublicMethod
             ExeSQL.Clear();
             //获取途程和产品信息
             sql.Clear();
-            sql.Append("select ms_craftcode,ms_prodcode,ms_makecode,ms_stepcode,ms_stepname,ms_paststep  from mes_package_view left join makeserial ");
-            sql.Append("on ms_sncode=v_barcode and ms_makecode=v_makecode where v_outboxcode='" + iOutBoxCode + "' and rownum=1");
+            sql.Append("select ms_craftcode,ms_prodcode,ms_craftcode,ms_salecode,ms_outboxcode,pr_qualmethod,ms_makecode,ms_stepcode,ms_stepname,ms_paststep,nvl(pr_qcbatchqty,0)pr_qcbatchqty,");
+            sql.Append("nvl(pr_sendchecktype,'LineCode')pr_sendchecktype  from mes_package_view left join makeserial on ms_sncode=v_barcode ");
+            sql.Append("and ms_makecode=v_makecode left join product on ms_prodcode=pr_code where v_outboxcode='" + iOutBoxCode + "' and rownum=1");
             DataTable dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
             string prodcode = "";
             string craftcode = "";
             string paststep = "";
+            string pr_sendchecktype = "";
+            string ms_salecode = "";
+            string pr_qcbatchqty = "";
+            string pr_qualmethod = "";
+            string ms_craftcode = "";
+            string ms_outboxcode = "";
             if (dt.Rows.Count > 0)
             {
                 prodcode = dt.Rows[0]["ms_prodcode"].ToString();
                 craftcode = dt.Rows[0]["ms_craftcode"].ToString();
                 paststep = dt.Rows[0]["ms_paststep"].ToString();
+                pr_sendchecktype = dt.Rows[0]["pr_sendchecktype"].ToString();
+                ms_salecode = dt.Rows[0]["ms_salecode"].ToString();
+                pr_qcbatchqty = dt.Rows[0]["pr_qcbatchqty"].ToString();
+                pr_qualmethod = dt.Rows[0]["pr_qualmethod"].ToString();
+                ms_craftcode = dt.Rows[0]["ms_craftcode"].ToString();
+                ms_outboxcode = dt.Rows[0]["ms_outboxcode"].ToString();
             }
             sql.Clear();
-            sql.Append("select cd_nextstepcode,nvl(cd_ifmidinput,0)cd_ifmidinput,nvl(cd_ifmidfinish,0)cd_ifmidfinish from craft left join craftdetail ");
+            sql.Append("select cd_nextstepcode,cr_id,nvl(cd_ifmidinput,0)cd_ifmidinput,nvl(cd_ifmidfinish,0)cd_ifmidfinish from craft left join craftdetail ");
             sql.Append("on cr_id=cd_crid where cr_code='" + craftcode + "' and cr_prodcode='" + prodcode + "' and cd_stepcode='" + CurrentStep + "'");
             dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
             if (dt.Rows.Count > 0)
             {
                 string nextstepcode = dt.Rows[0]["cd_nextstepcode"].ToString();
+                string cr_id = dt.Rows[0]["cr_id"].ToString();
                 string cd_ifmidinput = dt.Rows[0]["cd_ifmidinput"].ToString();
                 string cd_ifmidfinish = dt.Rows[0]["cd_ifmidfinish"].ToString();
                 string ifpast = paststep.Contains(CurrentStep) ? "0" : "1";
@@ -524,6 +538,85 @@ namespace UAS_MES.PublicMethod
                     //更新完工数量
                     ExeSQL.Add("update make set ma_madeqty=nvl(ma_madeqty,0)+" + totalcount + " where ma_code='" + iMakeCode + "'");
                 }
+                string ifoqc = dh.getFieldDataByCondition("craftdetail", "cd_ifoqc", "cd_crid=" + cr_id + " and cd_stepcode='" + nextstepcode + "'").ToString();
+                //如果下一道工序是OQC需要生成送检批次
+                if (ifoqc == "-1")
+                {
+                    sql.Clear();
+                    sql.Append("select ob_checkno,nvl(ob_nowcheckqty,0)ob_nowcheckqty,nvl(ob_batchqty,0)ob_batchqty,pr_qualmethod,nvl(pr_qcbatchqty,0)pr_qcbatchqty,");
+                    sql.Append("nvl(pr_ifautocutcheckno, 0)pr_ifautocutcheckno,nvl(ob_id, 0)ob_id from product left join oqcbatch on pr_code");
+                    sql.Append("=ob_prodcode and ob_linecode='" + User.UserLineCode + "'and ob_status = 'ENTERING' ");
+                    sql.Append("AND OB_SOURCE = '工序' and '" + pr_sendchecktype + "'='LineCode' or ob_salecode='" + ms_salecode + "' where pr_code = '" + prodcode + "'");
+                    dt = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
+                    string ob_id = "";
+                    string ob_checkno = "";
+                    string pr_ifautocutcheckno = "";
+                    int ob_nowcheckqty = 0;
+                    int ob_batchqty = 0;
+                    string pa_status = "";
+                    string pa_checkno = "";
+                    if (dt.Rows.Count > 0)
+                    {
+                        ob_id = dt.Rows[0]["ob_id"].ToString();
+                        ob_checkno = dt.Rows[0]["ob_checkno"].ToString();
+                        pr_ifautocutcheckno = dt.Rows[0]["pr_ifautocutcheckno"].ToString();
+                        ob_nowcheckqty = int.Parse(dt.Rows[0]["ob_nowcheckqty"].ToString());
+                        ob_batchqty = int.Parse(dt.Rows[0]["ob_batchqty"].ToString());
+                        if (ms_outboxcode != "")
+                        {
+                            dt = (DataTable)dh.ExecuteSql("SELECT max(pa_status)pa_status, max(pa_checkno)pa_checkno  FROM PACKAGE WHERE PA_OUTBOXCODE = '" + iOutBoxCode + "' ", "select");
+                            pa_status = dt.Rows[0]["pa_status"].ToString();
+                            pa_checkno = dt.Rows[0]["pa_checkno"].ToString();
+                        }
+                        //如果不存在抽检批次则重新赋值
+                        if (ob_checkno == "" || (pr_ifautocutcheckno != "0" && ob_nowcheckqty >= ob_batchqty && ms_outboxcode == "" || (ms_outboxcode != "" && pa_status == "1" && pa_checkno == "")))
+                        {
+                            if (ob_checkno != "")
+                            {
+                                dh.ExecuteSql("update OQCBatch set ob_status='UNCHECK' WHERE OB_CHECKNO='" + ob_checkno + "'", "update");
+                            }
+                            ob_id = dh.GetSEQ("oqcbatch_seq");
+                            ob_checkno = dh.GetSerialNumberByCaller("Make!CheckQC");
+                            sql.Clear();
+                            sql.Append("insert into OQCBatch(ob_id,ob_checkno,ob_makecode,ob_source,ob_indate,ob_inman,ob_batchqty,ob_status,ob_prodcode,");
+                            sql.Append("ob_projectcode,ob_craftcode,ob_stepcode,ob_nowcheckqty,ob_linecode,ob_sourcecode,ob_salecode)values(" + ob_id + ",");
+                            sql.Append(" '" + ob_checkno + "', '" + iMakeCode + "','工序',sysdate,'" + User.UserCode + "'," + pr_qcbatchqty + ",'ENTERING','" + prodcode + "',");
+                            sql.Append("'" + pr_qualmethod + "','" + ms_craftcode + "','" + User.CurrentStepCode + "',1,'" + User.UserLineCode + "','" + User.UserSourceCode + "',");
+                            sql.Append("case when '" + pr_sendchecktype + "' = 'LineCode' then '' else '" + ms_salecode + "' end)");
+                            ExeSQL.Add(sql.ToString());
+                        }
+                    }
+                    ExeSQL.Add("update package set pa_checkno='" + ob_checkno + "' where pa_outboxcode='" + iOutBoxCode + "'");
+                    //插入抽检批次明细表
+                    sql.Clear();
+                    sql.Append("insert into OQCBatchDetail(obd_id,obd_obid,obd_sncode,obd_outboxcode,obd_makecode,obd_checkno,obd_builddate,obd_prodcode) ");
+                    sql.Append(" select OQCBatchDetail_SEQ.nextval," + ob_id + ",ms_sncode,ms_outboxcode,ms_makecode,ms_checkno,sysdate,'" + prodcode + "' from ");
+                    sql.Append("makeserial where ms_outboxcode = '" + iOutBoxCode + "'");
+                    ExeSQL.Add(sql.ToString());
+                    sql.Clear();
+                    sql.Append("update OQCBatch set ob_nowcheckqty = (select count(1) from oqcbatchdetail where obd_obid = " + ob_id + ")  where ob_id = " + ob_id);
+                    ExeSQL.Add(sql.ToString());
+                    sql.Clear();
+                    sql.Append("merge into makeserial using mes_package_view on (v_outboxcode='" + iOutBoxCode + "' ");
+                    sql.Append("and ms_sncode=v_barcode and ms_makecode=v_makecode) when matched then update ");
+                    sql.Append(" set ms_checkno='" + ob_checkno + "'");
+                    dh.ExecuteSql(sql.ToString(), "update");
+                    if (pr_ifautocutcheckno != "0")
+                    {
+                        if (ms_outboxcode != "" && pa_status == "1")
+                        {
+                            //////已经封箱,判断是否箱内所有的序列号都已经送检了,等于0则表示都送检了
+                            if (dh.getFieldDataByCondition("packagedetail left join makeserial  on ms_sncode = pd_barcode and ms_makecode = pd_makecode ", "count(1) ", "pd_outboxcode = '" + ms_outboxcode + "' and nvl(ms_checkno,' ')= ' '").ToString() == "0")
+                            {
+                                ExeSQL.Add("update OQCBatch set ob_status='UNCHECK' WHERE OB_CHECKNO='" + ob_checkno + "'  AND ob_nowcheckqty>=ob_batchqty");
+                            }
+                        }
+                        else if (ms_outboxcode == "")
+                        {
+                            ExeSQL.Add("update OQCBatch set ob_status='UNCHECK' WHERE OB_CHECKNO='" + ob_checkno + "'  AND ob_nowcheckqty>=ob_batchqty");
+                        }
+                    }
+                }
                 //插入StepPass
                 sql.Clear();
                 sql.Append("insert into STEPPASSED(SP_ID,SP_IFTURNIN,SP_IFTURNOUT,SP_IFREWORK,SP_IFBACKFLOW,SP_CHECKNO,SP_RESULT");