Эх сурвалжийг харах

实物卡片清单批量指定资产类别,批量代垫开发

wanwei 6 сар өмнө
parent
commit
0f0cf89e07

+ 133 - 0
src/main/java/fi/fa/formPlugin/EcardListPlugin.java

@@ -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});
+                }
+            }
+        }
+    }
+}