ArBadDebtLossListPlugin.java 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package fi.cas.formplugin;
  2. import fi.cas.task.MatchBadDebtsTask;
  3. import kd.bos.dataentity.entity.DynamicObject;
  4. import kd.bos.entity.datamodel.ListSelectedRowCollection;
  5. import kd.bos.form.control.events.ItemClickEvent;
  6. import kd.bos.list.BillList;
  7. import kd.bos.list.plugin.AbstractListPlugin;
  8. import kd.bos.orm.query.QCP;
  9. import kd.bos.orm.query.QFilter;
  10. import kd.bos.servicehelper.BusinessDataServiceHelper;
  11. import kd.bos.servicehelper.operation.SaveServiceHelper;
  12. import java.util.ArrayList;
  13. import java.util.Arrays;
  14. import java.util.EventObject;
  15. import java.util.List;
  16. //坏账单计算计提金额
  17. public class ArBadDebtLossListPlugin extends AbstractListPlugin {
  18. public void registerListener(EventObject e) {
  19. super.registerListener(e);
  20. this.addItemClickListeners(new String[]{"toolbarap"});
  21. }
  22. @Override
  23. public void itemClick(ItemClickEvent evt) {
  24. String itemKey = evt.getItemKey();
  25. if ("nckd_match".equals(itemKey)) {
  26. List<DynamicObject> jz = new ArrayList<>();
  27. List<DynamicObject> ar_baddebtlossbill = new ArrayList<>();//坏账单列表
  28. List<String> dubilList = new ArrayList<>();//坏账单列表
  29. List<String> custList = new ArrayList<>();//坏账单列表
  30. List<DynamicObject> infoList = new ArrayList<>();//计算成功的坏帐单列表
  31. List<DynamicObject> ar_baddebtlossbill_customer = new ArrayList<>();//根据客户坏账单列表
  32. List<DynamicObject> ar_baddebtlossbill_five_level = new ArrayList<>();//根据五级分类坏账单列表
  33. BillList billList = (BillList)this.getControl("billlistap");
  34. ListSelectedRowCollection list = billList.getSelectedRows();
  35. Object[] primaryKeyValues = list.getPrimaryKeyValues();
  36. if (primaryKeyValues.length > 0) {
  37. for (Object pk : primaryKeyValues) {
  38. DynamicObject info = BusinessDataServiceHelper.loadSingle(pk, "ar_baddebtlossbill");
  39. ar_baddebtlossbill.add(info);
  40. dubilList.add(info.getString("nckd_textfield"));
  41. custList.add(info.getDynamicObject("asstact").getString("number"));
  42. }
  43. //查询减值准备数据(最新一批)
  44. QFilter filter = new QFilter("nckd_dubil_id", QCP.in, dubilList);
  45. filter.or("nckd_cust_id", QCP.in, custList);
  46. DynamicObject[] jzdynamicObjects = BusinessDataServiceHelper.load("nckd_impairment","nckd_dubil_id,nckd_cust_id,nckd_ecl_ratio", new QFilter[]{filter});
  47. jz = new ArrayList<>(Arrays.asList(jzdynamicObjects));
  48. MatchBadDebtsTask matchBadDebtsTask = new MatchBadDebtsTask();
  49. //下推坏账-根据借据号匹配
  50. matchBadDebtsTask.MatchByDubilId(ar_baddebtlossbill, jz, infoList, ar_baddebtlossbill_customer);
  51. //下推坏账-根据客户匹配
  52. matchBadDebtsTask.MatchByCustom(ar_baddebtlossbill_customer, jz, infoList, ar_baddebtlossbill_five_level);
  53. //下推坏账-根据五级分类匹配
  54. matchBadDebtsTask.MatchByFiveLevel(ar_baddebtlossbill_five_level, infoList);
  55. //保存
  56. DynamicObject[] array = infoList.toArray(new DynamicObject[0]);
  57. SaveServiceHelper.save(array);
  58. // 显示最终的成功和失败消息
  59. String message = String.format("执行完成:成功 %d 条,失败 %d 条", array.length, list.size() - array.length);
  60. this.getView().showMessage(message);
  61. }else {
  62. this.getView().showMessage("请至少选择一条数据");
  63. }
  64. }
  65. }
  66. }