From c36e23b893eb9f5f7cb5ebb04c2ba8afc06e6ee0 Mon Sep 17 00:00:00 2001 From: xuhaihui <2098865055@qq.com> Date: Mon, 28 Jul 2025 16:24:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95=E5=8F=8D=E5=86=99?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7=E5=8D=95=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8E=E9=80=89=E6=8B=A9=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/MaterialInbPurchaseApplyPlugin.java | 16 +++++ .../operate/PurchaseReqBackWriteOp.java | 68 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PurchaseReqBackWriteOp.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialInbPurchaseApplyPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialInbPurchaseApplyPlugin.java index 1b7b623..5604ec7 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialInbPurchaseApplyPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/MaterialInbPurchaseApplyPlugin.java @@ -48,12 +48,28 @@ public class MaterialInbPurchaseApplyPlugin extends AbstractBillPlugIn implement HashMap paramters = new HashMap<>(); DynamicObjectCollection entryEntityCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("entryentity");//入库单分录 List entryIds = new ArrayList<>(); + List entryIds2 = new ArrayList<>(); for (DynamicObject entryEntity : entryEntityCollection) { Long entryEntityId = entryEntity.getLong("listingid");//合同清单id entryIds.add(entryEntityId); + entryIds2.add(entryEntityId); } long purchaseApplyId = purchaseApply.getLong("id");//采购申请单id + QFilter[] qFilte = new QFilter[]{new QFilter("zcgj_purchaseapply.id", QCP.equals, purchaseApplyId)}; + DynamicObject[] ecma_materialInBills = BusinessDataServiceHelper.load("ecma_materialinbill","entryentity,entryentity.listingid", qFilte);//入库单 + for (DynamicObject materialInBill : ecma_materialInBills) { + DynamicObjectCollection entryEntityCollection1 = materialInBill.getDynamicObjectCollection("entryentity");//入库单分录 + for (DynamicObject entryEntity : entryEntityCollection1) { + long entryEntityId = entryEntity.getLong("listingid");//入库单分录-合同清单id + if (materialInBill.get("id").equals(this.getModel().getValue("id"))){ + if (!entryIds2.contains(entryEntityId)){ + break; + } + } + entryIds.add(entryEntityId); + } + } paramters.put("purchaseApplyId", purchaseApplyId); paramters.put("entryIds", entryIds); formShowParameter.setCustomParams(paramters); 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 new file mode 100644 index 0000000..db24cab --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/PurchaseReqBackWriteOp.java @@ -0,0 +1,68 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * 入库单保存删除插件:保存、删除时,将入库单数量反写至采购申请单 + */ +public class PurchaseReqBackWriteOp extends AbstractOperationServicePlugIn { + + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + + String operationKey = e.getOperationKey();//操作标识 + DynamicObject[] dataEntities = e.getDataEntities(); + List modifiedEntities = new ArrayList<>(); + + for (DynamicObject model : dataEntities) { + long id = model.getLong("id"); + QFilter f1 = new QFilter("id", "=", id); + DynamicObject ecma_MaterialInBill = BusinessDataServiceHelper.loadSingle("ecma_materialinbill", new QFilter[]{f1});//入库单 + 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 purchaseEntryCollection = ecma_purchaseApply.getDynamicObjectCollection("purchaseentry");//采购明细单据体 + DynamicObjectCollection entryEntityCollection = ecma_MaterialInBill.getDynamicObjectCollection("entryentity");//入库单分录 + for (DynamicObject entryEntity : entryEntityCollection) { + 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");//采购明细单据体-已入库数量 + if ("save".equals(operationKey)) { + purchaseEntry.set("zcgj_incount", inCount.add(qty));//采购明细单据体-已入库数量 + } else { + purchaseEntry.set("zcgj_incount", inCount.subtract(qty));//采购明细单据体-已入库数量 + } + break; + } + } + } + modifiedEntities.add(ecma_purchaseApply); + } + } + if (!modifiedEntities.isEmpty()) { + try { + SaveServiceHelper.save(modifiedEntities.toArray(new DynamicObject[0])); + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } + } +}