|  | @@ -7,6 +7,7 @@ import kd.bos.form.events.BeforeDoOperationEventArgs;
 | 
											
												
													
														|  |  import kd.bos.form.operate.FormOperate;
 |  |  import kd.bos.form.operate.FormOperate;
 | 
											
												
													
														|  |  import kd.bos.list.plugin.AbstractListPlugin;
 |  |  import kd.bos.list.plugin.AbstractListPlugin;
 | 
											
												
													
														|  |  import kd.sdk.plugin.Plugin;
 |  |  import kd.sdk.plugin.Plugin;
 | 
											
												
													
														|  | 
 |  | +import kd.tmc.fpm.business.domain.model.report.DynamicObjectData;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import java.math.BigDecimal;
 |  |  import java.math.BigDecimal;
 | 
											
												
													
														|  |  import java.util.*;
 |  |  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_salaryentryre="nckd_salaryentryre";//人力薪酬内退
 | 
											
												
													
														|  |      private static String nckd_allentry="nckd_allentry";//汇总分录
 |  |      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){
 |  |      public void afterDoOperation(AfterDoOperationEventArgs arg){
 | 
											
												
													
														|  |          //提交并审核
 |  |          //提交并审核
 | 
											
												
													
														|  |          if ("submit".equals(arg.getOperateKey())) {
 |  |          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_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_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");
 |  |                  ,"nckd_se_cpy_cmymey");
 | 
											
												
													
														|  | -        //薪酬明细(一般员工)汇总分录字段标识
 |  | 
 | 
											
												
													
														|  | 
 |  | +        //汇总分录对应字段标识
 | 
											
												
													
														|  |          List<String> nckd_allemployees=Arrays.asList("nckd_all_allbsry","nckd_all_basicsry","nckd_all_acmsry","nckd_all_reacmsry"
 |  |          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_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"
 |  |                  ,"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_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");
 |  |                  ,"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"
 |  |          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 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)) {
 |  |              if ("B".equals(nckd_entrytype)) {
 | 
											
										
											
												
													
														|  | @@ -193,6 +216,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
 | 
											
												
													
														|  |                  //对应汇总分录字段标识
 |  |                  //对应汇总分录字段标识
 | 
											
												
													
														|  |                  String allentrtlist="nckd_allearlytired";
 |  |                  String allentrtlist="nckd_allearlytired";
 | 
											
												
													
														|  |                  countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
 |  |                  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)) {
 |  |              if ("C".equals(nckd_entrytype)) {
 | 
											
										
											
												
													
														|  | @@ -205,6 +233,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
 | 
											
												
													
														|  |                  //对应汇总分录字段标识
 |  |                  //对应汇总分录字段标识
 | 
											
												
													
														|  |                  String allentrtlist="nckd_allretired";
 |  |                  String allentrtlist="nckd_allretired";
 | 
											
												
													
														|  |                  countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
 |  |                  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)) {
 |  |              if ("D".equals(nckd_entrytype)) {
 | 
											
										
											
												
													
														|  | @@ -217,6 +250,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
 | 
											
												
													
														|  |                  //对应汇总分录字段标识
 |  |                  //对应汇总分录字段标识
 | 
											
												
													
														|  |                  String allentrtlist="nckd_allpay";
 |  |                  String allentrtlist="nckd_allpay";
 | 
											
												
													
														|  |                  countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
 |  |                  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)) {
 |  |              if ("E".equals(nckd_entrytype)) {
 | 
											
										
											
												
													
														|  | @@ -229,6 +267,11 @@ public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
 | 
											
												
													
														|  |                  //对应汇总分录字段标识
 |  |                  //对应汇总分录字段标识
 | 
											
												
													
														|  |                  String allentrtlist="nckd_allpayretird";
 |  |                  String allentrtlist="nckd_allpayretird";
 | 
											
												
													
														|  |                  countEntry(dynamicObject,entrylist,propername,dep,allentrtlist);
 |  |                  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);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  }
 |  |  }
 |