Browse Source

差旅分录汇总给计算

zhouger 5 months ago
parent
commit
e40e5f7dfa

+ 0 - 22
src/main/java/fi/ar/formplugin/AcctageForm.java

@@ -1,50 +1,28 @@
 package fi.ar.formplugin;
 
 
-import kd.bos.dataentity.serialization.SerializationUtils;
-import kd.bos.dataentity.utils.ObjectUtils;
 import kd.bos.dataentity.utils.StringUtils;
-import kd.bos.entity.filter.FilterValue;
 import kd.bos.report.plugin.*;
 import kd.bos.context.*;
-import kd.fi.arapcommon.report.acctagev2.AcctageParam;
-import org.apache.commons.lang.*;
 import kd.bos.dataentity.resource.*;
 import kd.bos.entity.*;
 import kd.bos.form.field.*;
-import kd.bos.form.control.*;
 import java.util.List;
 import java.util.stream.*;
 import kd.bplat.scmc.report.conf.*;
-import kd.bos.entity.datamodel.events.*;
-import kd.bplat.scmc.report.core.*;
-import kd.bos.dataentity.utils.*;
 import kd.bos.dataentity.entity.*;
-import kd.fi.arapcommon.report.acctage.*;
-import kd.bos.dataentity.serialization.*;
 import kd.bos.orm.query.*;
-import kd.bos.servicehelper.*;
-import com.alibaba.fastjson.*;
 import kd.fi.arapcommon.helper.*;
-import kd.fi.arapcommon.report.*;
 import kd.fi.arapcommon.util.*;
-import kd.bos.servicehelper.basedata.*;
 import kd.bos.bill.*;
 import kd.bos.report.*;
 import kd.bos.entity.report.*;
 import java.util.*;
-import java.util.function.*;
 import kd.bos.dataentity.metadata.*;
 import kd.bos.entity.property.*;
-import kd.bos.entity.filter.*;
-import kd.bos.report.filter.*;
-import kd.bos.dataentity.metadata.clr.*;
-import kd.bos.form.container.*;
 import kd.bos.form.*;
 import kd.bos.list.*;
 import kd.bos.form.events.*;
-import kd.bos.entity.datamodel.*;
-import kd.bos.form.field.events.*;
 
 /**
  * @author cjz

+ 0 - 4
src/main/java/fi/cas/formplugin/AgpaybillButPlugin.java

@@ -26,8 +26,6 @@ public class AgpaybillButPlugin extends AbstractFormPlugin implements Plugin {
         this.getView().setVisible(false,"nckd_cxzf");
         //设置支付关闭按钮不可见
         this.getView().setVisible(false,"nckd_payclose");
-
-
         //获取当前单据
         DynamicObject dynamicObject=this.getModel().getDataEntity(true);
         //单据状态
@@ -52,8 +50,6 @@ public class AgpaybillButPlugin extends AbstractFormPlugin implements Plugin {
         if ("B".equals(paystatus)&&"B".equals(nckdHxzt)||"A".equals(nckdHxzt)) {
             this.getView().setVisible(true,"nckd_payclose");
         }
-
-
     }
 
 }

+ 73 - 0
src/main/java/fi/em/formPlugin/TravelTotalPlugin.java

@@ -0,0 +1,73 @@
+package fi.em.formPlugin;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.AbstractOperate;
+import kd.bos.form.plugin.AbstractFormPlugin;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * @author cjz
+ * @date 2024/11/7 15:45
+ * @description:差旅汇总分录计算
+ */
+public class TravelTotalPlugin extends AbstractFormPlugin {
+
+    private static String bar_save="save";//保存标识
+    private static String entryentity="nckd_entryentity";//差旅汇总标识
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        AbstractOperate op = (AbstractOperate)args.getSource();
+        String operateKey = op.getOperateKey();
+        //获取当前单据
+        DynamicObject dynamicObject=this.getModel().getDataEntity(true);
+        //差旅汇总分录
+        DynamicObjectCollection nckd_entryentity=dynamicObject.getDynamicObjectCollection(entryentity);
+        //汇总map
+        Map<DynamicObject,BigDecimal> allMap=new HashMap<>();
+        if (bar_save.equals(operateKey)) {
+            //获取行程信息
+            DynamicObjectCollection dynamicObjectCollection=dynamicObject.getDynamicObjectCollection("tripentry");
+            //子卡片分录信息
+            for (DynamicObject item:dynamicObjectCollection) {
+                for (DynamicObject entry:item.getDynamicObjectCollection("entryentity")) {
+                    //差旅项目获取
+                    DynamicObject expenseitem=entry.getDynamicObject("expenseitem");
+                    //报销金额获取
+                    BigDecimal orientryamount=entry.getBigDecimal("orientryamount");
+                    //差旅项目不存在则加进map
+                    if (!allMap.containsKey(expenseitem)) {
+                        allMap.put(expenseitem,orientryamount);
+                    }else {
+                        //存在则对该项目进行累加
+                        BigDecimal account = allMap.get(expenseitem);
+                        account=account.add(orientryamount);
+                        allMap.put(expenseitem,account);
+                    }
+                }
+            }
+            Iterator<Map.Entry<DynamicObject, BigDecimal>> iter = allMap.entrySet().iterator();
+            //清空分录
+            this.getModel().deleteEntryData(entryentity);
+            //遍历汇总map
+            while (iter.hasNext()) {
+                Map.Entry<DynamicObject, BigDecimal> entry = iter.next();
+                //新增动态单据分录行
+                int rowIndex = this.getModel().createNewEntryRow(entryentity);
+                this.getModel().setValue("nckd_travelitem",entry.getKey(),rowIndex);
+                this.getModel().setValue("nckd_oriamount",entry.getValue(),rowIndex);
+                this.getModel().setValue("nckd_triamount",entry.getValue(),rowIndex);
+            }
+            //刷新分录
+            this.getView().updateView("nckd_entryentity");
+        }
+    }
+}