parent
b80131d5b7
commit
e9b94e3623
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue