|
@@ -452,192 +452,16 @@ namespace UAS_MES.PublicMethod
|
|
|
/// <param name="iUserCode"></param>
|
|
|
/// <param name="iResult"></param>
|
|
|
/// <param name="iBoxType"></param>
|
|
|
- public static void OutBoxStepPass(string iOutBoxCode, string iMakeCode, string iSourceCode, string iUserCode, string iResult, string iBoxType)
|
|
|
+ public static bool OutBoxStepPass(string iOutBoxCode, string iMakeCode, string iSourceCode, string iUserCode, string iResult, string iBoxType,out string oErrorMessage)
|
|
|
{
|
|
|
- string CurrentStep = "";
|
|
|
- string LineCode = "";
|
|
|
- string CurrentStepName = "";
|
|
|
- List<string> ExeSQL = new List<string>();
|
|
|
- GetStepCodeAndNameAndLineBySource(iSourceCode, ref CurrentStep, ref CurrentStepName, ref LineCode);
|
|
|
- sql.Clear();
|
|
|
- sql.Append("insert into MakeProcess(mp_id,mp_makecode,mp_maid, mp_mscode,mp_sncode,mp_stepcode,mp_stepname,mp_craftcode");
|
|
|
- sql.Append(",mp_craftname,mp_kind,mp_result,mp_indate,mp_inman,mp_wccode,mp_linecode,mp_sourcecode,mp_snstatus,mp_sncheckno");
|
|
|
- sql.Append(",mp_snoutboxcode) select MakeProcess_seq.nextval, ma_code,ma_id,ms_code,ms_sncode,'" + CurrentStep + "','" + CurrentStepName + "',");
|
|
|
- sql.Append("ms_craftcode,ms_craftname,'" + iBoxType + "','" + iResult + "',sysdate,'" + iUserCode + "',ma_wccode,'" + LineCode + "','" + iSourceCode + "',");
|
|
|
- sql.Append("ms_status,ms_checkno,ms_outboxcode from makeserial left join mes_package_view on ms_makecode=v_makecode ");
|
|
|
- sql.Append("and ms_sncode=v_barcode left join make on ma_code=ms_makecode where v_outboxcode='" + iOutBoxCode + "'");
|
|
|
- ExeSQL.Add(sql.ToString());
|
|
|
- //获取子箱的总数
|
|
|
- sql.Clear();
|
|
|
- sql.Append("select pd_makecode,count(1) num from packagedetail left join makeserial ");
|
|
|
- sql.Append("on ms_sncode=pd_barcode and ms_makecode=pd_makecode where pd_outboxcode='" + iOutBoxCode + "' group by pd_makecode");
|
|
|
- DataTable MakeQTY = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
|
|
|
- for (int i = 0; i < MakeQTY.Rows.Count; i++)
|
|
|
- {
|
|
|
- string ma_code = MakeQTY.Rows[i]["pd_makecode"].ToString();
|
|
|
- string num = MakeQTY.Rows[i]["num"].ToString();
|
|
|
- ExeSQL.Add("update makecraftdetail set mcd_inqty=mcd_inqty+" + num + ",mcd_outqty=mcd_outqty+" + num + ",mcd_okqty=mcd_okqty+" + num + " where mcd_macode='" + ma_code + "' and mcd_stepcode='" + User.CurrentStepCode + "'");
|
|
|
- }
|
|
|
- dh.ExecuteSQLTran(ExeSQL.ToArray());
|
|
|
- ExeSQL.Clear();
|
|
|
- //获取途程和产品信息
|
|
|
- sql.Clear();
|
|
|
- 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,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";
|
|
|
- //下一工序不为空的时候更新序列号的下一工序
|
|
|
- if (nextstepcode != "")
|
|
|
- {
|
|
|
- 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_stepcode='" + CurrentStep + "',ms_stepname='" + CurrentStepName + "',");
|
|
|
- sql.Append("ms_nextstepcode='" + nextstepcode + "', ms_sccode = '" + iSourceCode + "',ms_paststep = ");
|
|
|
- sql.Append("ms_paststep || case when " + ifpast + " > 0 then ',' || '" + CurrentStep + "' end");
|
|
|
- ExeSQL.Add(sql.ToString());
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //更新下一执行步骤
|
|
|
- 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_stepcode='" + CurrentStep + "',ms_stepname='" + CurrentStepName + "',ms_status=2,");
|
|
|
- sql.Append("ms_nextstepcode='', ms_sccode = '" + iSourceCode + "',ms_paststep = ");
|
|
|
- sql.Append("ms_paststep || case when " + ifpast + " > 0 then ',' || '" + CurrentStep + "' end");
|
|
|
- ExeSQL.Add(sql.ToString());
|
|
|
- //更新完工数量
|
|
|
- for (int i = 0; i < MakeQTY.Rows.Count; i++)
|
|
|
- {
|
|
|
- string ma_code = MakeQTY.Rows[i]["pd_makecode"].ToString();
|
|
|
- string num = MakeQTY.Rows[i]["num"].ToString();
|
|
|
- ExeSQL.Add("update make set ma_madeqty=nvl(ma_madeqty,0)+" + num + " where ma_code='" + ma_code + "'");
|
|
|
- }
|
|
|
- }
|
|
|
- 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");
|
|
|
- sql.Append(",SP_SCCODE,SP_STEPCODE,SP_LINECODE,SP_WCCODE,SP_MAKECODE,SP_SNCODE,SP_YMD,SP_HM,SP_IFNG,SP_PRODCODE");
|
|
|
- sql.Append(",SP_DATE,SP_CRAFTCODE,sp_inman) select STEPPASSED_SEq.NEXTVAL,'" + cd_ifmidinput + "','" + cd_ifmidfinish + "',");
|
|
|
- sql.Append("ms_ifrework,case when ms_ifrework=-1 then 0 when ms_stepcode='" + CurrentStep + "' then 0 when " + ifpast + ">0 ");
|
|
|
- sql.Append("then -1 else 0 end,ms_checkno,'良品','" + iSourceCode + "','" + CurrentStep + "','" + LineCode + "',ms_wccode,ms_makecode,ms_sncode,");
|
|
|
- sql.Append("to_char(sysdate,'yyyymmdd'),to_char(sysdate,'hh24miss'),0,ms_prodcode,SYSDATE,ms_craftcode,'" + iUserCode + "' ");
|
|
|
- sql.Append("from mes_package_view left join makeserial on ms_sncode=v_barcode and ms_makecode=v_makecode where v_outboxcode='" + iOutBoxCode + "'");
|
|
|
- ExeSQL.Add(sql.ToString());
|
|
|
- dh.ExecuteSQLTran(ExeSQL.ToArray());
|
|
|
- }
|
|
|
+ oErrorMessage = "";
|
|
|
+ string[] param = new string[] { iOutBoxCode, iMakeCode, iSourceCode, iUserCode,iResult ,iBoxType, oErrorMessage };
|
|
|
+ dh.CallProcedure("CS_CARTONBOXSTEPRESULT", ref param);
|
|
|
+ oErrorMessage = param[6];
|
|
|
+ if (oErrorMessage == "" || oErrorMessage == null || oErrorMessage == "null")
|
|
|
+ return true;
|
|
|
+ else
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|