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