EcardListPlugin.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package fi.fa.formPlugin;
  2. import com.alibaba.druid.util.StringUtils;
  3. import kd.bos.dataentity.entity.DynamicObject;
  4. import kd.bos.entity.datamodel.ListSelectedRowCollection;
  5. import kd.bos.form.CloseCallBack;
  6. import kd.bos.form.ShowFormHelper;
  7. import kd.bos.form.control.events.ItemClickEvent;
  8. import kd.bos.form.events.ClosedCallBackEvent;
  9. import kd.bos.list.BillList;
  10. import kd.bos.list.ListFilterParameter;
  11. import kd.bos.list.ListShowParameter;
  12. import kd.bos.list.plugin.AbstractListPlugin;
  13. import kd.bos.orm.query.QCP;
  14. import kd.bos.orm.query.QFilter;
  15. import kd.bos.servicehelper.BusinessDataServiceHelper;
  16. import kd.bos.servicehelper.operation.SaveServiceHelper;
  17. import java.math.BigDecimal;
  18. import java.math.RoundingMode;
  19. import java.util.*;
  20. public class EcardListPlugin extends AbstractListPlugin {
  21. public void registerListener(EventObject e) {
  22. super.registerListener(e);
  23. this.addItemClickListeners(new String[]{"toolbarap"});
  24. }
  25. @Override
  26. public void itemClick(ItemClickEvent evt) {
  27. String itemKey = evt.getItemKey();
  28. if ("nckd_baritemap2".equals(itemKey)) {
  29. BillList billList = (BillList) this.getControl("billlistap");
  30. ListSelectedRowCollection list = billList.getSelectedRows();
  31. if (list.isEmpty()) {
  32. this.getView().showMessage("请至少选择一条数据");
  33. }else {
  34. ListShowParameter showParameter = ShowFormHelper.createShowListForm("fa_assetcategory", false, 2);
  35. showParameter.setFormId("bos_templatetreelistf7");
  36. showParameter.setCloseCallBack(new CloseCallBack(this, itemKey));
  37. this.getView().showForm(showParameter);
  38. }
  39. } else if ("nckd_baritemap1".equals(itemKey)) {
  40. boolean flag = true;
  41. BillList billList = (BillList) this.getControl("billlistap");
  42. ListSelectedRowCollection list = billList.getSelectedRows();
  43. Object[] primaryKeyValues = list.getPrimaryKeyValues();
  44. Set<Long> orgIds = new HashSet<>();
  45. for (Object primaryKeyValue : primaryKeyValues) {
  46. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_fa_card_real_list");
  47. DynamicObject nckd_orgfield = cardInfo.getDynamicObject("nckd_orgfield");
  48. String nckd_card_real_code = cardInfo.getString("nckd_card_real_code");
  49. if (nckd_orgfield == null) {
  50. flag = false;
  51. this.getView().showMessage("单据:" + cardInfo.getString("number") + "的归属机构为空,请重新勾选数据!");
  52. break;
  53. }
  54. if(!StringUtils.isEmpty(nckd_card_real_code)) {
  55. flag = false;
  56. this.getView().showMessage("单据:" + cardInfo.getString("number") + "已生成实物卡片:" + nckd_card_real_code + ",请重新勾选数据!");
  57. break;
  58. }
  59. orgIds.add(nckd_orgfield.getLong("id"));
  60. }
  61. if (orgIds.isEmpty()) {
  62. flag = false;
  63. this.getView().showMessage("请至少选择一条数据");
  64. } else if (orgIds.size() > 1) {
  65. flag = false;
  66. this.getView().showMessage("所选择的数据归属机构不一致,请重新勾选数据!");
  67. }
  68. if (flag) {
  69. ListShowParameter showParameter = ShowFormHelper.createShowListForm("nckd_ft_rule", false, 2);
  70. showParameter.setFormId("bos_listf7");
  71. ListFilterParameter listFilterParameter = showParameter.getListFilterParameter();
  72. QFilter filter = new QFilter("entrycostcompany_orgrule.id", QCP.in, orgIds);
  73. filter.and("fid.billstatus", QCP.in, Arrays.asList("E", "F", "G"));
  74. listFilterParameter.setFilter(filter);
  75. showParameter.setListFilterParameter(listFilterParameter);
  76. showParameter.setCloseCallBack(new CloseCallBack(this, itemKey));
  77. this.getView().showForm(showParameter);
  78. }
  79. }
  80. }
  81. @Override
  82. public void closedCallBack(ClosedCallBackEvent e) {
  83. super.closedCallBack(e);
  84. if (null != e.getReturnData()) {
  85. if (StringUtils.equals(e.getActionId(), "nckd_baritemap2")) {
  86. //获取选中的资产类别
  87. ListSelectedRowCollection returnData = (ListSelectedRowCollection) e.getReturnData();
  88. Long primaryKeyValue = (Long) returnData.get(0).getPrimaryKeyValue();
  89. //更新选中的实物卡片清单资产类别
  90. BillList billList = (BillList) this.getControl("billlistap");
  91. ListSelectedRowCollection list = billList.getSelectedRows();
  92. Object[] primaryKeyValues = list.getPrimaryKeyValues();
  93. List<Object> ids = Arrays.asList(Arrays.stream(primaryKeyValues).toArray());
  94. QFilter filter = new QFilter("id", QCP.in, ids);
  95. DynamicObject[] realCards = BusinessDataServiceHelper.load("nckd_fa_card_real_list", "id", new QFilter[]{filter});
  96. for (DynamicObject realCard : realCards) {
  97. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(realCard.getPkValue(), realCard.getDynamicObjectType().getName());
  98. cardInfo.set("nckd_fa_assetcategory", primaryKeyValue);
  99. SaveServiceHelper.save(new DynamicObject[]{cardInfo});
  100. }
  101. } else if (StringUtils.equals(e.getActionId(), "nckd_baritemap1")) {
  102. //获取选中的分摊信息
  103. ListSelectedRowCollection returnData = (ListSelectedRowCollection) e.getReturnData();
  104. Long primaryKeyValue = (Long) returnData.get(0).getPrimaryKeyValue();
  105. DynamicObject ftInfo = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_ft_rule");
  106. BigDecimal shareamount_comrule = ftInfo.getBigDecimal("shareamount_comrule");
  107. //更新选中的实物卡片清单资产类别
  108. BillList billList = (BillList) this.getControl("billlistap");
  109. ListSelectedRowCollection list = billList.getSelectedRows();
  110. BigDecimal nckd_ft_amount = shareamount_comrule.divide(BigDecimal.valueOf(list.size()), RoundingMode.HALF_UP);
  111. Object[] primaryKeyValues = list.getPrimaryKeyValues();
  112. List<Object> ids = Arrays.asList(Arrays.stream(primaryKeyValues).toArray());
  113. QFilter filter = new QFilter("id", QCP.in, ids);
  114. DynamicObject[] realCards = BusinessDataServiceHelper.load("nckd_fa_card_real_list", "id", new QFilter[]{filter});
  115. for (DynamicObject realCard : realCards) {
  116. DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(realCard.getPkValue(), realCard.getDynamicObjectType().getName());
  117. cardInfo.set("nckd_ft_amount", nckd_ft_amount);
  118. SaveServiceHelper.save(new DynamicObject[]{cardInfo});
  119. }
  120. }
  121. }
  122. }
  123. }