From c0efbb15c9a74c7bf78d2b84bcb3dcfa6f727d64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=B4=B5=E5=BC=BA?= Date: Wed, 25 Jun 2025 15:56:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=90=86=E8=B4=A2=E8=B5=8E=E5=9B=9E-=E4=BA=8C?= =?UTF-8?q?=E5=BC=80=E6=A0=87=E5=87=86=E6=8F=92=E4=BB=B6=E3=80=90=E8=B5=8E?= =?UTF-8?q?=E5=9B=9E=E4=BB=BD=E6=95=B0=E3=80=91=E7=9A=84=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/RedeemBillExtendEditPlugin.java | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 main/java/shjh/jhzj7/fi/fi/plugin/form/RedeemBillExtendEditPlugin.java diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/RedeemBillExtendEditPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/RedeemBillExtendEditPlugin.java new file mode 100644 index 0000000..7e44278 --- /dev/null +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/RedeemBillExtendEditPlugin.java @@ -0,0 +1,111 @@ +package shjh.jhzj7.fi.fi.plugin.form; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.orm.query.QFilter; +import kd.tmc.cim.common.enums.CimEntityEnum; +import kd.tmc.cim.common.enums.RedeemWayEnum; +import kd.tmc.cim.common.helper.RevenueCalcHelper; +import kd.tmc.cim.formplugin.redeem.RedeemBillEdit; +import kd.tmc.fbp.common.helper.TmcDataServiceHelper; +import kd.tmc.fbp.common.helper.TmcViewInputHelper; +import kd.tmc.fbp.common.model.interest.IntBillInfo; +import kd.tmc.fbp.common.util.DateUtils; +import kd.tmc.fbp.common.util.EmptyUtil; + +import java.math.BigDecimal; +import java.util.Date; + +public class RedeemBillExtendEditPlugin extends RedeemBillEdit { + + + @Override + public void propertyChanged(PropertyChangedArgs args) { + // 如果不是 "copies" 属性,才调用父类逻辑 + if (!"copies".equals(args.getProperty().getName())) { + super.propertyChanged(args); + } + + // 单独处理 "copies" 逻辑 + if ("copies".equals(args.getProperty().getName())) { + this.checkCopies(); + this.calAmount(); + this.calRealRevenue(); + } + } + + private void checkCopies() { + String redeemWay = (String)this.getModel().getValue("redeemway"); + //DynamicObject finBillNoF7 = (DynamicObject)this.getModel().getValue("finbillno"); + if (RedeemWayEnum.copies_redeem.getValue().equals(redeemWay)) { + BigDecimal copies = (BigDecimal)this.getModel().getValue("copies");//赎回份数 + BigDecimal shrsyfe = (BigDecimal)this.getModel().getValue("shjh_shrsyfe");//赎回日剩余份额 + + //BigDecimal surplusCopies = finBillNoF7.getBigDecimal("surpluscopies");//剩余份数 + if (copies.compareTo(shrsyfe) > 0) { + this.getView().showTipNotification(ResManager.loadKDString("赎回份数不允许超过理财赎回日剩余份额,请重新输入。", "RedeemBillEdit_1", "tmc-cim-formplugin", new Object[0])); + TmcViewInputHelper.setValWithoutPropChgEvt(this.getView(), this.getModel(), "copies", 0); + return; + } + + //this.getModel().setValue("surpluscopies", surplusCopies.subtract(copies)); + } + + } + + private void calAmount() { + String redeemWay = (String)this.getModel().getValue("redeemway"); + if (RedeemWayEnum.copies_redeem.getValue().equals(redeemWay)) { + BigDecimal buyCopies = (BigDecimal)this.getModel().getValue("copies"); + BigDecimal iopv = (BigDecimal)this.getModel().getValue("iopv"); + BigDecimal amount = iopv.multiply(buyCopies); + this.getModel().setValue("amount", amount); + } + + } + + private void calRealRevenue() { + String redeemWay = (String)this.getModel().getValue("redeemway"); + DynamicObject finBillNoF7 = (DynamicObject)this.getModel().getValue("finbillno"); + if (!EmptyUtil.isEmpty(finBillNoF7)) { + Long finBillId = (Long)finBillNoF7.getPkValue(); + DynamicObject finBill = TmcDataServiceHelper.loadSingle(CimEntityEnum.cim_finsubscribe.getValue(), "endinstdate,iopv", new QFilter[]{new QFilter("id", "=", finBillId)}); + if (RedeemWayEnum.amount_redeem.getValue().equals(redeemWay)) { + boolean isRevenue = (Boolean)this.getModel().getValue("isrevenue"); + if (isRevenue) { + Date lastEndIntDate = finBill.getDate("endinstdate"); + Date redeemDate = (Date)this.getModel().getValue("redeemdate"); + IntBillInfo intBill = this.getIntBillInfo(finBillId, lastEndIntDate, redeemDate); + if (intBill != null) { + TmcViewInputHelper.setValWithoutDataChanged(this.getModel(), "realrevenue", intBill.getAmount()); + } + } + } else { + BigDecimal redeemAmount = (BigDecimal)this.getModel().getValue("amount"); + BigDecimal copies = (BigDecimal)this.getModel().getValue("copies"); + BigDecimal iopv = finBill.getBigDecimal("iopv"); + BigDecimal realRevenue = redeemAmount.subtract(iopv.multiply(copies)); + TmcViewInputHelper.setValWithoutDataChanged(this.getModel(), "realrevenue", realRevenue); + } + + } + } + + private IntBillInfo getIntBillInfo(Long finBillId, Date lastEndIntDate, Date redeemDate) { + BigDecimal amount = (BigDecimal)this.getModel().getValue("amount"); + BigDecimal surplusAmount = (BigDecimal)this.getModel().getValue("surplusamount"); + IntBillInfo intBill; + if (BigDecimal.ZERO.compareTo(surplusAmount) != 0) { + intBill = RevenueCalcHelper.callInt(finBillId, redeemDate, amount); + } else { + if (EmptyUtil.isNoEmpty(lastEndIntDate)) { + lastEndIntDate = DateUtils.getNextDay(lastEndIntDate, 1); + } + + intBill = RevenueCalcHelper.callInt(finBillId, lastEndIntDate, redeemDate); + } + + return intBill; + } +}