From 1d7b9a9e45eea18a3017e77500986adb7d53211f Mon Sep 17 00:00:00 2001 From: zoujiangtao Date: Wed, 12 Nov 2025 14:24:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=86=85=E5=AE=B9=EF=BC=9A?= =?UTF-8?q?=E5=80=BA=E5=88=B8=E6=88=90=E6=9C=AC=E6=91=8A=E9=94=80=E3=80=81?= =?UTF-8?q?=E5=80=BA=E5=88=B8=E5=8F=91=E8=A1=8C=E8=A1=A8=E5=8D=95=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=20=E6=97=B6=E9=97=B4=EF=BC=9A2025-11-12=2014=EF=BC=9A?= =?UTF-8?q?24=20=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E9=82=B9=E6=B1=9F?= =?UTF-8?q?=E6=B6=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/sys/plugin/form/ZqcbtxBillPlugin.java | 79 +++++++++++++++++++ .../sys/sys/plugin/form/ZqfxBillPlugin.java | 49 ++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ZqcbtxBillPlugin.java create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ZqfxBillPlugin.java diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ZqcbtxBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ZqcbtxBillPlugin.java new file mode 100644 index 0000000..e60a14e --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ZqcbtxBillPlugin.java @@ -0,0 +1,79 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.bill.OperationStatus; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.form.events.AfterDoOperationEventArgs; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.sdk.plugin.Plugin; +import shkd.sys.sys.plugin.report.InterestBearingRptListPlugin; + +import java.math.BigDecimal; +import java.util.EventObject; + +/** + * 债券成本摊销 → 单据界面插件 + */ +public class ZqcbtxBillPlugin extends AbstractBillPlugIn implements Plugin { + private static final Log logger = LogFactory.getLog(ZqcbtxBillPlugin.class); + + @Override + public void afterBindData(EventObject e) { + super.afterBindData(e); + if (OperationStatus.ADDNEW == this.getView().getFormShowParameter().getStatus()) { + DynamicObject dataEntity = this.getModel().getDataEntity(true); + BigDecimal shkd_amountfield = dataEntity.getBigDecimal("shkd_amountfield"); + DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("entryentity"); + assignmentEntryentity(dynamicObjectCollection, shkd_amountfield); + } + } + + @Override + public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { + super.afterDoOperation(afterDoOperationEventArgs); + if (afterDoOperationEventArgs.getOperateKey().equals("calculation")) { + DynamicObject dataEntity = this.getModel().getDataEntity(true); + BigDecimal shkd_amountfield = dataEntity.getBigDecimal("shkd_amountfield"); + DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("entryentity"); + assignmentEntryentity(dynamicObjectCollection, shkd_amountfield); + } + } + + @Override + public void propertyChanged(PropertyChangedArgs e) { + super.propertyChanged(e); + String keyName = e.getProperty().getName(); + if (("sharefrequency").equals(keyName) || ("e_adjustmentamount").equals(keyName)) { + DynamicObject dataEntity = this.getModel().getDataEntity(true); + BigDecimal shkd_amountfield = dataEntity.getBigDecimal("shkd_amountfield"); + DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("entryentity"); + assignmentEntryentity(dynamicObjectCollection, shkd_amountfield); + } + } + + private void assignmentEntryentity(DynamicObjectCollection dynamicObjectCollection, BigDecimal shkd_amountfield) { + for (int i = 0; i < dynamicObjectCollection.size(); i++) { + DynamicObject dynamicObject = dynamicObjectCollection.get(i); + if (i == 0) { + this.getModel().setValue("shkd_amountfield1", shkd_amountfield, i); + } else { + DynamicObject dynamicObject1 = dynamicObjectCollection.get(i - 1); + this.getModel().setValue("shkd_amountfield1", dynamicObject1.getBigDecimal("shkd_amountfield2"), i); + } + BigDecimal shkd_amountfield1 = dynamicObject.getBigDecimal("shkd_amountfield1");// 期初摊余成本 + BigDecimal e_accrualinterest = dynamicObject.getBigDecimal("e_accrualinterest");// 计提利息 + BigDecimal e_payinterest = dynamicObject.getBigDecimal("e_payinterest");// 支付利息 + BigDecimal e_actualamount = dynamicObject.getBigDecimal("e_actualamount");// 实际摊销 + // 期初摊余成本+实际摊销 + this.getModel().setValue("shkd_amountfield2", shkd_amountfield1.add(e_actualamount), i); + // 计提利息(调整后) + this.getModel().setValue("shkd_jtlx", dynamicObject.getBigDecimal("e_accrualinterest"), i); + // 支付利息(调整后) + this.getModel().setValue("shkd_zflx", dynamicObject.getBigDecimal("e_payinterest"), i); + } + this.getModel().setDataChanged(true); + } +} \ No newline at end of file diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ZqfxBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ZqfxBillPlugin.java new file mode 100644 index 0000000..caf1685 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/ZqfxBillPlugin.java @@ -0,0 +1,49 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.form.events.AfterDoOperationEventArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.math.BigDecimal; + +/** + * 债券发行单据界面插件 + */ +public class ZqfxBillPlugin extends AbstractBillPlugIn implements Plugin { + @Override + public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { + super.afterDoOperation(afterDoOperationEventArgs); + if (afterDoOperationEventArgs.getOperateKey().equals("audit")) { + DynamicObject dataEntity = this.getModel().getDataEntity(true); + String billno = dataEntity.getString("billno"); + BigDecimal drawamount = dataEntity.getBigDecimal("drawamount");// 发行金额 + BigDecimal feedetailamt = BigDecimal.ZERO;// 费用明细金额 + boolean flag = false; + DynamicObject dynamicObject = dataEntity.getDynamicObject("org"); + DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("cfm_feebill", + "id,billno,entry,entry.srcbillno,entry.feedetailamt", new QFilter("org", QCP.equals, dynamicObject.getPkValue()).toArray()); + for (DynamicObject cfm_feebill : dynamicObjects) { + DynamicObjectCollection dynamicObjectCollection = cfm_feebill.getDynamicObjectCollection("entry"); + for (DynamicObject entry : dynamicObjectCollection) { + if (entry.getString("srcbillno").equals(billno)) { + feedetailamt = entry.getBigDecimal("feedetailamt"); + flag = true; + break; + } + if (flag) { + break; + } + } + } + dataEntity.set("shkd_amountfield", drawamount.subtract(feedetailamt)); + SaveServiceHelper.save(new DynamicObject[]{dataEntity}); + this.getView().invokeOperation("refresh"); + } + } +} \ No newline at end of file