|
@@ -1,21 +1,119 @@
|
|
package fi.em.formPlugin;
|
|
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.AfterDoOperationEventArgs;
|
|
|
|
+import kd.bos.form.events.BeforeDoOperationEventArgs;
|
|
|
|
+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 java.math.BigDecimal;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Arrays;
|
|
|
|
+import java.util.List;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @author cjz
|
|
* @author cjz
|
|
* @date 2024/9/12 11:12
|
|
* @date 2024/9/12 11:12
|
|
- * @description:薪酬计提提交后自动审核
|
|
|
|
|
|
+ * @description:薪酬计提提交后自动审核,保存前计算汇总分离
|
|
*/
|
|
*/
|
|
public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
|
|
public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
|
|
|
|
+
|
|
|
|
+ private static String nckd_staffentry="nckd_staffentry";//通用薪酬一般员工
|
|
|
|
+ private static String nckd_earlyretiredentry="nckd_earlyretiredentry";//通用薪酬内退
|
|
|
|
+ private static String nckd_retireentry="nckd_retireentry";//通用薪酬退休
|
|
|
|
+ private static String nckd_salaryentry="nckd_salaryentry";//人力薪酬
|
|
|
|
+ private static String nckd_salaryentryre="nckd_salaryentryre";//人力薪酬内退
|
|
|
|
+ private static String nckd_allentry="nckd_allentry";//汇总分录
|
|
|
|
+
|
|
public void afterDoOperation(AfterDoOperationEventArgs arg){
|
|
public void afterDoOperation(AfterDoOperationEventArgs arg){
|
|
//提交并审核
|
|
//提交并审核
|
|
if ("submit".equals(arg.getOperateKey())) {
|
|
if ("submit".equals(arg.getOperateKey())) {
|
|
//调用审核
|
|
//调用审核
|
|
this.getView().invokeOperation("audit");
|
|
this.getView().invokeOperation("audit");
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //保存前计算汇总分录
|
|
|
|
+ public void beforeDoOperation(BeforeDoOperationEventArgs arg) {
|
|
|
|
+
|
|
|
|
+ //薪酬明细(一般员工)分录字段标识,金额字段
|
|
|
|
+ List<String> nckd_generalemployees = Arrays.asList("nckd_se_allbasicsry"
|
|
|
|
+ ,"nckd_se_basicsry","nckd_se_acmsry","nckd_se_reacmsry","nckd_se_bsnrwd","nckd_se_otreward","nckd_se_cmcsbd"
|
|
|
|
+ ,"nckd_se_otherpysry","nckd_se_clearrwd","nckd_se_awareward","nckd_se_otherdevreward","nckd_se_coldsbad"
|
|
|
|
+ ,"nckd_se_warmsbad","nckd_se_nursabd","nckd_se_otherallowance","nckd_se_salarypayable","nckd_se_per_endins"
|
|
|
|
+ ,"nckd_se_per_hopins","nckd_se_per_bhopins","nckd_se_per_ljins","nckd_se_per_hosins","nckd_se_per_cmymey"
|
|
|
|
+ ,"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");
|
|
|
|
+
|
|
|
|
+ super.beforeDoOperation(arg);
|
|
|
|
+ FormOperate source = (FormOperate) arg.getSource();
|
|
|
|
+ //获取当前操作单据
|
|
|
|
+ DynamicObject dynamicObject=this.getModel().getDataEntity(true);
|
|
|
|
+ //当前单据分录类型
|
|
|
|
+ String nckd_entrytype=dynamicObject.getString("nckd_entrytype");
|
|
|
|
+
|
|
|
|
+ //计算汇总分录
|
|
|
|
+ if ("countall".equals(source.getOperateKey())){
|
|
|
|
+ //分录类型为一般员工
|
|
|
|
+ if ("A".equals(nckd_entrytype)) {
|
|
|
|
+
|
|
|
|
+ //获取一般员工分录
|
|
|
|
+ DynamicObjectCollection staffentry=dynamicObject.getDynamicObjectCollection("nckd_staffentry");
|
|
|
|
+ //分录部门list
|
|
|
|
+ List<DynamicObject> depList=new ArrayList<>();
|
|
|
|
+ //初始化值为第一行部门
|
|
|
|
+ depList.add(staffentry.get(0).getDynamicObject("nckd_se_department"));
|
|
|
|
+ for (DynamicObject item:staffentry) {
|
|
|
|
+ //将不同的值加入到部门的list中
|
|
|
|
+ if (!depList.contains(item.getDynamicObject("nckd_se_department"))) {
|
|
|
|
+ depList.add(item.getDynamicObject("nckd_se_department"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //总的汇总数据
|
|
|
|
+ List<List<BigDecimal>> alldata=new ArrayList<>();
|
|
|
|
+ //几个不同部门则循环几次
|
|
|
|
+ for (int j=0;j<depList.size();j++)
|
|
|
|
+ {
|
|
|
|
+ DynamicObject bumen=depList.get(j);
|
|
|
|
+ //某部门总数据
|
|
|
|
+ List<BigDecimal> sumNum=new ArrayList<>();
|
|
|
|
+ //汇总表部门list初始化
|
|
|
|
+ for (int b=0;b<nckd_generalemployees.size();b++) {
|
|
|
|
+ sumNum.add(new BigDecimal("0.0"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //计算一个部门汇总
|
|
|
|
+ for (int i=0;i<staffentry.size();i++)
|
|
|
|
+ {
|
|
|
|
+ //获取所在部门
|
|
|
|
+ DynamicObject department=staffentry.get(i).getDynamicObject("nckd_se_department");
|
|
|
|
+ //相同部门则累加金额数据
|
|
|
|
+ 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=staffentry.get(i).getBigDecimal(entry);
|
|
|
|
+ cell=cell.add(num);
|
|
|
|
+ sumNum.set(a,cell);
|
|
|
|
+ }
|
|
|
|
+ System.out.println(sumNum);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //汇总数据获取
|
|
|
|
+ alldata.add(sumNum);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|