|
|
@@ -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");
|