From e9b94e36233e5996119dfd6a47b81cf980a85cbe Mon Sep 17 00:00:00 2001 From: 16358 <1635849544@qq.com> Date: Wed, 30 Apr 2025 16:13:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=BA=EF=BC=9A=E5=88=98?= =?UTF-8?q?=E6=A3=AE=E6=BE=B3=20=E6=97=A5=E6=9C=9F=EF=BC=9A2025/4/30=2014?= =?UTF-8?q?=EF=BC=9A13=20=E5=86=85=E5=AE=B9=EF=BC=9A1=E3=80=81=E9=93=B6?= =?UTF-8?q?=E8=A1=8C=E5=80=9F=E6=AC=BE=E5=90=88=E5=90=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=8F=90=E6=AC=BE=E9=87=91=E9=A2=9D=E5=88=97=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/tmc/BankContractGetDataPlugin.java | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/tmc/BankContractGetDataPlugin.java diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/tmc/BankContractGetDataPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/tmc/BankContractGetDataPlugin.java new file mode 100644 index 0000000..190a5e6 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/tmc/BankContractGetDataPlugin.java @@ -0,0 +1,85 @@ +package shkd.sys.sys.plugin.tmc; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.datamodel.events.BeforePackageDataEvent; +import kd.bos.form.events.BeforeCreateListDataProviderArgs; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.mvc.list.ListDataProvider; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.plugin.sample.bill.list.template.BeforeCreateListDataProvider; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.sdk.plugin.Plugin; + +import java.math.BigDecimal; +import java.util.*; + +/** + * 银行借款合同————给字段’提款金额‘赋值 + * 标准单据列表插件 + */ +public class BankContractGetDataPlugin extends AbstractListPlugin implements Plugin { + @Override + public void beforePackageData(BeforePackageDataEvent e) { + super.beforePackageData(e); + DynamicObjectCollection pageData = e.getPageData(); + // 1. 收集所有合同号 + Set billnoSet = new HashSet<>(); + for (DynamicObject demoObj : pageData) { + billnoSet.add(demoObj.getString("billno")); + } + // 2. 一次性查出所有下游单据 + QFilter billnoFilter = new QFilter("loancontractbill.number", QCP.in, billnoSet.toArray()); + QFilter statusFilter = new QFilter("billstatus", QCP.equals, "C"); + DynamicObject[] sourceDyobjs = BusinessDataServiceHelper.load("cfm_loanbill", + "id,loancontractbill.number,banksyndicate_entry,banksyndicate_entry.e_bank,banksyndicate_entry.e_shareamount", + billnoFilter.and(statusFilter).toArray()); + // 3. 建立Map<合同号, List<下游单据>> + Map> billnoToLoanbills = new HashMap<>(); + for (DynamicObject obj : sourceDyobjs) { + String billno = obj.getDynamicObject("loancontractbill").getString("number"); + billnoToLoanbills.computeIfAbsent(billno, k -> new ArrayList<>()).add(obj); + } + // 4. 主循环 + for (DynamicObject demoObj : pageData) { + DynamicObject bank = demoObj.getDynamicObject("banksyndicate_entry.e_bank"); + if (bank == null) continue; + Long bankId = (Long)bank.getPkValue(); + String contraciBillno = demoObj.getString("billno"); + BigDecimal resultAmount = BigDecimal.ZERO; + List loanbills = billnoToLoanbills.get(contraciBillno); + if (loanbills != null) { + for (DynamicObject loanbill : loanbills) { + DynamicObjectCollection bankentrys = loanbill.getDynamicObjectCollection("banksyndicate_entry"); + for (DynamicObject bankentry : bankentrys) { + if (bankId.equals(bankentry.getDynamicObject("e_bank").getLong("id"))) { + resultAmount = resultAmount.add(bankentry.getBigDecimal("e_shareamount")); + } + } + } + } + demoObj.set("banksyndicate_entry.e_loanamount", resultAmount); + } + e.setPageData(pageData); + } + + @Override + public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs args) { + super.beforeCreateListDataProvider(args); +// ListDataProvider listDataProvider = new ListDataProvider(){ +// @Override +// public DynamicObjectCollection getData(int start,int limit){ +// DynamicObjectCollection rows = super.getData(start, limit); +// if(rows.isEmpty()){ +// return rows; +// } +// for (DynamicObject row : rows) { +// row.set("e_loanamount","11111"); +// } +// return rows; +// } +// }; +// args.setListDataProvider(listDataProvider); + } +} \ No newline at end of file