12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package fi.cas.formplugin;
- import fi.cas.task.MatchBadDebtsTask;
- import kd.bos.dataentity.entity.DynamicObject;
- import kd.bos.entity.datamodel.ListSelectedRowCollection;
- import kd.bos.form.control.events.ItemClickEvent;
- import kd.bos.list.BillList;
- import kd.bos.list.plugin.AbstractListPlugin;
- import kd.bos.orm.query.QCP;
- import kd.bos.orm.query.QFilter;
- import kd.bos.servicehelper.BusinessDataServiceHelper;
- import kd.bos.servicehelper.operation.SaveServiceHelper;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.EventObject;
- import java.util.List;
- //坏账单计算计提金额
- public class ArBadDebtLossListPlugin extends AbstractListPlugin {
- public void registerListener(EventObject e) {
- super.registerListener(e);
- this.addItemClickListeners(new String[]{"toolbarap"});
- }
- @Override
- public void itemClick(ItemClickEvent evt) {
- String itemKey = evt.getItemKey();
- if ("nckd_match".equals(itemKey)) {
- List<DynamicObject> jz = new ArrayList<>();
- List<DynamicObject> ar_baddebtlossbill = new ArrayList<>();//坏账单列表
- List<String> dubilList = new ArrayList<>();//坏账单列表
- List<String> custList = new ArrayList<>();//坏账单列表
- List<DynamicObject> infoList = new ArrayList<>();//计算成功的坏帐单列表
- List<DynamicObject> ar_baddebtlossbill_customer = new ArrayList<>();//根据客户坏账单列表
- List<DynamicObject> ar_baddebtlossbill_five_level = new ArrayList<>();//根据五级分类坏账单列表
- BillList billList = (BillList)this.getControl("billlistap");
- ListSelectedRowCollection list = billList.getSelectedRows();
- Object[] primaryKeyValues = list.getPrimaryKeyValues();
- if (primaryKeyValues.length > 0) {
- for (Object pk : primaryKeyValues) {
- DynamicObject info = BusinessDataServiceHelper.loadSingle(pk, "ar_baddebtlossbill");
- ar_baddebtlossbill.add(info);
- dubilList.add(info.getString("nckd_textfield"));
- custList.add(info.getDynamicObject("asstact").getString("number"));
- }
- //查询减值准备数据(最新一批)
- QFilter filter = new QFilter("nckd_dubil_id", QCP.in, dubilList);
- filter.or("nckd_cust_id", QCP.in, custList);
- DynamicObject[] jzdynamicObjects = BusinessDataServiceHelper.load("nckd_impairment","nckd_dubil_id,nckd_cust_id,nckd_ecl_ratio", new QFilter[]{filter});
- jz = new ArrayList<>(Arrays.asList(jzdynamicObjects));
- MatchBadDebtsTask matchBadDebtsTask = new MatchBadDebtsTask();
- //下推坏账-根据借据号匹配
- matchBadDebtsTask.MatchByDubilId(ar_baddebtlossbill, jz, infoList, ar_baddebtlossbill_customer);
- //下推坏账-根据客户匹配
- matchBadDebtsTask.MatchByCustom(ar_baddebtlossbill_customer, jz, infoList, ar_baddebtlossbill_five_level);
- //下推坏账-根据五级分类匹配
- matchBadDebtsTask.MatchByFiveLevel(ar_baddebtlossbill_five_level, infoList);
- //保存
- DynamicObject[] array = infoList.toArray(new DynamicObject[0]);
- SaveServiceHelper.save(array);
- // 显示最终的成功和失败消息
- String message = String.format("执行完成:成功 %d 条,失败 %d 条", array.length, list.size() - array.length);
- this.getView().showMessage(message);
- }else {
- this.getView().showMessage("请至少选择一条数据");
- }
- }
- }
- }
|