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