|  | @@ -0,0 +1,133 @@
 | 
	
		
			
				|  |  | +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});
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |