From 9b88ffde84ab49475a5a9ec88aa31755059b150c Mon Sep 17 00:00:00 2001 From: XiangLingFeng <1518871916@qq.com> Date: Thu, 18 Dec 2025 15:22:16 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=AE=A1=E6=81=AF=E5=8D=95=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=BB=98=E6=AC=BE=E5=8D=95=E5=8F=98=E6=9B=B4=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E9=BB=98=E8=AE=A4=EF=BC=9A=E6=9C=AA=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=202=E3=80=81=E4=BB=98=E6=AC=BE=E5=8D=95=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=B8=8A=E6=B8=B8=E5=B1=95=E7=A4=BA=E7=9A=84=E4=BB=98=E6=AC=BE?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...erestAccrualGenPaymentOperationPlugin.java | 1 + .../PaymentBillDeleteLkOperationPlugin.java | 96 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/operate/PaymentBillDeleteLkOperationPlugin.java diff --git a/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/operate/InterestAccrualGenPaymentOperationPlugin.java b/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/operate/InterestAccrualGenPaymentOperationPlugin.java index 79538c0..c9d62e1 100644 --- a/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/operate/InterestAccrualGenPaymentOperationPlugin.java +++ b/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/operate/InterestAccrualGenPaymentOperationPlugin.java @@ -201,6 +201,7 @@ public class InterestAccrualGenPaymentOperationPlugin extends AbstractOperationS payBill.set("exchangerate",BigDecimal.ONE);//付款汇率 payBill.set("priority","public");//紧急程度 默认普通 payBill.set("paymentchannel","counter");//支付渠道:柜台(默认) + payBill.set("changestatus","unchange");//变更状态(未变更) payBill.set("bizdate", currentDate);//业务日期 payBill.set("settletype",settleType);//结算方式 payBill.set("kdsz_czpaystatue","1");//财资付款状态 默认无需推送 diff --git a/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/operate/PaymentBillDeleteLkOperationPlugin.java b/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/operate/PaymentBillDeleteLkOperationPlugin.java new file mode 100644 index 0000000..fdcfc88 --- /dev/null +++ b/code/tmc/kdsz-zyf25-tmc-cfm/src/main/java/kdsz/zyf25/tmc/cfm/plugin/operate/PaymentBillDeleteLkOperationPlugin.java @@ -0,0 +1,96 @@ +package kdsz.zyf25.tmc.cfm.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.PreparePropertysEventArgs; +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 kd.sdk.plugin.Plugin; + +import java.util.HashSet; +import java.util.Iterator; + +/** + * 源单类型为:计息单的付款单删除时同步删除计息单及计息单上游的原始单据中付款单关联信息 + */ +public class PaymentBillDeleteLkOperationPlugin extends AbstractOperationServicePlugIn implements Plugin { + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("sourcebilltype"); + e.getFieldKeys().add("sourcebillid"); + } + + @Override + public void afterExecuteOperationTransaction(AfterOperationArgs e) { + super.afterExecuteOperationTransaction(e); + DynamicObject[] bills = e.getDataEntities(); + for (DynamicObject bill : bills) { + String srcBillType = bill.getString("sourcebilltype"); + Long payBillId = bill.getLong("id"); + if ("kdsz_interestaccrual".equals(srcBillType)){ + Long srcBillId = bill.getLong("sourcebillid"); + //查询计息单 + DynamicObject srcBill = BusinessDataServiceHelper.loadSingle(srcBillId, "kdsz_interestaccrual"); + if (srcBill != null){ + DynamicObjectCollection srcEntries = srcBill.getDynamicObjectCollection("entryentity"); + for (DynamicObject srcEntry : srcEntries) { + Long srcPayBillId = srcEntry.getLong("kdsz_e_paybillid"); + if (srcPayBillId == 0){ + continue; + } + if (srcPayBillId.compareTo(payBillId) == 0){ + srcEntry.set("kdsz_e_paybillid",0L); + srcEntry.set("kdsz_e_paybill",null); + } + } + SaveServiceHelper.update(srcBill); + deletePaymentLk(srcBill,payBillId); + } + } + } + } + private void deletePaymentLk(DynamicObject srcBill,Long payBillId){ + String feeEntity = srcBill.getString("kdsz_srcentity"); + Object feeBillId = srcBill.get("kdsz_srcbillid"); + //根据源单id,源单类型找到费用明细 + DynamicObject feeBill = BusinessDataServiceHelper.loadSingle(feeBillId, feeEntity); + if (feeBill != null) { + DynamicObjectCollection feeEntries = feeBill.getDynamicObjectCollection("entry"); + HashSet oriBillIds = new HashSet<>(); + for (DynamicObject feeEntry : feeEntries) { + long pjId = feeEntry.getLong("srcbillid"); + oriBillIds.add(pjId); + } + //根据费用明细分录的上游id查询上游单据的付息记录并将本条计息单的记录删除 + QFilter filter = new QFilter("id", "in", oriBillIds); + //TODO: 2025/12/10 暂时定为开票登记 + Long jxId = srcBill.getLong("id");//计息单id + DynamicObject[] oriBills = BusinessDataServiceHelper.load("cdm_payablebill", "id", + new QFilter[]{filter}); + for (int i = 0; i < oriBills.length; i++) { + oriBills[i] = BusinessDataServiceHelper.loadSingle(oriBills[i].getPkValue(),"cdm_payablebill"); + DynamicObjectCollection srcPayEntries = oriBills[i].getDynamicObjectCollection("kdsz_payentry"); + for (DynamicObject srcPayEntry : srcPayEntries) { + Long srcJXBillId = srcPayEntry.getLong("kdsz_interestbillid"); + if (srcJXBillId.compareTo( jxId) == 0){ + //获取计息关联付款分录 + DynamicObjectCollection jxLkPayEntries = srcPayEntry.getDynamicObjectCollection("kdsz_paylinkentry"); + Iterator iterator = jxLkPayEntries.iterator(); + while (iterator.hasNext()){ + DynamicObject next = iterator.next(); + long lkPayBillId = next.getLong("kdsz_paybillid"); + if (lkPayBillId == payBillId){ + iterator.remove(); + } + } + } + } + } + SaveServiceHelper.save(oriBills); + } + } +} \ No newline at end of file