From d3499a4d1cffe55f0edf04a4a196698ff22ac6f8 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Tue, 29 Jul 2025 15:24:58 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=9A=E5=85=A5=E5=BA=93=E5=8D=95=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E6=93=8D=E4=BD=9C=E6=8F=92=E4=BB=B6=EF=BC=9A=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=98=AF=E5=90=A6=E5=90=88=E8=AE=A1=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E8=B6=85=E8=BF=87=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E9=87=8F=EF=BC=9B2=EF=BC=9A=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=8D=95=E5=AE=A1=E6=A0=B8=E5=8F=8D=E5=AE=A1=E6=A0=B8=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=8F=92=E4=BB=B6=EF=BC=9A=E5=AE=A1=E6=A0=B8=E3=80=81?= =?UTF-8?q?=E5=8F=8D=E5=AE=A1=E6=A0=B8=E6=97=B6=EF=BC=8C=E5=B0=86=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E6=95=B0=E9=87=8F=E5=8F=8D=E5=86=99=E8=87=B3?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/MaterialInbValidatorAuditOp.java | 69 +++++++++++++++++++ .../operate/PurchaseReqBackWriteOp.java | 14 ++-- 2 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialInbValidatorAuditOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialInbValidatorAuditOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialInbValidatorAuditOp.java new file mode 100644 index 0000000..25d198e --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/MaterialInbValidatorAuditOp.java @@ -0,0 +1,69 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +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 kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.math.BigDecimal; + +/** + * 入库单审核操作插件:校验是否合计数量超过采购申请单数量 + */ +public class MaterialInbValidatorAuditOp extends AbstractOperationServicePlugIn { + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("matinsource"); + e.getFieldKeys().add("zcgj_purchaseapply"); + e.getFieldKeys().add("entryentity"); + e.getFieldKeys().add("listingid"); + e.getFieldKeys().add("qty"); + } + + @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 ecma_MaterialInBill = extendedDataEntity.getDataEntity(); + String matInSource = ecma_MaterialInBill.getString("matinsource");//入库来源 + DynamicObject zcgj_purchaseApply = ecma_MaterialInBill.getDynamicObject("zcgj_purchaseapply");//采购申请 + if ("6".equals(matInSource) && zcgj_purchaseApply != null) { + DynamicObject ecma_purchaseApply = BusinessDataServiceHelper.loadSingle("ecma_purchaseapply", + new QFilter[]{new QFilter("id", "=", zcgj_purchaseApply.getLong("id"))});//采购申请单 + DynamicObjectCollection entryEntityCollection = ecma_MaterialInBill.getDynamicObjectCollection("entryentity");//入库单分录 + DynamicObjectCollection purchaseEntryCollection = ecma_purchaseApply.getDynamicObjectCollection("purchaseentry");//采购明细单据体 + for (int i = 0; i < entryEntityCollection.size(); i++) { + DynamicObject entryEntity = entryEntityCollection.get(i); + String listingId = entryEntity.getString("listingid");//入库单分录-合同清单id + + for (DynamicObject purchaseEntry : purchaseEntryCollection) { + String purchaseEntryId = purchaseEntry.getString("id");//采购明细单据体-id + if (purchaseEntryId != null && purchaseEntryId.equals(listingId)) { + BigDecimal qty = entryEntity.getBigDecimal("qty");//入库单分录-数量 + BigDecimal inCount = purchaseEntry.getBigDecimal("zcgj_incount");//采购明细单据体-已入库数量 + BigDecimal purchaseQty = purchaseEntry.getBigDecimal("purchaseqty");//采购明细单据体-采购数量 + BigDecimal sum = qty.add(inCount); + if (sum.compareTo(purchaseQty) > 0) { + int i1 = i + 1; + this.addFatalErrorMessage(extendedDataEntity, "第" + i1 + "行,填写数量大于采购申请对应的采购数量!!"); + } + } + } + } + } + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PurchaseReqBackWriteOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PurchaseReqBackWriteOp.java index db24cab..f5c3380 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PurchaseReqBackWriteOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PurchaseReqBackWriteOp.java @@ -2,8 +2,12 @@ package zcgj.zcdev.zcdev.pr.plugin.operate; 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.plugin.args.AfterOperationArgs; +import kd.bos.entity.validate.AbstractValidator; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; @@ -13,7 +17,7 @@ import java.util.ArrayList; import java.util.List; /** - * 入库单保存删除插件:保存、删除时,将入库单数量反写至采购申请单 + * 入库单审核反审核操作插件:审核、反审核时,将入库单数量反写至采购申请单 */ public class PurchaseReqBackWriteOp extends AbstractOperationServicePlugIn { @@ -35,8 +39,8 @@ public class PurchaseReqBackWriteOp extends AbstractOperationServicePlugIn { //为采购申请单时反写数量 DynamicObject ecma_purchaseApply = BusinessDataServiceHelper.loadSingle("ecma_purchaseapply", new QFilter[]{new QFilter("id", "=", zcgj_purchaseApply.getLong("id"))});//采购申请单 - DynamicObjectCollection purchaseEntryCollection = ecma_purchaseApply.getDynamicObjectCollection("purchaseentry");//采购明细单据体 DynamicObjectCollection entryEntityCollection = ecma_MaterialInBill.getDynamicObjectCollection("entryentity");//入库单分录 + DynamicObjectCollection purchaseEntryCollection = ecma_purchaseApply.getDynamicObjectCollection("purchaseentry");//采购明细单据体 for (DynamicObject entryEntity : entryEntityCollection) { String listingId = entryEntity.getString("listingid");//入库单分录-合同清单id @@ -45,9 +49,11 @@ public class PurchaseReqBackWriteOp extends AbstractOperationServicePlugIn { if (purchaseEntryId != null && purchaseEntryId.equals(listingId)) { BigDecimal qty = entryEntity.getBigDecimal("qty");//入库单分录-数量 BigDecimal inCount = purchaseEntry.getBigDecimal("zcgj_incount");//采购明细单据体-已入库数量 - if ("save".equals(operationKey)) { + if ("audit".equals(operationKey)) { + //审核时 purchaseEntry.set("zcgj_incount", inCount.add(qty));//采购明细单据体-已入库数量 - } else { + } else if ("unaudit".equals(operationKey)) { + //反审核时 purchaseEntry.set("zcgj_incount", inCount.subtract(qty));//采购明细单据体-已入库数量 } break;