提交人:刘森澳

日期:2025/4/30 14:13
内容:1、银行借款合同添加提款金额列数据。
This commit is contained in:
16358 2025-04-30 16:13:51 +08:00
parent b80131d5b7
commit e9b94e3623
1 changed files with 85 additions and 0 deletions

View File

@ -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<String> 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<String, List<DynamicObject>> 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<DynamicObject> 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);
}
}