fix:财务管理-工资详情导出修复

This commit is contained in:
lhb 2025-05-12 15:49:23 +08:00
parent c067f5722f
commit f5b1453b36
4 changed files with 157 additions and 103 deletions

View File

@ -360,6 +360,7 @@ public class ExcelUtilSs<T>{
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<T>{
* @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<Object[]> 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<Object[]> 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();
}
}
/**

View File

@ -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<SalaryVo> util = new ExcelUtilSs<SalaryVo>(SalaryVo.class);
//创建总表
@ -128,7 +129,10 @@ public class RzSalaryDetailController extends BaseController
//工资数据转化的保存
List<SalaryVo> list0 =new ArrayList<SalaryVo>();
for (SysDept sysDept : dept_list) {
sheetNameList.add(sysDept.getDeptName());
if(!sysDept.getDeptName().equals("晋辅") && !sysDept.getDeptName().equals("元氏鑫源达")){
sheetNameList.add(sysDept.getDeptName());
}
list0 = new ArrayList<SalaryVo>();
//部门小计
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);
}

View File

@ -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()));
}
}
//判断员工的上班时长设置保险的补交

View File

@ -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)