123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- 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.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.*;
- /**
- * @author cjz
- * @date 2024/9/12 11:12
- * @description:薪酬计提提交后自动审核,保存前计算汇总分录
- */
- public class SubAndAudFormPlugin extends AbstractListPlugin implements Plugin {
- private static String nckd_staffentry="nckd_staffentry";//通用薪酬一般员工
- private static String nckd_a_staffentry="nckd_a_staffentry";//通用薪酬一般员工汇总分录标识
- private static String nckd_earlyretiredentry="nckd_earlyretiredentry";//通用薪酬内退
- private static String nckd_a_earlyretiredentry="nckd_a_earlyretiredentry";//通用薪酬内退分录标识
- private static String nckd_retireentry="nckd_retireentry";//通用薪酬退休
- private static String nckd_a_retireentry="nckd_a_retireentry";//通用薪酬退休分录标识
- private static String nckd_salaryentry="nckd_salaryentry";//人力薪酬
- private static String nckd_a_salaryentry="nckd_a_salaryentry";//人力薪酬分录标识
- private static String nckd_salaryentryre="nckd_salaryentryre";//人力薪酬内退
- private static String nckd_a_salaryentryre="nckd_a_salaryentryre";//人力薪酬内退标识
- //控件标识
- 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())) {
- //调用审核
- this.getView().invokeOperation("audit");
- }
- }
- //根据输入的list名,返回对应list
- public List<String> entryList(String nckdentry)
- {
- //薪酬明细(一般员工)分录字段标识,金额字段
- 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");
- //薪酬明细(一般员工)汇总分录
- 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"
- ,"nckd_ee_per_ljins","nckd_ee_per_hopins","nckd_ee_per_bhopins","nckd_ee_per_hosins","nckd_ee_per_cmymey","nckd_ee_unionmey"
- ,"nckd_ee_tax","nckd_ee_desalary","nckd_ee_netsalary","nckd_ee_otherreduce","nckd_ee_cpy_endins","nckd_ee_cpy_bhopins"
- ,"nckd_ee_cpy_ljins","nckd_ee_cpy_birthins","nckd_ee_cpy_dmgins","nckd_ee_cpy_cmymey","nckd_ee_cpy_hosins","nckd_ee_taxt"
- ,"nckd_ee_alltaxt","nckd_ee_charge","nckd_ee_finallsys");
- //薪酬明细(内退)汇总分录
- List<String> nckd_a_earlyretired=Arrays.asList("nckd_aee_allbasicsry","nckd_aee_allowance","nckd_aee_ollowance","nckd_aee_per_endins"
- ,"nckd_aee_per_ljins","nckd_aee_per_hopins","nckd_aee_per_bhopins","nckd_aee_per_hosins","nckd_aee_per_cmymey","nckd_aee_unionmey"
- ,"nckd_aee_tax","nckd_aee_desalary","nckd_aee_netsalary","nckd_aee_otherreduce","nckd_aee_cpy_endins","nckd_aee_cpy_bhopins","nckd_aee_cpy_ljins"
- ,"nckd_aee_cpy_birthins","nckd_aee_cpy_dmgins","nckd_aee_cpy_cmymey","nckd_aee_cpy_hosins","nckd_aee_taxt","nckd_aee_alltaxt","nckd_aee_charge"
- ,"nckd_aee_finallsys");
- //薪酬明细(退休)分录字段标识,金额字段
- List<String> nckd_retired=Arrays.asList("nckd_re_livallowance","nckd_re_otherallowance","nckd_re_reward"
- ,"nckd_re_salarypayable","nckd_re_desalary","nckd_re_netsalary");
- //薪酬明细(退休)汇总分录
- List<String> nckd_a_retired=Arrays.asList("nckd_are_livallowance","nckd_are_ollowance","nckd_are_reward","nckd_are_salarypayable"
- ,"nckd_are_desalary","nckd_are_netsalary");
- //人力薪酬分录标识金额字段,金额字段
- List<String> nckd_pay=Arrays.asList("nckd_sae_levelsry","nckd_sae_dutiessry","nckd_sae_updutiessry","nckd_sae_workyearsry"
- ,"nckd_sae_depyear","nckd_sae_eduasry","nckd_sae_transry","nckd_sae_jobsry","nckd_sae_basicsry","nckd_sae_allbasicsry","nckd_sae_acmsry"
- ,"nckd_sae_mountsry","nckd_sae_reacmsry","nckd_sae_balyearsry","nckd_sae_blastyearsry","nckd_sae_allsry","nckd_sae_bsnrwd","nckd_sae_cpmrwd"
- ,"nckd_sae_psrwd","nckd_sae_comrwd","nckd_sae_cardrwd","nckd_sae_intwrd","nckd_sae_clearrwd","nckd_sae_allrwd","nckd_sae_retainsry"
- ,"nckd_sae_reward","nckd_sae_otreward","nckd_sae_cmcsbd","nckd_sae_trfsbd","nckd_sae_housesbd","nckd_sae_warmsbd","nckd_sae_edusbd"
- ,"nckd_sae_trafficsbd","nckd_sae_othersbd","nckd_sae_reduce","nckd_sae_othersry","nckd_sae_sickreduce","nckd_sae_sickhopreduce"
- ,"nckd_sae_eventreduce","nckd_sae_afwreduce","nckd_sae_latereduce","nckd_sae_cwasry","nckd_sae_cwareduce","nckd_sae_dgreduce"
- ,"nckd_sae_dcpreduce","nckd_sae_badreduce","nckd_sae_otherreduce","nckd_sae_allreduce","nckd_sae_lastsry","nckd_sae_allpay"
- ,"nckd_sae_per_endins","nckd_sae_per_ljins","nckd_sae_per_hopins","nckd_sae_per_bhopins","nckd_sae_per_hosins","nckd_sae_per_cmymey"
- ,"nckd_sae_per_ins","nckd_sae_unionmey","nckd_sae_tax","nckd_sae_allamount","nckd_sae_cash","nckd_sae_wages","nckd_sae_cpy_endins"
- ,"nckd_sae_cpy_hopins","nckd_sae_cpy_bhopins","nckd_sae_cpy_birthins","nckd_sae_cpy_ljins","nckd_sae_cpy_dmgins","nckd_sae_cpy_hosins"
- ,"nckd_sae_cpy_cmymey");
- //人力薪酬汇总分录
- List<String>nckd_a_allpay=Arrays.asList("nckd_asae_levelsry","nckd_asae_dutiessry","nckd_asae_updutiessry","nckd_asae_workyearsry"
- ,"nckd_asae_depyear","nckd_asae_eduasry","nckd_asae_transry","nckd_asae_jobsry","nckd_asae_basicsry","nckd_asae_allbasicsry"
- ,"nckd_asae_acmsry","nckd_asae_mountsry","nckd_asae_reacmsry","nckd_asae_balyearsry","nckd_asae_blastyearsry","nckd_asae_allsry"
- ,"nckd_asae_bsnrwd","nckd_asae_cpmrwd","nckd_asae_psrwd","nckd_asae_comrwd","nckd_asae_cardrwd","nckd_asae_intwrd","nckd_asae_clearrwd"
- ,"nckd_asae_allrwd","nckd_asae_retainsry","nckd_asae_reward","nckd_asae_otreward","nckd_asae_cmcsbd","nckd_asae_trfsbd","nckd_asae_housesbd"
- ,"nckd_asae_warmsbd","nckd_asae_edusbd","nckd_asae_trafficsbd","nckd_asae_othersbd","nckd_asae_reduce","nckd_asae_othersry","nckd_asae_sickreduce"
- ,"nckd_asae_shopreduce","nckd_asae_eventreduce","nckd_asae_afwreduce","nckd_asae_latereduce","nckd_asae_cwasry","nckd_asae_cwareduce"
- ,"nckd_asae_dgreduce","nckd_asae_dcpreduce","nckd_asae_badreduce","nckd_asae_otherreduce","nckd_asae_allreduce","nckd_asae_lastsry"
- ,"nckd_asae_allpay","nckd_asae_per_endins","nckd_asae_per_ljins","nckd_asae_per_hopins","nckd_asae_per_bhopins","nckd_asae_per_hosins"
- ,"nckd_asae_per_cmymey","nckd_asae_per_ins","nckd_asae_unionmey","nckd_asae_tax","nckd_asae_allamount","nckd_asae_cash","nckd_asae_wages"
- ,"nckd_asae_cpy_endins","nckd_asae_cpy_hopins","nckd_asae_cpy_bhopins","nckd_asae_cpy_birthins","nckd_asae_cpy_ljins","nckd_asae_cpy_dmgins"
- ,"nckd_asae_cpy_hosins","nckd_asae_cpy_cmymey");
- //人力薪酬内退分录标识,金额字段
- List<String> nckd_payretird=Arrays.asList("nckd_see_allbasicsry"
- ,"nckd_see_allowance","nckd_see_otherallowanc","nckd_see_per_endins","nckd_see_per_ljins","nckd_see_per_hopins"
- ,"nckd_see_per_bhopins","nckd_see_per_hosins","nckd_see_per_cmymey","nckd_see_unionmey","nckd_see_tax"
- ,"nckd_see_desalary","nckd_see_netsalary","nckd_see_otherreduce","nckd_see_cpy_endins","nckd_see_cpy_bhopins"
- ,"nckd_see_cpy_ljins","nckd_see_cpy_birthins","nckd_see_cpy_dmgins","nckd_see_cpy_cmymey","nckd_see_cpy_hosins"
- ,"nckd_see_taxt","nckd_see_alltaxt","nckd_see_charge","nckd_see_finallsys","nckd_see_cpy_oldins","nckd_see_cpy_hop"
- ,"nckd_see_cpy_bhop","nckd_see_cpy_bir","nckd_see_cpy_ljob","nckd_see_cpy_dwork","nckd_see_cpy_hos","nckd_see_cpy_cmy");
- //人力薪酬内退分录
- List<String> nckd_a_payretird=Arrays.asList("nckd_asee_allbasicsry","nckd_asee_allowance","nckd_asee_ollowanc","nckd_asee_per_endins"
- ,"nckd_asee_per_ljins","nckd_asee_per_hopins","nckd_asee_per_bhopins","nckd_asee_per_hosins","nckd_asee_per_cmymey","nckd_asee_unionmey"
- ,"nckd_asee_tax","nckd_asee_desalary","nckd_asee_netsalary","nckd_asee_otherreduce","nckd_asee_cpy_endins","nckd_asee_cpy_bhopins"
- ,"nckd_asee_cpy_ljins","nckd_asee_cpy_birthins","nckd_asee_cpy_dmgins","nckd_asee_cpy_cmymey","nckd_asee_cpy_hosins","nckd_asee_taxt"
- ,"nckd_asee_alltaxt","nckd_asee_charge","nckd_asee_finallsys","nckd_asee_cpy_oldins","nckd_asee_cpy_hop","nckd_asee_cpy_bhop","nckd_asee_cpy_bir"
- ,"nckd_asee_cpy_ljob","nckd_asee_cpy_dwork","nckd_asee_cpy_hos","nckd_asee_cpy_cmy");
- Map<String,List<String>> mapList=new HashMap<>();
- mapList.put("nckd_generalemployees",nckd_generalemployees);
- mapList.put("nckd_a_employees",nckd_a_employees);
- mapList.put("nckd_earlyretired",nckd_earlyretired);
- mapList.put("nckd_retired",nckd_retired);
- mapList.put("nckd_a_earlyretired",nckd_a_earlyretired);
- mapList.put("nckd_pay",nckd_pay);
- mapList.put("nckd_payretird",nckd_payretird);
- mapList.put("nckd_a_retired",nckd_a_retired);
- mapList.put("nckd_a_allpay",nckd_a_allpay);
- mapList.put("nckd_a_payretird",nckd_a_payretird);
- //list名
- List<String> list=new ArrayList<>();
- list.add("nckd_a_payretird");
- list.add("nckd_a_allpay");
- list.add("nckd_a_retired");
- list.add("nckd_generalemployees");
- list.add("nckd_allemployees");
- list.add("nckd_a_employees");
- list.add("nckd_earlyretired");
- list.add("nckd_retired");
- list.add("nckd_a_earlyretired");
- list.add("nckd_pay");
- list.add("nckd_payretird");
- list.add("nckd_allearlytired");
- list.add("nckd_allretired");
- list.add("nckd_allpay");
- list.add("nckd_allpayretird");
- for (String item:list) {
- if (nckdentry.equals(item)) {
- return mapList.get(nckdentry);
- }
- }
- return null;
- }
- //保存前计算汇总分录
- public void beforeDoOperation(BeforeDoOperationEventArgs arg) {
- super.beforeDoOperation(arg);
- FormOperate source = (FormOperate) arg.getSource();
- //获取当前操作单据
- DynamicObject dynamicObject=this.getModel().getDataEntity(true);
- //当前单据分录类型
- String nckd_entrytype=dynamicObject.getString("nckd_entrytype");
- //保存前,计算汇总分录
- if ("save".equals(source.getOperateKey())||"countall".equals(source.getOperateKey())){
- //分录类型为通用薪酬一般员工
- if ("A".equals(nckd_entrytype)) {
- //先清空汇总分录分录
- this.getModel().deleteEntryData("nckd_a_staffentry");
- //字段标识
- String entrylist="nckd_generalemployees";
- //对应分录标识
- String propername="nckd_staffentry";
- //对应部门标识
- String dep="nckd_se_department";
- //对应汇总分录字段标识
- String allentrtlist="nckd_a_employees";
- 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);
- allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_ase_department",nckd_a_staffentry);
- }
- //分录类型为通用薪酬内退
- if ("B".equals(nckd_entrytype)) {
- //先清空汇总分录分录
- this.getModel().deleteEntryData("nckd_a_earlyretiredentry");
- //字段标识
- String entrylist="nckd_earlyretired";
- //对应分录标识
- String propername="nckd_earlyretiredentry";
- //对应部门标识
- String dep="nckd_ee_department";
- //对应汇总分录字段标识
- String allentrtlist="nckd_a_earlyretired";
- allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_aee_department",nckd_a_earlyretiredentry);
- 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)) {
- //先清空汇总分录分录
- this.getModel().deleteEntryData("nckd_a_retireentry");
- //字段标识
- String entrylist="nckd_retired";
- //对应分录标识
- String propername="nckd_retireentry";
- //对应部门标识
- String dep="nckd_re_department";
- //对应汇总分录字段标识
- String allentrtlist="nckd_a_retired";
- allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_are_department",nckd_a_retireentry);
- 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)) {
- //先清空汇总分录分录
- this.getModel().deleteEntryData("nckd_a_salaryentry");
- //字段标识
- String entrylist="nckd_pay";
- //对应分录标识
- String propername="nckd_salaryentry";
- //对应部门标识
- String dep="nckd_sae_department";
- //对应汇总分录字段标识
- String allentrtlist="nckd_a_allpay";
- allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_asae_department",nckd_a_salaryentry);
- 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)) {
- //先清空汇总分录分录
- this.getModel().deleteEntryData("nckd_a_salaryentryre");
- //字段标识
- String entrylist="nckd_payretird";
- //对应分录标识
- String propername="nckd_salaryentryre";
- //对应部门标识
- String dep="nckd_see_department";
- //对应汇总分录字段标识
- String allentrtlist="nckd_a_payretird";
- allDataEntry(dynamicObject,entrylist,propername,dep,allentrtlist,"nckd_asee_department",nckd_a_salaryentryre);
- 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);
- }
- }
- }
- /**
- * @dynamicObject 当前单据信息
- * @entrylist 字段标识列表
- * @propername 分录标识
- * @dep 对应分录部门标识
- * @allentrtlist 写入的汇总分录字段
- * @nckd_dep 汇总分录部门标识
- * @description:根据分录类型不同计算汇总分录
- */
- public void allDataEntry(DynamicObject dynamicObject
- ,String entrylist,String propername,String dep,String allentrtlist,String nckd_dep,String nckd_allentry)
- {
- //字段标识
- 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);
- }
- }
- }
- }
|