From 8dfdf6c1bc2c55afbc87d7b481c914cc5d037e26 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Fri, 11 Jul 2025 16:12:37 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=98=E6=AC=BE=E7=94=B3=E8=AF=B7=E5=8D=95?= =?UTF-8?q?=EF=BC=88=E9=A1=B9=E7=9B=AE=E8=B5=84=E9=87=91=EF=BC=89=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E6=A0=A1=E9=AA=8C,=E4=BB=98=E6=AC=BE=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=B8=AD=E4=B8=80=E4=B8=AA=E5=90=88=E5=90=8C=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=A1=AB=E5=86=99=E5=A4=9A=E8=A1=8C=E7=9B=B8=E5=90=8C?= =?UTF-8?q?=E7=9A=84=E6=94=AF=E4=BB=98=E7=B1=BB=E5=9E=8B+=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pr/plugin/form/PaymentApplySubOp.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySubOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySubOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySubOp.java new file mode 100644 index 0000000..f66e137 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/PaymentApplySubOp.java @@ -0,0 +1,64 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.validate.AbstractValidator; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +//付款申请单(项目资金)提交校验-付款信息中一个合同不能填写多行相同的支付类型+结算方式 +public class PaymentApplySubOp extends AbstractOperationServicePlugIn { + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("contract");//合同名称 + e.getFieldKeys().add("paymenttype");//支付类型 + e.getFieldKeys().add("settletype");//结算方式 + } + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.getValidators().add(new ValidatorExt()); + } + + class ValidatorExt extends AbstractValidator { + @Override + public void validate() { + ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject dataEntity = extendedDataEntity.getDataEntity(); + DynamicObjectCollection entryEntityCollection = dataEntity.getDynamicObjectCollection("entryentity");//付款信息分录 + Map> combinationIndices = new HashMap<>(); + for (int i = 0; i < entryEntityCollection.size(); i++) { + DynamicObject entryEntity = entryEntityCollection.get(i); + DynamicObject contract = entryEntity.getDynamicObject("contract");//合同名称 + String contractNumber = null; + if (contract != null) { + contractNumber = contract.getString("number");//合同编号 + } + String paymentType = entryEntity.getString("paymenttype");//支付类型 + DynamicObject settleType = entryEntity.getDynamicObject("settletype");//合同名称 + String settleTypeName = null; + if (settleType != null) { + settleTypeName = settleType.getString("name");//合同编号 + } + String combinationKey = contractNumber + "|" + paymentType + "|" + settleTypeName; + if (combinationIndices.containsKey(combinationKey)) { + this.addFatalErrorMessage(extendedDataEntity, "付款信息中一个合同不能填写多行相同的支付类型+结算方式"); + } else { + List indices = new ArrayList<>(); + indices.add(i); + combinationIndices.put(combinationKey, indices); + } + } + } + } + } +}