From 2c040f55fe2efe7eb46a62634a0dfe80263ab056 Mon Sep 17 00:00:00 2001 From: lihao Date: Wed, 29 Oct 2025 17:00:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A8=E6=A3=80=E6=8A=A5=E5=91=8A=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=A2=9E=E5=8A=A0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../approve/action/ReportApproveAction.java | 109 ++++++++++++++++++ .../action/rule/CheckQMSApproveRule.java | 48 ++++++++ 2 files changed, 157 insertions(+) create mode 100644 qc/src/private/nc/impl/qc/c003/approve/action/ReportApproveAction.java create mode 100644 qc/src/private/nc/impl/qc/c003/approve/action/rule/CheckQMSApproveRule.java diff --git a/qc/src/private/nc/impl/qc/c003/approve/action/ReportApproveAction.java b/qc/src/private/nc/impl/qc/c003/approve/action/ReportApproveAction.java new file mode 100644 index 00000000..0adb2cd8 --- /dev/null +++ b/qc/src/private/nc/impl/qc/c003/approve/action/ReportApproveAction.java @@ -0,0 +1,109 @@ +package nc.impl.qc.c003.approve.action; + +import com.yonyou.cloud.ncc.plugin.entity.OperationInfo; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import nc.bs.pub.compiler.AbstractCompiler2; +import nc.bs.qc.c003.maintain.rule.ApproveEventAfterRule; +import nc.bs.qc.c003.maintain.rule.ApproveEventBeforeRule; +import nc.bs.qc.c003.maintain.rule.ReportSendMessageWithPlatTemplateRule; +import nc.bs.qc.c003.maintain.rule.ReportSendNCCMessageRule; +import nc.bs.qc.c003.maintain.rule.UpdateSnDocRule; +import nc.bs.qc.c003.plugin.ReportBPPlugInPoint; +import nc.bs.scmpub.pf.PfParameterUtil; +import nc.bs.scmpub.rule.VOSagaFrozenValidateRule; +import nc.impl.pubapp.pattern.data.bill.BillUpdate; +import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; +import nc.impl.qc.c003.approve.action.rule.*; +import nc.itf.qc.c003.compensate.IReportSagasCompensate; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pub.lang.UFBoolean; +import nc.vo.pubapp.AppContext; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.qc.c003.entity.ReportVO; +import nc.vo.qc.c003.rule.Write23WhenAuditRule; +import nc.vo.qc.c003.rule.Write4331WhenAuditRule; +import nc.vo.qc.c003.rule.Write4ZRuleWhenAuditRule; +import nc.vo.qc.c003.rule.WriteMMWhenAuditRule; +import nc.vo.qc.pub.enumeration.QCBillStatusEnum; +import nc.vo.qc.pub.util.QCSagasUtils; +import nc.vo.scmpub.res.billtype.QCBillType; + +public class ReportApproveAction { + public ReportApproveAction() { + } + + public ReportVO[] approveReport(ReportVO[] voArray, AbstractCompiler2 script) { + PfParameterUtil util = new PfParameterUtil(script == null ? null : script.getPfParameterVO(), voArray); + ReportVO[] originBills = (ReportVO[])util.getOrginBills(); + ReportVO[] clientBills = (ReportVO[])util.getClientFullInfoBill(); + CompareAroundProcesser processer = new CompareAroundProcesser(ReportBPPlugInPoint.ReportApprove); + this.addBeforeRule(processer); + processer.before(clientBills, null); + if (null != script) { + try { + script.procFlowBacth(script.getPfParameterVO()); + } catch (Exception e) { + ExceptionUtils.wrappException(e); + } + } + + if (script != null && script.getPfParameterVO().m_preValueVos != null) { + ReportVO[] appovedVos = (ReportVO[])script.getPfParameterVO().m_preValueVos; + + for(ReportVO vo : appovedVos) { + vo.getHVO().setApprover(AppContext.getInstance().getPkUser()); + vo.getHVO().setTaudittime(AppContext.getInstance().getBusiDate()); + vo.getParentVO().setStatus(1); + } + + BillUpdate update = new BillUpdate(); + clientBills = (ReportVO[])update.update(appovedVos, originBills); + QCSagasUtils.frozenAndAddSaga(voArray, QCBillType.ReportBill.getCode(), "1", (OperationInfo)null); + Map paramMap = new HashMap(); + paramMap.put("actionname", "approve_C003_mmsfc"); + paramMap.put("hid", originBills[0].getHVO().getPrimaryKey()); + paramMap.put("reportapprover", originBills[0].getHVO().getApprover()); + paramMap.put("reporttaudittime", originBills[0].getHVO().getTaudittime()); + paramMap.put("reportfbillstatus", originBills[0].getHVO().getFbillstatus()); + QCSagasUtils.compensate(paramMap, IReportSagasCompensate.class); + this.addAfterRule(processer, clientBills); + processer.after(clientBills, null); + return clientBills; + } else { + String msg = NCLangRes4VoTransl.getNCLangRes().getStrByID("c010003_0", "0c010003-0062"); + ExceptionUtils.wrappBusinessException(msg); + return null; + } + } + + private void addAfterRule(CompareAroundProcesser pc, ReportVO[] bills) { + pc.addAfterRule(new WriteC001WhenAuditRule(UFBoolean.TRUE)); + Integer status = bills[0].getHVO().getFbillstatus(); + if (QCBillStatusEnum.APPROVE.value().equals(status)) { + pc.addAfterRule(new Write23WhenAuditRule(UFBoolean.TRUE)); + pc.addAfterRule(new Write4331WhenAuditRule(UFBoolean.TRUE)); + pc.addAfterRule(new Write4ZRuleWhenAuditRule(UFBoolean.TRUE)); + pc.addAfterRule(new WriteMMWhenAuditRule(UFBoolean.TRUE)); + pc.addAfterRule(new WriteC005WhenAuditRule(UFBoolean.TRUE)); + pc.addAfterRule(new WriteContinueBatchWhenAuditRule(UFBoolean.TRUE)); + pc.addAfterRule(new WriteICBatchDocWhenAuditRule(UFBoolean.TRUE)); + pc.addAfterRule(new Write55D2WhenAuditRule(UFBoolean.TRUE)); + pc.addAfterRule(new ReportSendMessageWithPlatTemplateRule()); + pc.addAfterRule(new ReportSendNCCMessageRule()); + pc.addAfterRule(new UpdateSnDocRule(UFBoolean.TRUE)); + pc.addAfterRule(new ApproveEventAfterRule()); + pc.addAfterRule(new CreateStockStateChangeBill()); + } + + } + + private void addBeforeRule(CompareAroundProcesser pc) { + pc.addBeforeRule(new VOSagaFrozenValidateRule(true)); + pc.addBeforeRule(new ChkCanApproveRule()); + pc.addBeforeRule(new ApproveEventBeforeRule()); + + pc.addBeforeRule(new CheckQMSApproveRule()); + } +} diff --git a/qc/src/private/nc/impl/qc/c003/approve/action/rule/CheckQMSApproveRule.java b/qc/src/private/nc/impl/qc/c003/approve/action/rule/CheckQMSApproveRule.java new file mode 100644 index 00000000..89c9a0e1 --- /dev/null +++ b/qc/src/private/nc/impl/qc/c003/approve/action/rule/CheckQMSApproveRule.java @@ -0,0 +1,48 @@ +package nc.impl.qc.c003.approve.action.rule; + + +import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; +import nc.impl.pubapp.pattern.rule.ICompareRule; +import nc.jdbc.framework.processor.ColumnProcessor; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.qc.c003.entity.ReportHeaderVO; +import nc.vo.qc.c003.entity.ReportItemVO; +import nc.vo.qc.c003.entity.ReportVO; + +import java.util.Map; + +public class CheckQMSApproveRule implements ICompareRule { + + public CheckQMSApproveRule() { + } + + public void process(ReportVO[] vos, ReportVO[] originVOs) { + if (vos == null) { + return; + } + for (ReportVO vo : vos) { + + ReportHeaderVO hvo = vo.getHVO(); + for (ReportItemVO itemVO : vo.getBVO()) { + + + try { + String countSql = "SELECT vbdef32 from po_arriveorder_b WHERE pk_arriveorder_b= '" + itemVO.getCfirstbid() + "'"; + String vbdef32 = (String) new BaseDAO().executeQuery(countSql, new ColumnProcessor()); + if (null !=vbdef32 && "Y".equals(vbdef32)) { + if (!"Y".equals(hvo.getVdef10())) { + ExceptionUtils.wrappBusinessException("QMS未回传检验结果请勿提交"); + } + } + } catch (DAOException e) { + throw new RuntimeException(e); + } + } + + + } + + } + +}