From 3b7b20c5aa14c76d3ce1b435d6b2739768ef6e54 Mon Sep 17 00:00:00 2001 From: weiyunlong Date: Sat, 14 Dec 2024 13:01:21 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=AB=8B=E9=A1=B9=E6=A0=A1=E9=AA=8C"?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=8E=A7=E5=88=B6=E6=80=BB=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E5=A4=A7=E4=BA=8E=E9=87=87=E8=B4=AD=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=80=BB=E9=87=91=E9=A2=9D=E4=B8=8E=E8=A7=84=E5=88=92?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E4=B9=8B=E5=92=8C"=202.=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8D=95=E6=8D=AE=E7=BC=96=E5=8F=B7=E8=B6=85=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=96=E5=80=BC=E9=80=BB=E8=BE=91=203.=E7=AB=8B=E9=A1=B9?= =?UTF-8?q?=E9=80=89=E6=8B=A9"=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7"?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E8=87=AA=E5=8A=A8=E6=90=BA=E5=B8=A6"?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8D=95"=E5=88=B0=E6=98=8E=E7=BB=86=20S?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImportPurchaseApplyBillPlugin.java | 1 + .../rebm/formplugin/PurPlanFormPlugin.java | 2 +- .../opplugin/PurProjectSubmitOPPlugin.java | 87 +++++++++++++++++++ 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 main/java/shkd/repc/rebm/opplugin/PurProjectSubmitOPPlugin.java diff --git a/main/java/shkd/repc/rebm/formplugin/ImportPurchaseApplyBillPlugin.java b/main/java/shkd/repc/rebm/formplugin/ImportPurchaseApplyBillPlugin.java index 124a33d..588db1e 100644 --- a/main/java/shkd/repc/rebm/formplugin/ImportPurchaseApplyBillPlugin.java +++ b/main/java/shkd/repc/rebm/formplugin/ImportPurchaseApplyBillPlugin.java @@ -184,6 +184,7 @@ public class ImportPurchaseApplyBillPlugin extends AbstractBillPlugIn implements model.setValue("purentrycontent", entry.get("qeug_materialname"), index);// 物料名称 // model.setValue("qeug_qty", entry.get("qeug_qty"), index);// 数量 model.setValue("purentryproject", project, index);// 项目 + model.setValue("qeug_cgxq", dynamicObject, index);//需求单据 } } } diff --git a/main/java/shkd/repc/rebm/formplugin/PurPlanFormPlugin.java b/main/java/shkd/repc/rebm/formplugin/PurPlanFormPlugin.java index 21ad43a..229cb62 100644 --- a/main/java/shkd/repc/rebm/formplugin/PurPlanFormPlugin.java +++ b/main/java/shkd/repc/rebm/formplugin/PurPlanFormPlugin.java @@ -43,7 +43,7 @@ public class PurPlanFormPlugin extends AbstractBillPlugIn implements HyperLinkCl private void showPurplan(String formId, String shkd_purplanno) { if (shkd_purplanno != null) { - DynamicObject object = BusinessDataServiceHelper.loadSingle(formId, new QFilter[]{new QFilter("qeug_billno", QCP.equals, shkd_purplanno)}); + DynamicObject object = BusinessDataServiceHelper.loadSingle(formId, new QFilter[]{new QFilter("billno", QCP.equals, shkd_purplanno)}); if (null != object) { BillShowParameter params = new BillShowParameter(); params.setFormId(formId); diff --git a/main/java/shkd/repc/rebm/opplugin/PurProjectSubmitOPPlugin.java b/main/java/shkd/repc/rebm/opplugin/PurProjectSubmitOPPlugin.java new file mode 100644 index 0000000..7425e45 --- /dev/null +++ b/main/java/shkd/repc/rebm/opplugin/PurProjectSubmitOPPlugin.java @@ -0,0 +1,87 @@ +package shkd.repc.rebm.opplugin; + +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.validate.AbstractValidator; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 采购立项提交 + * qeug_rebm_project_ext + */ +public class PurProjectSubmitOPPlugin extends AbstractOperationServicePlugIn { + + private static final Log logger = LogFactory.getLog(PurProjectSubmitOPPlugin.class); + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + e.addValidator(new AbstractValidator() { + @Override + public void validate() { + String operateKey = this.getOperateKey(); + ExtendedDataEntity[] dataEntities1 = this.getDataEntities(); + switch (operateKey) { + case "submit": + for (ExtendedDataEntity extendedDataEntity : dataEntities1) { + //控制金额校验 + DynamicObject dataEntity = extendedDataEntity.getDataEntity(); + List ids = new ArrayList<>(); + Map XqMap = new HashMap<>(); + DynamicObjectCollection bidSections = dataEntity.getDynamicObjectCollection("bidsection");//标段 + BigDecimal totalAmount = BigDecimal.ZERO;//遍历明细,需求单去重后累加申请金额,非需求单累加规划金额 + if (bidSections != null) { + for (DynamicObject bidSection : bidSections) { + DynamicObjectCollection projectEntries = bidSection.getDynamicObjectCollection("projectentry");//采购明细 + if (projectEntries != null) { + for (DynamicObject projectEntry : projectEntries) { + long id = projectEntry.getLong("qeug_purentry_id"); + //非采购需求,计算规划金额 + if (id == 0) { + totalAmount = totalAmount.add(projectEntry.getBigDecimal("planamount")); + }else { + //需求_对应金额,若id相同,覆盖 + DynamicObject qeugCgxq = projectEntry.getDynamicObject("qeug_cgxq"); + if (null != qeugCgxq) { + qeugCgxq = BusinessDataServiceHelper.loadSingle(qeugCgxq.getPkValue(),"recon_settleplanbill"); + XqMap.put(qeugCgxq.getLong("id"), qeugCgxq.getBigDecimal("qeug_applyamount")); + } + } + } + } + } + if (!XqMap.isEmpty()) { + for (Map.Entry entry : XqMap.entrySet()) { + BigDecimal value = entry.getValue(); + totalAmount = totalAmount.add(value); + } + } + } + //采购立项_采购控制总金额(单头) + BigDecimal totalcontrol = dataEntity.getBigDecimal("totalcontrol"); + if (totalcontrol.compareTo(totalAmount) > 0) { + this.addErrorMessage(extendedDataEntity, "采购控制总金额不能大于采购申请总金额与规划金额之和"); + } + } + break; + default: + break; + + } + } + }); + } +}