package fi.fa.formPlugin; import com.alibaba.druid.util.StringUtils; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.entity.datamodel.ListSelectedRowCollection; import kd.bos.form.CloseCallBack; import kd.bos.form.ShowFormHelper; import kd.bos.form.control.events.ItemClickEvent; import kd.bos.form.events.ClosedCallBackEvent; import kd.bos.list.BillList; import kd.bos.list.ListFilterParameter; import kd.bos.list.ListShowParameter; 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.math.BigDecimal; import java.math.RoundingMode; import java.util.*; public class EcardListPlugin 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_baritemap2".equals(itemKey)) { BillList billList = (BillList) this.getControl("billlistap"); ListSelectedRowCollection list = billList.getSelectedRows(); if (list.isEmpty()) { this.getView().showMessage("请至少选择一条数据"); }else { ListShowParameter showParameter = ShowFormHelper.createShowListForm("fa_assetcategory", false, 2); showParameter.setFormId("bos_templatetreelistf7"); showParameter.setCloseCallBack(new CloseCallBack(this, itemKey)); this.getView().showForm(showParameter); } } else if ("nckd_baritemap1".equals(itemKey)) { boolean flag = true; BillList billList = (BillList) this.getControl("billlistap"); ListSelectedRowCollection list = billList.getSelectedRows(); Object[] primaryKeyValues = list.getPrimaryKeyValues(); Set<Long> orgIds = new HashSet<>(); for (Object primaryKeyValue : primaryKeyValues) { DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_fa_card_real_list"); DynamicObject nckd_orgfield = cardInfo.getDynamicObject("nckd_orgfield"); String nckd_card_real_code = cardInfo.getString("nckd_card_real_code"); if (nckd_orgfield == null) { flag = false; this.getView().showMessage("单据:" + cardInfo.getString("number") + "的归属机构为空,请重新勾选数据!"); break; } if(!StringUtils.isEmpty(nckd_card_real_code)) { flag = false; this.getView().showMessage("单据:" + cardInfo.getString("number") + "已生成实物卡片:" + nckd_card_real_code + ",请重新勾选数据!"); break; } orgIds.add(nckd_orgfield.getLong("id")); } if (orgIds.isEmpty()) { flag = false; this.getView().showMessage("请至少选择一条数据"); } else if (orgIds.size() > 1) { flag = false; this.getView().showMessage("所选择的数据归属机构不一致,请重新勾选数据!"); } if (flag) { ListShowParameter showParameter = ShowFormHelper.createShowListForm("nckd_ft_rule", false, 2); showParameter.setFormId("bos_listf7"); ListFilterParameter listFilterParameter = showParameter.getListFilterParameter(); QFilter filter = new QFilter("entrycostcompany_orgrule.id", QCP.in, orgIds); filter.and("fid.billstatus", QCP.in, Arrays.asList("E", "F", "G")); listFilterParameter.setFilter(filter); showParameter.setListFilterParameter(listFilterParameter); showParameter.setCloseCallBack(new CloseCallBack(this, itemKey)); this.getView().showForm(showParameter); } } } @Override public void closedCallBack(ClosedCallBackEvent e) { super.closedCallBack(e); if (null != e.getReturnData()) { if (StringUtils.equals(e.getActionId(), "nckd_baritemap2")) { //获取选中的资产类别 ListSelectedRowCollection returnData = (ListSelectedRowCollection) e.getReturnData(); Long primaryKeyValue = (Long) returnData.get(0).getPrimaryKeyValue(); //更新选中的实物卡片清单资产类别 BillList billList = (BillList) this.getControl("billlistap"); ListSelectedRowCollection list = billList.getSelectedRows(); Object[] primaryKeyValues = list.getPrimaryKeyValues(); List<Object> ids = Arrays.asList(Arrays.stream(primaryKeyValues).toArray()); QFilter filter = new QFilter("id", QCP.in, ids); DynamicObject[] realCards = BusinessDataServiceHelper.load("nckd_fa_card_real_list", "id", new QFilter[]{filter}); for (DynamicObject realCard : realCards) { DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(realCard.getPkValue(), realCard.getDynamicObjectType().getName()); cardInfo.set("nckd_fa_assetcategory", primaryKeyValue); SaveServiceHelper.save(new DynamicObject[]{cardInfo}); } } else if (StringUtils.equals(e.getActionId(), "nckd_baritemap1")) { //获取选中的分摊信息 ListSelectedRowCollection returnData = (ListSelectedRowCollection) e.getReturnData(); Long primaryKeyValue = (Long) returnData.get(0).getPrimaryKeyValue(); DynamicObject ftInfo = BusinessDataServiceHelper.loadSingle(primaryKeyValue, "nckd_ft_rule"); BigDecimal shareamount_comrule = ftInfo.getBigDecimal("shareamount_comrule"); //更新选中的实物卡片清单资产类别 BillList billList = (BillList) this.getControl("billlistap"); ListSelectedRowCollection list = billList.getSelectedRows(); BigDecimal nckd_ft_amount = shareamount_comrule.divide(BigDecimal.valueOf(list.size()), RoundingMode.HALF_UP); Object[] primaryKeyValues = list.getPrimaryKeyValues(); List<Object> ids = Arrays.asList(Arrays.stream(primaryKeyValues).toArray()); QFilter filter = new QFilter("id", QCP.in, ids); DynamicObject[] realCards = BusinessDataServiceHelper.load("nckd_fa_card_real_list", "id", new QFilter[]{filter}); for (DynamicObject realCard : realCards) { DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(realCard.getPkValue(), realCard.getDynamicObjectType().getName()); cardInfo.set("nckd_ft_amount", nckd_ft_amount); SaveServiceHelper.save(new DynamicObject[]{cardInfo}); } } } } }