diff --git a/evo-admin/src/main/java/com/evo/common/utils/poi/ExcelUtilSs.java b/evo-admin/src/main/java/com/evo/common/utils/poi/ExcelUtilSs.java index c607cd5..a44b533 100644 --- a/evo-admin/src/main/java/com/evo/common/utils/poi/ExcelUtilSs.java +++ b/evo-admin/src/main/java/com/evo/common/utils/poi/ExcelUtilSs.java @@ -360,6 +360,7 @@ public class ExcelUtilSs{ return AjaxResult.success(filename); }catch (Exception e){ log.error("导出Excel异常{}", e.getMessage()); + System.out.println("导出Excel异常"+e.getMessage()); throw new CustomException("导出Excel失败,请联系网站管理员!"); } finally{ @@ -395,30 +396,35 @@ public class ExcelUtilSs{ * @param row 单元格行 */ public void fillExcelData(int index, Row row){ - int startNo = 0; - int endNo = 0; - if(index == 0){ - startNo = index * sheetSize; - endNo = Math.min(startNo + sheetSize, list.size()); - } else{ - endNo = Math.min(startNo + sheetSize, lists.get(index-1).size()); - } - for (int i = startNo; i < endNo; i++){ - row = sheet.createRow(i + 2 - startNo); - // 得到导出对象. - T vo = (T) list.get(i); - int column = 0; - //当index为0时,默认是第一个sheet,需要把list[1]姓名列删掉 - List fields2 = new ArrayList<>(); - fields2.addAll(fields); - for (Object[] os : fields2){ - Field field = (Field) os[0]; - Excel excel = (Excel) os[1]; - // 设置实体类私有属性可访问 - field.setAccessible(true); - this.addCell(excel, row, vo, field, column++,index); + try { + int startNo = 0; + int endNo = 0; + if(index == 0){ + startNo = index * sheetSize; + endNo = Math.min(startNo + sheetSize, list.size()); + } else{ + endNo = Math.min(startNo + sheetSize, lists.get(index-1).size()); } + for (int i = startNo; i < endNo; i++){ + row = sheet.createRow(i + 2 - startNo); + // 得到导出对象. + T vo = (T) list.get(i); + int column = 0; + //当index为0时,默认是第一个sheet,需要把list[1]姓名列删掉 + List fields2 = new ArrayList<>(); + fields2.addAll(fields); + for (Object[] os : fields2){ + Field field = (Field) os[0]; + Excel excel = (Excel) os[1]; + // 设置实体类私有属性可访问 + field.setAccessible(true); + this.addCell(excel, row, vo, field, column++,index); + } + } + }catch (Exception e){ + e.printStackTrace(); } + } /** diff --git a/evo-admin/src/main/java/com/evo/finance/controller/RzSalaryDetailController.java b/evo-admin/src/main/java/com/evo/finance/controller/RzSalaryDetailController.java index 4260a1b..9fc0c37 100644 --- a/evo-admin/src/main/java/com/evo/finance/controller/RzSalaryDetailController.java +++ b/evo-admin/src/main/java/com/evo/finance/controller/RzSalaryDetailController.java @@ -10,6 +10,7 @@ import com.evo.common.core.domain.entity.SysDictData; import com.evo.common.utils.StringUtils; import com.evo.common.utils.poi.ExcelUtilSs; import com.evo.finance.domain.vo.SalaryVo; +import com.evo.restaurant.domain.RzRestaurantStatistics; import com.evo.system.mapper.SysDictDataMapper; import com.evo.system.service.ISysDeptService; import org.springframework.beans.BeanUtils; @@ -110,7 +111,7 @@ public class RzSalaryDetailController extends BaseController @PreAuthorize("@ss.hasPermi('finance:financeDetail:export')") @Log(title = "工资详情", businessType = BusinessType.EXPORT) @PostMapping("/export") - public AjaxResult export(RzSalaryDetail rzSalaryDetail) + public AjaxResult export(@RequestBody RzSalaryDetail rzSalaryDetail) { ExcelUtilSs util = new ExcelUtilSs(SalaryVo.class); //创建总表 @@ -128,7 +129,10 @@ public class RzSalaryDetailController extends BaseController //工资数据转化的保存 List list0 =new ArrayList(); for (SysDept sysDept : dept_list) { - sheetNameList.add(sysDept.getDeptName()); + if(!sysDept.getDeptName().equals("晋辅") && !sysDept.getDeptName().equals("元氏鑫源达")){ + sheetNameList.add(sysDept.getDeptName()); + } + list0 = new ArrayList(); //部门小计 SalaryVo xj_salaryVo = new SalaryVo(); xj_salaryVo.setName("小计:"); @@ -228,17 +232,27 @@ public class RzSalaryDetailController extends BaseController xj_salaryVo.setTaxPayable(new BigDecimal("0.00")); } xj_salaryVo.setTaxPayable(xj_salaryVo.getTaxPayable().add(salaryDetail.getTaxPayable())); + + //实发工资 if(StringUtils.isNull(xj_salaryVo.getNetPayroll())){ xj_salaryVo.setNetPayroll(new BigDecimal("0.00")); } xj_salaryVo.setNetPayroll(xj_salaryVo.getNetPayroll().add(salaryDetail.getNetPayroll())); BeanUtils.copyProperties(salaryDetail, salaryVo); salaryVo.setDeptName(sysDept.getDeptName()); - list0.add(salaryVo); + list0.add(salaryVo);//1、汇总一个部门下所有人员工资明细 } - list0.add(xj_salaryVo); + + + if(StringUtils.isNull(xj_salaryVo.getBasicSalary())){ + xj_salaryVo.setBasicSalary(new BigDecimal("0.00")); + } + if(StringUtils.isNull(xj_salaryVo.getOvertimeSalary())){ + xj_salaryVo.setOvertimeSalary(new BigDecimal("0.00")); + } + list0.add(xj_salaryVo);//2、人员工资明细下面存放一条小计信息 lists.add(list0); - list.add(xj_salaryVo); + list.add(xj_salaryVo);//3、存放所有部门小计信息 } //计算伊特总计数据 SalaryVo gj_salaryVo = new SalaryVo(); @@ -254,91 +268,91 @@ public class RzSalaryDetailController extends BaseController if(StringUtils.isNull(gj_salaryVo.getLevelSubsidies())){ gj_salaryVo.setLevelSubsidies(new BigDecimal("0.00")); } - gj_salaryVo.setLevelSubsidies(gj_salaryVo.getLevelSubsidies().add(salaryVoz.getLevelSubsidies())); + gj_salaryVo.setLevelSubsidies(gj_salaryVo.getLevelSubsidies().add(salaryVoz.getLevelSubsidies()==null?new BigDecimal("0.00"):salaryVoz.getLevelSubsidies())); if(StringUtils.isNull(gj_salaryVo.getContractSubsidies())){ gj_salaryVo.setContractSubsidies(new BigDecimal("0.00")); } - gj_salaryVo.setContractSubsidies(gj_salaryVo.getContractSubsidies().add(salaryVoz.getContractSubsidies())); + gj_salaryVo.setContractSubsidies(gj_salaryVo.getContractSubsidies().add(salaryVoz.getContractSubsidies()==null?new BigDecimal("0.00"):salaryVoz.getContractSubsidies())); if(StringUtils.isNull(gj_salaryVo.getSenioritySalary())){ gj_salaryVo.setSenioritySalary(new BigDecimal("0.00")); } - gj_salaryVo.setSenioritySalary(gj_salaryVo.getSenioritySalary().add(salaryVoz.getSenioritySalary())); + gj_salaryVo.setSenioritySalary(gj_salaryVo.getSenioritySalary().add(salaryVoz.getSenioritySalary()==null?new BigDecimal("0.00"):salaryVoz.getSenioritySalary())); if(StringUtils.isNull(gj_salaryVo.getSocialSubsidies())){ gj_salaryVo.setSocialSubsidies(new BigDecimal("0.00")); } - gj_salaryVo.setSocialSubsidies(gj_salaryVo.getSocialSubsidies().add(salaryVoz.getSocialSubsidies())); + gj_salaryVo.setSocialSubsidies(gj_salaryVo.getSocialSubsidies().add(salaryVoz.getSocialSubsidies()==null?new BigDecimal("0.00"):salaryVoz.getSocialSubsidies())); if(StringUtils.isNull(gj_salaryVo.getFullSubsidies())){ gj_salaryVo.setFullSubsidies(new BigDecimal("0.00")); } - gj_salaryVo.setFullSubsidies(gj_salaryVo.getFullSubsidies().add(salaryVoz.getFullSubsidies())); + gj_salaryVo.setFullSubsidies(gj_salaryVo.getFullSubsidies().add(salaryVoz.getFullSubsidies()==null?new BigDecimal("0.00"):salaryVoz.getFullSubsidies())); if(StringUtils.isNull(gj_salaryVo.getNightSubsidies())){ gj_salaryVo.setNightSubsidies(new BigDecimal("0.00")); } - gj_salaryVo.setNightSubsidies(gj_salaryVo.getNightSubsidies().add(salaryVoz.getNightSubsidies())); + gj_salaryVo.setNightSubsidies(gj_salaryVo.getNightSubsidies().add(salaryVoz.getNightSubsidies()==null?new BigDecimal("0.00"):salaryVoz.getNightSubsidies())); if(StringUtils.isNull(gj_salaryVo.getDinnerSubsidies())){ gj_salaryVo.setDinnerSubsidies(new BigDecimal("0.00")); } - gj_salaryVo.setDinnerSubsidies(gj_salaryVo.getDinnerSubsidies().add(salaryVoz.getDinnerSubsidies())); + gj_salaryVo.setDinnerSubsidies(gj_salaryVo.getDinnerSubsidies().add(salaryVoz.getDinnerSubsidies()==null?new BigDecimal("0.00"):salaryVoz.getNightSubsidies())); if(StringUtils.isNull(gj_salaryVo.getSubsidyOrBonus())){ gj_salaryVo.setSubsidyOrBonus(new BigDecimal("0.00")); } - gj_salaryVo.setSubsidyOrBonus(gj_salaryVo.getSubsidyOrBonus().add(salaryVoz.getSubsidyOrBonus())); + gj_salaryVo.setSubsidyOrBonus(gj_salaryVo.getSubsidyOrBonus().add(salaryVoz.getSubsidyOrBonus()==null?new BigDecimal("0.00"):salaryVoz.getSubsidyOrBonus())); if(StringUtils.isNull(gj_salaryVo.getAbsenteeismSalary())){ gj_salaryVo.setAbsenteeismSalary(new BigDecimal("0.00")); } - gj_salaryVo.setAbsenteeismSalary(gj_salaryVo.getAbsenteeismSalary().add(salaryVoz.getAbsenteeismSalary())); + gj_salaryVo.setAbsenteeismSalary(gj_salaryVo.getAbsenteeismSalary().add(salaryVoz.getAbsenteeismSalary()==null?new BigDecimal("0.00"):salaryVoz.getAbsenteeismSalary())); if(StringUtils.isNull(gj_salaryVo.getAbsenteeismSubsidies())){ gj_salaryVo.setAbsenteeismSubsidies(new BigDecimal("0.00")); } - gj_salaryVo.setAbsenteeismSubsidies(gj_salaryVo.getAbsenteeismSubsidies().add(salaryVoz.getAbsenteeismSubsidies())); + gj_salaryVo.setAbsenteeismSubsidies(gj_salaryVo.getAbsenteeismSubsidies().add(salaryVoz.getAbsenteeismSubsidies()==null?new BigDecimal("0.00"):salaryVoz.getAbsenteeismSubsidies())); if(StringUtils.isNull(gj_salaryVo.getMealFee())){ gj_salaryVo.setMealFee(new BigDecimal("0.00")); } - gj_salaryVo.setMealFee(gj_salaryVo.getMealFee().add(salaryVoz.getMealFee())); + gj_salaryVo.setMealFee(gj_salaryVo.getMealFee().add(salaryVoz.getMealFee()==null?new BigDecimal("0.00"):salaryVoz.getMealFee())); if(StringUtils.isNull(gj_salaryVo.getDeductions())){ gj_salaryVo.setDeductions(new BigDecimal("0.00")); } - gj_salaryVo.setDeductions(gj_salaryVo.getDeductions().add(salaryVoz.getDeductions())); + gj_salaryVo.setDeductions(gj_salaryVo.getDeductions().add(salaryVoz.getDeductions()==null?new BigDecimal("0.00"):salaryVoz.getDeductions())); if(StringUtils.isNull(gj_salaryVo.getSalary())){ gj_salaryVo.setSalary(new BigDecimal("0.00")); } - gj_salaryVo.setSalary(gj_salaryVo.getSalary().add(salaryVoz.getSalary())); + gj_salaryVo.setSalary(gj_salaryVo.getSalary().add(salaryVoz.getSalary()==null?new BigDecimal("0.00"):salaryVoz.getSalary())); if(StringUtils.isNull(gj_salaryVo.getPayInsurance())){ gj_salaryVo.setPayInsurance(new BigDecimal("0.00")); } - gj_salaryVo.setPayInsurance(gj_salaryVo.getPayInsurance().add(salaryVoz.getPayInsurance())); + gj_salaryVo.setPayInsurance(gj_salaryVo.getPayInsurance().add(salaryVoz.getPayInsurance()==null?new BigDecimal("0.00"):salaryVoz.getPayInsurance())); if(StringUtils.isNull(gj_salaryVo.getSalaryBeforeTax())){ gj_salaryVo.setSalaryBeforeTax(new BigDecimal("0.00")); } - gj_salaryVo.setSalaryBeforeTax(gj_salaryVo.getSalaryBeforeTax().add(salaryVoz.getSalaryBeforeTax())); + gj_salaryVo.setSalaryBeforeTax(gj_salaryVo.getSalaryBeforeTax().add(salaryVoz.getSalaryBeforeTax()==null?new BigDecimal("0.00"):salaryVoz.getSalaryBeforeTax())); if(StringUtils.isNull(gj_salaryVo.getTotalWages())){ gj_salaryVo.setTotalWages(new BigDecimal("0.00")); } - gj_salaryVo.setTotalWages(gj_salaryVo.getTotalWages().add(salaryVoz.getTotalWages())); + gj_salaryVo.setTotalWages(gj_salaryVo.getTotalWages().add(salaryVoz.getTotalWages()==null?new BigDecimal("0.00"):salaryVoz.getTotalWages())); if(StringUtils.isNull(gj_salaryVo.getAnnualExemptionAmount())){ gj_salaryVo.setAnnualExemptionAmount(new BigDecimal("0.00")); } - gj_salaryVo.setAnnualExemptionAmount(gj_salaryVo.getAnnualExemptionAmount().add(salaryVoz.getAnnualExemptionAmount())); + gj_salaryVo.setAnnualExemptionAmount(gj_salaryVo.getAnnualExemptionAmount().add(salaryVoz.getAnnualExemptionAmount()==null?new BigDecimal("0.00"):salaryVoz.getAnnualExemptionAmount())); if(StringUtils.isNull(gj_salaryVo.getSpecialDeduction())){ gj_salaryVo.setSpecialDeduction(new BigDecimal("0.00")); } - gj_salaryVo.setSpecialDeduction(gj_salaryVo.getSpecialDeduction().add(salaryVoz.getSpecialDeduction())); + gj_salaryVo.setSpecialDeduction(gj_salaryVo.getSpecialDeduction().add(salaryVoz.getSpecialDeduction()==null?new BigDecimal("0.00"):salaryVoz.getSpecialDeduction())); if(StringUtils.isNull(gj_salaryVo.getSlowDownTheDeduction())){ gj_salaryVo.setSlowDownTheDeduction(new BigDecimal("0.00")); } - gj_salaryVo.setSlowDownTheDeduction(gj_salaryVo.getSlowDownTheDeduction().add(salaryVoz.getSlowDownTheDeduction())); + gj_salaryVo.setSlowDownTheDeduction(gj_salaryVo.getSlowDownTheDeduction().add(salaryVoz.getSlowDownTheDeduction()==null?new BigDecimal("0.00"):salaryVoz.getSlowDownTheDeduction())); if(StringUtils.isNull(gj_salaryVo.getAggregatePersonalIncomeTax())){ gj_salaryVo.setAggregatePersonalIncomeTax(new BigDecimal("0.00")); } - gj_salaryVo.setAggregatePersonalIncomeTax(gj_salaryVo.getAggregatePersonalIncomeTax().add(salaryVoz.getAggregatePersonalIncomeTax())); + gj_salaryVo.setAggregatePersonalIncomeTax(gj_salaryVo.getAggregatePersonalIncomeTax().add(salaryVoz.getAggregatePersonalIncomeTax()==null?new BigDecimal("0.00"):salaryVoz.getAggregatePersonalIncomeTax())); if(StringUtils.isNull(gj_salaryVo.getTaxPayable())){ gj_salaryVo.setTaxPayable(new BigDecimal("0.00")); } - gj_salaryVo.setTaxPayable(gj_salaryVo.getTaxPayable().add(salaryVoz.getTaxPayable())); + gj_salaryVo.setTaxPayable(gj_salaryVo.getTaxPayable().add(salaryVoz.getTaxPayable()==null?new BigDecimal("0.00"):salaryVoz.getTaxPayable())); if(StringUtils.isNull(gj_salaryVo.getNetPayroll())){ gj_salaryVo.setNetPayroll(new BigDecimal("0.00")); } - gj_salaryVo.setNetPayroll(gj_salaryVo.getNetPayroll().add(salaryVoz.getNetPayroll())); + gj_salaryVo.setNetPayroll(gj_salaryVo.getNetPayroll().add(salaryVoz.getNetPayroll()==null?new BigDecimal("0.00"):salaryVoz.getNetPayroll())); } gj_salaryVo.setName("伊特总计:"); list.add(gj_salaryVo); @@ -460,34 +474,34 @@ public class RzSalaryDetailController extends BaseController list0.add(salaryVo); } list.add(xj_salaryVo); - payRollZong.setBasicSalary(xj_salaryVo.getBasicSalary().add(payRollZong.getBasicSalary())); - payRollZong.setOvertimeSalary(xj_salaryVo.getOvertimeSalary().add(payRollZong.getOvertimeSalary())); - payRollZong.setLevelSubsidies(xj_salaryVo.getLevelSubsidies().add(payRollZong.getLevelSubsidies())); - payRollZong.setContractSubsidies(xj_salaryVo.getContractSubsidies().add(payRollZong.getContractSubsidies())); - payRollZong.setSenioritySalary(xj_salaryVo.getSenioritySalary().add(payRollZong.getSenioritySalary())); - payRollZong.setSocialSubsidies(xj_salaryVo.getSocialSubsidies().add(payRollZong.getSocialSubsidies())); - payRollZong.setFullSubsidies(xj_salaryVo.getFullSubsidies().add(payRollZong.getFullSubsidies())); - payRollZong.setNightSubsidies(xj_salaryVo.getNightSubsidies().add(payRollZong.getNightSubsidies())); - payRollZong.setDinnerSubsidies(xj_salaryVo.getDinnerSubsidies().add(payRollZong.getDinnerSubsidies())); - payRollZong.setSubsidyOrBonus(xj_salaryVo.getSubsidyOrBonus().add(payRollZong.getSubsidyOrBonus())); - payRollZong.setAbsenteeismSalary(xj_salaryVo.getAbsenteeismSalary().add(payRollZong.getAbsenteeismSalary())); - payRollZong.setAbsenteeismSubsidies(xj_salaryVo.getAbsenteeismSubsidies().add(payRollZong.getAbsenteeismSubsidies())); - payRollZong.setMealFee(xj_salaryVo.getMealFee().add(payRollZong.getMealFee())); - payRollZong.setDeductions(xj_salaryVo.getDeductions().add(payRollZong.getDeductions())); - payRollZong.setSalary(xj_salaryVo.getSalary().add(payRollZong.getSalary())); - payRollZong.setPayInsurance(xj_salaryVo.getPayInsurance().add(payRollZong.getPayInsurance())); - payRollZong.setSalaryBeforeTax(xj_salaryVo.getSalaryBeforeTax().add(payRollZong.getSalaryBeforeTax())); - payRollZong.setTotalWages(xj_salaryVo.getTotalWages().add(payRollZong.getTotalWages())); - payRollZong.setAnnualExemptionAmount(xj_salaryVo.getAnnualExemptionAmount().add(payRollZong.getAnnualExemptionAmount())); - payRollZong.setSpecialDeduction(xj_salaryVo.getSpecialDeduction().add(payRollZong.getSpecialDeduction())); - payRollZong.setSlowDownTheDeduction(xj_salaryVo.getSlowDownTheDeduction().add(payRollZong.getSlowDownTheDeduction())); - payRollZong.setAggregatePersonalIncomeTax(xj_salaryVo.getAggregatePersonalIncomeTax().add(payRollZong.getAggregatePersonalIncomeTax())); - payRollZong.setTaxPayable(xj_salaryVo.getTaxPayable().add(payRollZong.getTaxPayable())); - payRollZong.setNetPayroll(xj_salaryVo.getNetPayroll().add(payRollZong.getNetPayroll())); + payRollZong.setBasicSalary(xj_salaryVo.getBasicSalary()==null?new BigDecimal("0.00"):xj_salaryVo.getBasicSalary().add(payRollZong.getBasicSalary())); + payRollZong.setOvertimeSalary(xj_salaryVo.getOvertimeSalary()==null?new BigDecimal("0.00"):xj_salaryVo.getOvertimeSalary().add(payRollZong.getOvertimeSalary())); + payRollZong.setLevelSubsidies(xj_salaryVo.getLevelSubsidies()==null?new BigDecimal("0.00"):xj_salaryVo.getLevelSubsidies().add(payRollZong.getLevelSubsidies())); + payRollZong.setContractSubsidies(xj_salaryVo.getContractSubsidies()==null?new BigDecimal("0.00"):xj_salaryVo.getContractSubsidies().add(payRollZong.getContractSubsidies())); + payRollZong.setSenioritySalary(xj_salaryVo.getSenioritySalary()==null?new BigDecimal("0.00"):xj_salaryVo.getSenioritySalary().add(payRollZong.getSenioritySalary())); + payRollZong.setSocialSubsidies(xj_salaryVo.getSocialSubsidies()==null?new BigDecimal("0.00"):xj_salaryVo.getSocialSubsidies().add(payRollZong.getSocialSubsidies())); + payRollZong.setFullSubsidies(xj_salaryVo.getFullSubsidies()==null?new BigDecimal("0.00"):xj_salaryVo.getFullSubsidies().add(payRollZong.getFullSubsidies())); + payRollZong.setNightSubsidies(xj_salaryVo.getNightSubsidies()==null?new BigDecimal("0.00"):xj_salaryVo.getNightSubsidies().add(payRollZong.getNightSubsidies())); + payRollZong.setDinnerSubsidies(xj_salaryVo.getDinnerSubsidies()==null?new BigDecimal("0.00"):xj_salaryVo.getDinnerSubsidies().add(payRollZong.getDinnerSubsidies())); + payRollZong.setSubsidyOrBonus(xj_salaryVo.getSubsidyOrBonus()==null?new BigDecimal("0.00"):xj_salaryVo.getSubsidyOrBonus().add(payRollZong.getSubsidyOrBonus())); + payRollZong.setAbsenteeismSalary(xj_salaryVo.getAbsenteeismSalary()==null?new BigDecimal("0.00"):xj_salaryVo.getAbsenteeismSalary().add(payRollZong.getAbsenteeismSalary())); + payRollZong.setAbsenteeismSubsidies(xj_salaryVo.getAbsenteeismSubsidies()==null?new BigDecimal("0.00"):xj_salaryVo.getAbsenteeismSubsidies().add(payRollZong.getAbsenteeismSubsidies())); + payRollZong.setMealFee(xj_salaryVo.getMealFee()==null?new BigDecimal("0.00"):xj_salaryVo.getMealFee().add(payRollZong.getMealFee())); + payRollZong.setDeductions(xj_salaryVo.getDeductions()==null?new BigDecimal("0.00"):xj_salaryVo.getDeductions().add(payRollZong.getDeductions())); + payRollZong.setSalary(xj_salaryVo.getSalary()==null ?new BigDecimal("0.00"):xj_salaryVo.getSalary().add(payRollZong.getSalary())); + payRollZong.setPayInsurance(xj_salaryVo.getPayInsurance()==null ?new BigDecimal("0.00"):xj_salaryVo.getPayInsurance().add(payRollZong.getPayInsurance())); + payRollZong.setSalaryBeforeTax(xj_salaryVo.getSalaryBeforeTax()==null?new BigDecimal("0.00"):xj_salaryVo.getSalaryBeforeTax().add(payRollZong.getSalaryBeforeTax())); + payRollZong.setTotalWages(xj_salaryVo.getTotalWages()==null ?new BigDecimal("0.00"):xj_salaryVo.getTotalWages().add(payRollZong.getTotalWages())); + payRollZong.setAnnualExemptionAmount(xj_salaryVo.getAnnualExemptionAmount()==null ?new BigDecimal("0.00"):xj_salaryVo.getAnnualExemptionAmount().add(payRollZong.getAnnualExemptionAmount())); + payRollZong.setSpecialDeduction(xj_salaryVo.getSpecialDeduction()==null ?new BigDecimal("0.00"):xj_salaryVo.getSpecialDeduction().add(payRollZong.getSpecialDeduction())); + payRollZong.setSlowDownTheDeduction(xj_salaryVo.getSlowDownTheDeduction()==null ?new BigDecimal("0.00"):xj_salaryVo.getSlowDownTheDeduction().add(payRollZong.getSlowDownTheDeduction())); + payRollZong.setAggregatePersonalIncomeTax(xj_salaryVo.getAggregatePersonalIncomeTax()==null ?new BigDecimal("0.00"):xj_salaryVo.getAggregatePersonalIncomeTax().add(payRollZong.getAggregatePersonalIncomeTax())); + payRollZong.setTaxPayable(xj_salaryVo.getTaxPayable()==null ?new BigDecimal("0.00"):xj_salaryVo.getTaxPayable().add(payRollZong.getTaxPayable())); + payRollZong.setNetPayroll(xj_salaryVo.getNetPayroll()==null ?new BigDecimal("0.00"):xj_salaryVo.getNetPayroll().add(payRollZong.getNetPayroll())); } } - list.add(payRollZong); - //表尾 + list.add(payRollZong);//部门小计+总计 + //表尾 list=[部门小计,总计,部门小计+总计];lists=人员工资明细下面存放一条小计信息;sheetNameLis=所有sheet表名字 String footer = "制表: "+"审核: "+"经理签字: "+"总经理签字: "; return util.exportExcel(list,lists,"总表",sheetNameList,title,footer); } diff --git a/evo-admin/src/main/java/com/evo/finance/service/impl/RzSalaryDetailServiceImpl.java b/evo-admin/src/main/java/com/evo/finance/service/impl/RzSalaryDetailServiceImpl.java index dffe6b0..fafdbed 100644 --- a/evo-admin/src/main/java/com/evo/finance/service/impl/RzSalaryDetailServiceImpl.java +++ b/evo-admin/src/main/java/com/evo/finance/service/impl/RzSalaryDetailServiceImpl.java @@ -151,7 +151,9 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService rzSalaryDetail.setWbFlag(sysStaff.getCompanyName()); //公司 //计算获得的工资 SysStaffDetail salaryDetail = calculateSalary(sysStaff,rzSalaryDetail.getMonth(),sbrq); - rzSalaryDetail.setMonthSalary(salaryDetail.getBasicSalary()); //基本工资 + rzSalaryDetail.setBasicSalary(salaryDetail.getBasicSalary());//基本工资 + rzSalaryDetail.setJobSalary(salaryDetail.getJobsSalary());//岗位工资 + rzSalaryDetail.setMonthSalary(salaryDetail.getBasicSalary().add(salaryDetail.getJobsSalary())); //月工资 rzSalaryDetail.setAbsenteeismSalary(salaryDetail.getAbsenteeismSalary()); //请假扣除工资 rzSalaryDetail.setOvertimeSalary(salaryDetail.getOverWages()); //加班工资 rzSalaryDetail.setNightSubsidies(salaryDetail.getNightShiftSubsidies()); //夜班补助 @@ -164,7 +166,7 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService rzSalaryDetail.setContractSubsidies(sysStaffDetail.getContractSubsidies()); //合同 rzSalaryDetail.setSocialSubsidies(sysStaffDetail.getSocialSecuritySubsidies()); //社保 rzSalaryDetail.setSubsidyOrBonus(sysStaffDetail.getOtherSubsidies().add(sysStaffDetail.getFixedAllowance())); //其他补助 - //补助扣除 TODO 福利扣除百分比 + //补助扣除 TODO 福利扣除百分比:各种补助*扣除系数 rzSalaryDetail.setAbsenteeismSubsidies(sysStaffDetail.getLevelOfEducationSubsidies().add(sysStaffDetail.getContractSubsidies()) .add(sysStaffDetail.getSenioritySubsidies()).add(sysStaffDetail.getSocialSecuritySubsidies()).multiply(salaryDetail.getAbsenteeismSubsidies())); rzSalaryDetail.setDeductions(sysStaffDetail.getDeductions()); //其他扣款 @@ -227,37 +229,37 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService .add(sysStaffDetail.getHousingRents()).add(sysStaffDetail.getAdultEducation()).add(sysStaffDetail.getTreatmentForSeriousDisease())); // 判断应纳税所得额额度(额度不一样税率不一样) - if (rzSalaryDetail.getTaxableIncome().doubleValue() > 0 && rzSalaryDetail.getTaxableIncome().doubleValue() <= 36000l) { + if (null!=rzSalaryDetail.getTaxableIncome() && rzSalaryDetail.getTaxableIncome().doubleValue() > 0 && rzSalaryDetail.getTaxableIncome().doubleValue() <= 36000l) { // 此阶税率为百分之3,速减数为0 rzSalaryDetail.setTaxRate(new BigDecimal("0.03")); // 速算扣除数(速算扣除数跟税率同步) rzSalaryDetail.setSlowDownTheDeduction(new BigDecimal("0")); - } else if (rzSalaryDetail.getTaxableIncome().doubleValue() > 36000l && rzSalaryDetail.getTaxableIncome().doubleValue() <= 144000L) { + } else if (null!=rzSalaryDetail.getTaxableIncome() &&rzSalaryDetail.getTaxableIncome().doubleValue() > 36000l && rzSalaryDetail.getTaxableIncome().doubleValue() <= 144000L) { // 此阶税率为百分之3,速减数为0 rzSalaryDetail.setTaxRate(new BigDecimal("0.10")); // 速算扣除数(速算扣除数跟税率同步) rzSalaryDetail.setSlowDownTheDeduction(new BigDecimal("2520")); - } else if (rzSalaryDetail.getTaxableIncome().doubleValue() > 144000L && rzSalaryDetail.getTaxableIncome().doubleValue() <= 300000l) { + } else if (null!=rzSalaryDetail.getTaxableIncome() &&rzSalaryDetail.getTaxableIncome().doubleValue() > 144000L && rzSalaryDetail.getTaxableIncome().doubleValue() <= 300000l) { // 此阶税率为百分之3,速减数为0 rzSalaryDetail.setTaxRate(new BigDecimal("0.20")); // 速算扣除数(速算扣除数跟税率同步) rzSalaryDetail.setSlowDownTheDeduction(new BigDecimal("16920")); - } else if (rzSalaryDetail.getTaxableIncome().doubleValue() > 300000l && rzSalaryDetail.getTaxableIncome().doubleValue() <= 420000l) { + } else if (null!=rzSalaryDetail.getTaxableIncome() &&rzSalaryDetail.getTaxableIncome().doubleValue() > 300000l && rzSalaryDetail.getTaxableIncome().doubleValue() <= 420000l) { // 此阶税率为百分之3,速减数为0 rzSalaryDetail.setTaxRate(new BigDecimal("0.25")); // 速算扣除数(速算扣除数跟税率同步) rzSalaryDetail.setSlowDownTheDeduction(new BigDecimal("31920")); - } else if (rzSalaryDetail.getTaxableIncome().doubleValue() > 420000l && rzSalaryDetail.getTaxableIncome().doubleValue() <= 660000l) { + } else if (null!=rzSalaryDetail.getTaxableIncome() &&rzSalaryDetail.getTaxableIncome().doubleValue() > 420000l && rzSalaryDetail.getTaxableIncome().doubleValue() <= 660000l) { // 此阶税率为百分之3,速减数为0 rzSalaryDetail.setTaxRate(new BigDecimal("0.30")); // 速算扣除数(速算扣除数跟税率同步) rzSalaryDetail.setSlowDownTheDeduction(new BigDecimal("52920")); - } else if (rzSalaryDetail.getTaxableIncome().doubleValue() > 660000l && rzSalaryDetail.getTaxableIncome().doubleValue() <= 960000l) { + } else if (null!=rzSalaryDetail.getTaxableIncome() &&rzSalaryDetail.getTaxableIncome().doubleValue() > 660000l && rzSalaryDetail.getTaxableIncome().doubleValue() <= 960000l) { // 此阶税率为百分之3,速减数为0 rzSalaryDetail.setTaxRate(new BigDecimal("0.35")); // 速算扣除数(速算扣除数跟税率同步) rzSalaryDetail.setSlowDownTheDeduction(new BigDecimal("85920")); - } else if (rzSalaryDetail.getTaxableIncome().doubleValue() > 960000l) { + } else if (null!=rzSalaryDetail.getTaxableIncome() &&rzSalaryDetail.getTaxableIncome().doubleValue() > 960000l) { // 此阶税率为百分之3,速减数为0 rzSalaryDetail.setTaxRate(new BigDecimal("0.45")); // 速算扣除数(速算扣除数跟税率同步) @@ -380,15 +382,24 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService BigDecimal bfb = new BigDecimal("0.00"); //获取考勤统计 RzAttendanceStatistical rzAttendanceStatistical = rzAttendanceStatisticalMapper.getRzAttendanceStatisticalByDateAndName(sysStaff.getUserId(),month); - //判断入职日期,社保缴纳日期以前入职,计算补助扣除比例 - if(sysStaff.getEmploymentDate().before(date)){ + //判断入职日期,社保缴纳日期以前入职,计算补助扣除比例==请假4小时 扣补助的5% 请假十天 补助就扣没了 + /*if(sysStaff.getEmploymentDate().before(date)){ //计算请假百分比 - BigDecimal b = rzAttendanceStatistical.getAbsenteeism().divide(new BigDecimal("4")); + BigDecimal b = rzAttendanceStatistical.getAbsenteeism().divide(new BigDecimal("4"));//???? bfb = b.multiply(new BigDecimal(Constants.SUBSIDY_PROPORTION)); sysStaffDetail.setAbsenteeismSubsidies(bfb); }else{ sysStaffDetail.setAbsenteeismSubsidies(new BigDecimal("1.00")); + }*/ + //计算步骤扣除比例:请假4小时 扣补助5% 8小时 10% 12小时 15% 以此类推;请假十天(80小时) 补助全扣 + if(null!=rzAttendanceStatistical.getAbsenteeism() && rzAttendanceStatistical.getAbsenteeism().compareTo(new BigDecimal("80")) < 0){ + BigDecimal b = rzAttendanceStatistical.getAbsenteeism().divide(new BigDecimal("4")); + bfb = b.multiply(new BigDecimal(Constants.SUBSIDY_PROPORTION)); + sysStaffDetail.setAbsenteeismSubsidies(bfb); + }else if(null!=rzAttendanceStatistical.getAbsenteeism() && rzAttendanceStatistical.getAbsenteeism().compareTo(new BigDecimal("80")) >= 0){ + sysStaffDetail.setAbsenteeismSubsidies(new BigDecimal("1.00")); } + sysStaffDetail.setNightShiftSubsidies(sysStaffDetail.getNightShiftSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getNightNumber()))); sysStaffDetail.setDinnerSubsidies(sysStaffDetail.getDinnerSubsidies().multiply(new BigDecimal(rzAttendanceStatistical.getNightNumber()))); //是否打卡 @@ -403,10 +414,10 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService calendar.set(Calendar.MONTH,1); //全额薪资日期在工资月以前----null != sysStaff.getWagesRatioDate() && if(null != sysStaff.getWagesRatioDate() && sysStaff.getWagesRatioDate().before(month)) { - sysStaffDetail.setBasicSalary(sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP) + sysStaffDetail.setMonthSalary(sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP) .multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber()))); }else if(null != sysStaff.getWagesRatioDate() && sysStaff.getWagesRatioDate().after(calendar.getTime())) { - sysStaffDetail.setBasicSalary(sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP) + sysStaffDetail.setMonthSalary(sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP) .multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD))); }else { //根据转正日期,查询员工的打卡信息 @@ -418,7 +429,7 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService } //未转正需要扣除的工资 BigDecimal work = sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP).multiply(att_work).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD_1)); - sysStaffDetail.setBasicSalary(sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP) + sysStaffDetail.setMonthSalary(sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP) .multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).subtract(work)); } sysStaffDetail.setOverWages(sysStaffDetail.getDailyWage().divide(new BigDecimal("8.0"),2, RoundingMode.HALF_UP).multiply(rzAttendanceStatistical.getWorkOvertimeNumber())); @@ -431,9 +442,9 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService calendar.set(Calendar.MONTH,1); //全额薪资日期在工资月以前 if(sysStaff.getWagesRatioDate().before(month)) { - sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber()))); + sysStaffDetail.setMonthSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber()))); }else if(sysStaff.getWagesRatioDate().after(calendar.getTime())) { - sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD))); + sysStaffDetail.setMonthSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD))); }else { //根据转正日期,查询员工的打卡信息 BigDecimal att_work = new BigDecimal("0.0"); @@ -444,7 +455,7 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService } //未转正需要扣除的工资 BigDecimal work = sysStaffDetail.getHoursSalary().multiply(att_work).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD_1)); - sysStaffDetail.setBasicSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).subtract(work)); + sysStaffDetail.setMonthSalary(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getRealAttendance().add(rzAttendanceStatistical.getWorkOvertimeNumber())).subtract(work)); } sysStaffDetail.setOverWages(sysStaffDetail.getHoursSalary().multiply(rzAttendanceStatistical.getWorkOvertimeNumber())); sysStaffDetail.setAbsenteeismSalary(new BigDecimal("0.00")); @@ -456,10 +467,10 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService calendar.set(Calendar.MONTH,1); //全额薪资日期在工资月以前 if(sysStaff.getWagesRatioDate().before(month)) { - sysStaffDetail.setBasicSalary(sysStaffDetail.getBasicSalary().add(sysStaffDetail.getJobsSalary())); + sysStaffDetail.setMonthSalary(sysStaffDetail.getBasicSalary().add(sysStaffDetail.getJobsSalary())); }else if(sysStaff.getWagesRatioDate().after(calendar.getTime())) { BigDecimal hours = sysStaffDetail.getBasicSalary().add(sysStaffDetail.getJobsSalary()).divide(rzAttendanceStatistical.getShouldAttendance(),2, RoundingMode.HALF_UP); - sysStaffDetail.setBasicSalary(hours.multiply(rzAttendanceStatistical.getRealAttendance()).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD))); + sysStaffDetail.setMonthSalary(hours.multiply(rzAttendanceStatistical.getRealAttendance()).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD))); }else { //根据转正日期,查询员工的打卡信息 BigDecimal att_work = new BigDecimal("0.0"); @@ -471,20 +482,22 @@ public class RzSalaryDetailServiceImpl implements IRzSalaryDetailService //未转正需要扣除的工资 BigDecimal work = sysStaffDetail.getBasicSalary().add(sysStaffDetail.getJobsSalary()).divide(rzAttendanceStatistical.getShouldAttendance(),2, RoundingMode.HALF_UP) .multiply(att_work).multiply(new BigDecimal(Constants.SUBSIDY_PERIOD_1)); - sysStaffDetail.setBasicSalary(sysStaffDetail.getBasicSalary().add(sysStaffDetail.getJobsSalary()).subtract(work)); + sysStaffDetail.setMonthSalary(sysStaffDetail.getBasicSalary().add(sysStaffDetail.getJobsSalary()).subtract(work)); } //计算月工资的每小时,工资 - BigDecimal evrymoney = sysStaffDetail.getBasicSalary().multiply(new BigDecimal("11.00")) + /*BigDecimal evrymoney = sysStaffDetail.getBasicSalary().multiply(new BigDecimal("11.00")) .add(sysStaffDetail.getBasicSalary().multiply(new BigDecimal(Constants.SUBSIDY_PERIOD))) - .divide(new BigDecimal(days).multiply(new BigDecimal("8.00")),2, RoundingMode.HALF_UP); - sysStaffDetail.setAbsenteeismSalary(evrymoney.multiply(rzAttendanceStatistical.getShouldAttendance().subtract(rzAttendanceStatistical.getRealAttendance()))); + .divide(new BigDecimal(days).multiply(new BigDecimal("8.00")),2, RoundingMode.HALF_UP);*///???? + BigDecimal divide = sysStaffDetail.getMonthSalary().divide(new BigDecimal(26), 2).divide(new BigDecimal("8")); + + sysStaffDetail.setAbsenteeismSalary(divide.multiply(rzAttendanceStatistical.getShouldAttendance().subtract(rzAttendanceStatistical.getRealAttendance()))); sysStaffDetail.setMiddleSubsidies(new BigDecimal("0.00")); //根据用户获取当前的加班情况 RzSpecialOverTime rSpecialOverTime = rzSpecialOverTimeMapper.selectRzSpecialOverTimeByUserIdAndDate(sysStaff.getUserId(),month); if(StringUtils.isNull(rSpecialOverTime)){ sysStaffDetail.setOverWages(new BigDecimal("0.00")); }else{ - sysStaffDetail.setOverWages(evrymoney.multiply(rSpecialOverTime.getSickHours())); + sysStaffDetail.setOverWages(divide.multiply(rSpecialOverTime.getSickHours())); } } //判断员工的上班时长,设置保险的补交 diff --git a/evo-admin/src/main/java/com/evo/system/domain/SysStaffDetail.java b/evo-admin/src/main/java/com/evo/system/domain/SysStaffDetail.java index c7f2763..22e37f0 100644 --- a/evo-admin/src/main/java/com/evo/system/domain/SysStaffDetail.java +++ b/evo-admin/src/main/java/com/evo/system/domain/SysStaffDetail.java @@ -58,6 +58,8 @@ public class SysStaffDetail extends BaseEntity /** 社保补助 */ @Excel(name = "社保补助") private BigDecimal socialSecuritySubsidies; + + /** 中班补助 */ @Excel(name = "中班补助") private BigDecimal middleSubsidies; @@ -162,13 +164,24 @@ public class SysStaffDetail extends BaseEntity /** 备注 */ @Excel(name = "备注") private String remarks; - private BigDecimal OverWages; //加班工资 - private BigDecimal absenteeismSalary; //请假扣款 - private BigDecimal absenteeismSubsidies; //补助扣除 + + /**加班工资*/ + private BigDecimal OverWages; + + /**请假扣款 */ + private BigDecimal absenteeismSalary; + + /**补助扣除 */ + private BigDecimal absenteeismSubsidies; /** 删除标识 */ private String delFlag; + + /** 月工资 */ + private BigDecimal monthSalary; + + public BigDecimal getMiddleSubsidies() { return middleSubsidies; } @@ -543,6 +556,14 @@ public class SysStaffDetail extends BaseEntity return delFlag; } + public BigDecimal getMonthSalary() { + return monthSalary; + } + + public void setMonthSalary(BigDecimal monthSalary) { + this.monthSalary = monthSalary; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)