瀏覽代碼

薪酬计提汇总

zhouger 6 月之前
父節點
當前提交
8045ec68ab

+ 7 - 1
src/main/java/fi/em/formPlugin/SalaryDistributeEditPlugin.java

@@ -48,6 +48,11 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
         viewList.add(nckd_retired);
         viewList.add(nckd_pay);
         viewList.add(nckd_payretird);
+        viewList.add("nckd_a_generalemployees");
+        viewList.add("nckd_a_earlyretired");
+        viewList.add("nckd_a_retired");
+        viewList.add("nckd_a_pay");
+        viewList.add("nckd_a_payretird");
 
         if (Viewflag.isEmpty()) {
             for (String item:viewList) {
@@ -249,7 +254,8 @@ public class SalaryDistributeEditPlugin extends AbstractListPlugin implements Pl
     public void clearEntryData(String nckd_entry)
     {
         //分录标识
-        List<String> nckd_generalemployees =Arrays.asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry","nckd_salaryentryre");
+        List<String> nckd_generalemployees =Arrays
+                .asList("nckd_staffentry","nckd_earlyretiredentry","nckd_retireentry","nckd_salaryentry","nckd_salaryentryre");
         for (String item:nckd_generalemployees) {
             //不传入参数默认全部分录清除
             if ("".equals(nckd_entry)){

+ 111 - 3
src/main/java/fi/em/formPlugin/SubAndAudFormPlugin.java

@@ -7,6 +7,7 @@ import kd.bos.form.events.BeforeDoOperationEventArgs;
 import kd.bos.form.operate.FormOperate;
 import kd.bos.list.plugin.AbstractListPlugin;
 import kd.sdk.plugin.Plugin;
+import kd.tmc.fpm.business.domain.model.report.DynamicObjectData;
 
 import java.math.BigDecimal;
 import java.util.*;
@@ -25,6 +26,12 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
     private static String nckd_salaryentryre="nckd_salaryentryre";//人力薪酬内退
     private static String nckd_allentry="nckd_allentry";//汇总分录
 
+    private static String nckd_a_generalemployees="nckd_a_generalemployees";//通用一般汇总
+    private static String nckd_a_earlyretired="nckd_a_earlyretired";//通用内退汇总
+    private static String nckd_a_retired="nckd_a_retired";//通用退休汇总
+    private static String nckd_a_pay="nckd_a_pay";//人力一般汇总
+    private static String nckd_a_payretird="nckd_a_payretird";//人力内退汇总
+
     public void afterDoOperation(AfterDoOperationEventArgs arg){
         //提交并审核
         if ("submit".equals(arg.getOperateKey())) {
@@ -46,7 +53,7 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 ,"nckd_se_unionmey","nckd_se_tax","nckd_se_otherreduce","nckd_se_desalary","nckd_se_netsalary","nckd_se_cpy_endins"
                 ,"nckd_se_cpy_hopins","nckd_se_cpy_bhopins","nckd_se_cpy_ljins","nckd_se_cpy_birthins","nckd_se_cpy_dmgins","nckd_se_cpy_hosins"
                 ,"nckd_se_cpy_cmymey");
-        //薪酬明细(一般员工)汇总分录字段标识
+        //汇总分录对应字段标识
         List<String> nckd_allemployees=Arrays.asList("nckd_all_allbsry","nckd_all_basicsry","nckd_all_acmsry","nckd_all_reacmsry"
                 ,"nckd_all_bsnrwd","nckd_all_otreward","nckd_all_cmcsbd","nckd_all_otherpysry","nckd_all_clearrwd","nckd_all_awareward"
                 ,"nckd_all_odevreward","nckd_all_coldsbad","nckd_all_warmsbad","nckd_all_nursabd","nckd_all_oallowance","nckd_all_salarypaya"
@@ -55,6 +62,15 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 ,"nckd_all_cpy_hopins","nckd_all_cpy_bhopins","nckd_all_cpy_ljins","nckd_all_cpy_birthins","nckd_all_cpy_dmgins","nckd_all_cpy_hosins"
                 ,"nckd_all_cpy_cmymey");
 
+        //薪酬明细(一般员工)汇总分录
+        List<String> nckd_a_employees=Arrays.asList("nckd_ase_allbasicsry","nckd_ase_basicsry","nckd_ase_acmsry"
+                ,"nckd_ase_reacmsry","nckd_ase_bsnrwd","nckd_ase_otreward","nckd_ase_cmcsbd","nckd_ase_otherpysry","nckd_ase_clearrwd"
+                ,"nckd_ase_awareward","nckd_ase_otherdevreward","nckd_ase_coldsbad","nckd_ase_warmsbad","nckd_ase_nursabd","nckd_ase_oalwance"
+                ,"nckd_ase_salarypayable","nckd_ase_per_endins","nckd_ase_per_hopins","nckd_ase_per_bhopins","nckd_ase_per_ljins","nckd_ase_per_hosins"
+                ,"nckd_ase_per_cmymey","nckd_ase_unionmey","nckd_ase_tax","nckd_ase_otherreduce","nckd_ase_desalary","nckd_ase_netsalary"
+                ,"nckd_ase_cpy_endins","nckd_ase_cpy_hopins","nckd_ase_cpy_bhopins","nckd_ase_cpy_ljins","nckd_ase_cpy_birthins","nckd_ase_cpy_dmgins"
+                ,"nckd_ase_cpy_hosins","nckd_ase_cpy_cmymey");
+
 
         //薪酬明细(内退)分录字段标识,金额字段
         List<String> nckd_earlyretired=Arrays.asList("nckd_ee_allbasicsry","nckd_ee_allowance","nckd_ee_otherallowance","nckd_ee_per_endins"
@@ -179,8 +195,15 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应部门标识
                 String dep="nckd_se_department";
                 //对应汇总分录字段标识
-                String allentrtlist="nckd_allemployees";
-                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+//                String allentrtlist="nckd_allemployees";
+//                countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                String allentrtlist="nckd_a_employees";
+                allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_ase_department");
+                this.getView().setVisible(true,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
             }
             //分录类型为通用薪酬内退
             if ("B".equals(nckd_entrytype)) {
@@ -193,6 +216,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应汇总分录字段标识
                 String allentrtlist="nckd_allearlytired";
                 countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(true,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
             }
             //分录类型为通用薪酬退休
             if ("C".equals(nckd_entrytype)) {
@@ -205,6 +233,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应汇总分录字段标识
                 String allentrtlist="nckd_allretired";
                 countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(true,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
             }
             //分录类型为人力薪酬(一般员工)
             if ("D".equals(nckd_entrytype)) {
@@ -217,6 +250,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应汇总分录字段标识
                 String allentrtlist="nckd_allpay";
                 countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(true,nckd_a_pay);
+                this.getView().setVisible(false,nckd_a_payretird);
             }
             //分录类型为人力薪酬(内退)
             if ("E".equals(nckd_entrytype)) {
@@ -229,6 +267,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
                 //对应汇总分录字段标识
                 String allentrtlist="nckd_allpayretird";
                 countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
+                this.getView().setVisible(false,nckd_a_generalemployees);
+                this.getView().setVisible(false,nckd_a_earlyretired);
+                this.getView().setVisible(false,nckd_a_retired);
+                this.getView().setVisible(false,nckd_a_pay);
+                this.getView().setVisible(true,nckd_a_payretird);
             }
         }
 
@@ -294,4 +337,69 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
         }
     }
 
+    /**
+     * @dynamicObject 当前单据信息
+     * @entrylist 字段标识列表
+     * @propername 分录标识
+     * @dep 对应分录部门标识
+     * @allentrtlist 写入的汇总分录字段
+     * @nckd_dep 汇总分录部门标识
+     * @description:根据分录类型不同计算汇总分录
+     */
+    public void allDataEntry(DynamicObject dynamicObject
+            ,String entrylist,String propername,String dep,String allentrtlist,String nckd_dep)
+    {
+        //字段标识
+        List<String> nckd_generalemployees = entryList(entrylist);
+        //获取一般员工分录
+        DynamicObjectCollection staffentry=dynamicObject.getDynamicObjectCollection(propername);
+        //分录部门list
+        List<DynamicObject> depList=new ArrayList<>();
+        //初始化值为第一行部门
+        depList.add(staffentry.get(0).getDynamicObject(dep));
+        for (DynamicObject item:staffentry) {
+            //将不同的值加入到部门的list中
+            if (!depList.contains(item.getDynamicObject(dep))) {
+                depList.add(item.getDynamicObject(dep));
+            }
+        }
+
+        //几个不同部门则循环几次
+        for (DynamicObject bumen : depList) {
+            //某部门总数据
+            List<BigDecimal> sumNum = new ArrayList<>();
+            //汇总表部门list初始化
+            for (int b = 0; b < nckd_generalemployees.size(); b++) {
+                sumNum.add(new BigDecimal("0.0"));
+            }
+            //计算一个部门汇总
+            for (DynamicObject object : staffentry) {
+                //获取所在部门
+                DynamicObject department = object.getDynamicObject(dep);
+                //相同部门则累加金额数据
+                if (department.equals(bumen)) {
+                    for (int a = 0; a < nckd_generalemployees.size(); a++) {
+                        BigDecimal cell = sumNum.get(a);
+                        //字段标识
+                        String entry = nckd_generalemployees.get(a);
+                        //i行的a列数据
+                        BigDecimal num = object.getBigDecimal(entry);
+                        cell = cell.add(num);
+                        sumNum.set(a, cell);
+                    }
+                }
+            }
+            //创建新的分录行
+            int rowIndex = this.getModel().createNewEntryRow(nckd_allentry);
+            //设置部门
+            this.getModel().setValue(nckd_dep, bumen, rowIndex);
+            for (int c = 0; c < sumNum.size(); c++) {
+                this.getModel().setValue(entryList(allentrtlist).get(c), sumNum.get(c), rowIndex);
+            }
+        }
+
+    }
+
+
+
 }