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