From 9700d1d14787080a3b4e0ce0fc6a2ec17b2bf98f Mon Sep 17 00:00:00 2001 From: hefengkai <958118178@qq.com> Date: Fri, 25 Oct 2024 16:50:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B0=E8=B4=A7=E5=8D=95=E5=B7=B2=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=B8=8B=E6=B8=B8=E6=A3=80=E9=AA=8C=E5=8D=95=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=88=B0=E8=B4=A7=E5=8D=95=E9=9C=80=E8=A6=81=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=8E=A7=E5=88=B6=E4=B8=8D=E8=83=BD=E6=94=B6=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../m23/approve/rule/ChkCanUnApproveRule.java | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 pu/src/private/nc/impl/pu/m23/approve/rule/ChkCanUnApproveRule.java diff --git a/pu/src/private/nc/impl/pu/m23/approve/rule/ChkCanUnApproveRule.java b/pu/src/private/nc/impl/pu/m23/approve/rule/ChkCanUnApproveRule.java new file mode 100644 index 0000000..7c383c6 --- /dev/null +++ b/pu/src/private/nc/impl/pu/m23/approve/rule/ChkCanUnApproveRule.java @@ -0,0 +1,138 @@ +package nc.impl.pu.m23.approve.rule; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.itf.pu.reference.ic.M45PUServices; +import nc.itf.pu.reference.ic.M47PUServices; +import nc.vo.ml.NCLangRes4VoTransl; +import nc.vo.pu.m23.entity.ArriveItemVO; +import nc.vo.pu.m23.entity.ArriveVO; +import nc.vo.pu.pub.util.ApproveFlowUtil; +import nc.vo.pub.lang.UFBoolean; +import nc.vo.pub.lang.UFDouble; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.vo.pubapp.pattern.pub.MathTool; +import nc.vo.scmpub.res.billtype.IBillType; +import nc.vo.scmpub.res.billtype.POBillType; +import nc.vo.scmpub.res.billtype.SCBillType; + + +public class ChkCanUnApproveRule + extends Object + implements IRule +{ + public void process(ArriveVO[] voArray) { + for (ArriveVO aggVO : voArray) + { + chkCanUnApprove(aggVO); + } + + checkHasPurchaseIn(voArray); + + checkHasSubcontIn(voArray); + } + + private void checkHasPurchaseIn(ArriveVO[] vos) { + List hidLst = getHIDSourceFrom(vos, POBillType.Order); + if (hidLst.size() == 0) { + return; + } + Map hidMap = M45PUServices.getMapBysrcHid((String[])hidLst + .toArray(new String[hidLst.size()])); + if (null == hidMap || hidMap.size() == 0) { + return; + } + for (UFBoolean value : hidMap.values()) { + if (UFBoolean.TRUE.equals(value)) { + throwHasStoreInExp(); + } + } + } + + private void checkHasSubcontIn(ArriveVO[] vos) { + List hidLst = getHIDSourceFrom(vos, SCBillType.Order); + if (hidLst.size() == 0) { + return; + } + if (M47PUServices.hasFromSource(hidLst)) { + throwHasStoreInExp(); + } + } + + + private void chkCanUnApprove(ArriveVO aggVO) { + if (!ApproveFlowUtil.isCanUnApprove(aggVO)) { + String message = NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0122"); + ExceptionUtils.wrappBusinessException(message); + } + + ArriveItemVO[] itemVOArray = aggVO.getBVO(); + for (int i = 0; i < itemVOArray.length; i++) { + + if (MathTool.nvl(itemVOArray[i].getNaccumstorenum()).doubleValue() > 0.0D) { + throwHasStoreInExp(); + } + if (itemVOArray[i].getBfaflag().booleanValue()) + { + ExceptionUtils.wrappBusinessException( + NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0124")); + } + + if (MathTool.nvl(itemVOArray[i].getNaccumreplnum()).doubleValue() > 0.0D) + { + ExceptionUtils.wrappBusinessException( + NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0125")); + } + + if (aggVO.getHVO().getBisback() == null || !aggVO.getHVO().getBisback().booleanValue()) + { + if (MathTool.nvl(itemVOArray[i].getNaccumchecknum()) + .doubleValue() > 0.0D) + { + ExceptionUtils.wrappBusinessException( + NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0126")); + } + } + + if (MathTool.nvl(itemVOArray[i].getNaccumletgonum()).doubleValue() > 0.0D) + { + ExceptionUtils.wrappBusinessException( + NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0127")); + } + + if (UFBoolean.TRUE.equals(itemVOArray[i].getBtransasset())) + { + ExceptionUtils.wrappBusinessException( + NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0128")); + } + + if (itemVOArray[i].getNaccumbacknum() != null && + !UFDouble.ZERO_DBL.equals(itemVOArray[i] + .getNaccumbacknum())) + { + ExceptionUtils.wrappBusinessException( + NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0192")); + } + } + } + + private List getHIDSourceFrom(ArriveVO[] vos, IBillType bt) { + List hidLst = new ArrayList(); + for (ArriveVO vo : vos) { + for (ArriveItemVO item : vo.getBVO()) { + if (bt.getCode().equals(item.getCsourcetypecode())) { + hidLst.add(item.getPk_arriveorder()); + break; + } + } + } + return hidLst; + } + + private void throwHasStoreInExp() { + ExceptionUtils.wrappBusinessException( + NCLangRes4VoTransl.getNCLangRes().getStrByID("4004040_0", "04004040-0123")); + } +}