修改工资详情导出功能

This commit is contained in:
tzy 2025-06-05 16:28:23 +08:00
parent 4571d299fd
commit e3cf13dffb
4 changed files with 81 additions and 217 deletions

View File

@ -116,8 +116,8 @@ public class RzSalaryDetailController extends BaseController
*/
@PreAuthorize("@ss.hasPermi('finance:financeDetail:export')")
@Log(title = "工资详情", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public AjaxResult export(RzSalaryDetail rzSalaryDetail)
@PostMapping("/export1")
public AjaxResult export1(RzSalaryDetail rzSalaryDetail)
{
ExcelUtilSs<SalaryVo> util = new ExcelUtilSs<SalaryVo>(SalaryVo.class);
//创建总表
@ -508,5 +508,15 @@ public class RzSalaryDetailController extends BaseController
List<RzSalaryVo> attendanceList = util.importExcel(file.getInputStream());
return success(rzSalaryDetailService.importSalesCommissions(attendanceList));
}
/*
* 导出工资详情列表
*/
@PreAuthorize("@ss.hasPermi('finance:financeDetail:export')")
@Log(title = "工资详情", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public AjaxResult export(RzSalaryDetail rzSalaryDetail){
return rzSalaryDetailService.export(rzSalaryDetail);
}
}

View File

@ -1,8 +1,10 @@
package com.evo.finance.domain.vo;
import com.evo.common.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class SalaryVo {
@Excel(name = "部门名称")
@ -10,6 +12,8 @@ public class SalaryVo {
/** 员工姓名 */
@Excel(name = "员工姓名")
private String name;
@Excel(name = "工资月份")
private String month;
/** 基本工资 */
@Excel(name = "月工资")
private BigDecimal basicSalary;
@ -83,211 +87,4 @@ public class SalaryVo {
@Excel(name = "实发工资")
private BigDecimal netPayroll;
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigDecimal getBasicSalary() {
return basicSalary;
}
public void setBasicSalary(BigDecimal basicSalary) {
this.basicSalary = basicSalary;
}
public BigDecimal getOvertimeSalary() {
return overtimeSalary;
}
public void setOvertimeSalary(BigDecimal overtimeSalary) {
this.overtimeSalary = overtimeSalary;
}
public BigDecimal getLevelSubsidies() {
return levelSubsidies;
}
public void setLevelSubsidies(BigDecimal levelSubsidies) {
this.levelSubsidies = levelSubsidies;
}
public BigDecimal getContractSubsidies() {
return contractSubsidies;
}
public void setContractSubsidies(BigDecimal contractSubsidies) {
this.contractSubsidies = contractSubsidies;
}
public BigDecimal getSenioritySalary() {
return senioritySalary;
}
public void setSenioritySalary(BigDecimal senioritySalary) {
this.senioritySalary = senioritySalary;
}
public BigDecimal getSocialSubsidies() {
return socialSubsidies;
}
public void setSocialSubsidies(BigDecimal socialSubsidies) {
this.socialSubsidies = socialSubsidies;
}
public BigDecimal getFullSubsidies() {
return fullSubsidies;
}
public void setFullSubsidies(BigDecimal fullSubsidies) {
this.fullSubsidies = fullSubsidies;
}
public BigDecimal getNightSubsidies() {
return nightSubsidies;
}
public void setNightSubsidies(BigDecimal nightSubsidies) {
this.nightSubsidies = nightSubsidies;
}
public BigDecimal getDinnerSubsidies() {
return dinnerSubsidies;
}
public void setDinnerSubsidies(BigDecimal dinnerSubsidies) {
this.dinnerSubsidies = dinnerSubsidies;
}
public BigDecimal getSubsidyOrBonus() {
return subsidyOrBonus;
}
public void setSubsidyOrBonus(BigDecimal subsidyOrBonus) {
this.subsidyOrBonus = subsidyOrBonus;
}
public BigDecimal getAbsenteeismSalary() {
return absenteeismSalary;
}
public void setAbsenteeismSalary(BigDecimal absenteeismSalary) {
this.absenteeismSalary = absenteeismSalary;
}
public BigDecimal getAbsenteeismSubsidies() {
return absenteeismSubsidies;
}
public void setAbsenteeismSubsidies(BigDecimal absenteeismSubsidies) {
this.absenteeismSubsidies = absenteeismSubsidies;
}
public BigDecimal getMealFee() {
return mealFee;
}
public void setMealFee(BigDecimal mealFee) {
this.mealFee = mealFee;
}
public BigDecimal getDeductions() {
return deductions;
}
public void setDeductions(BigDecimal deductions) {
this.deductions = deductions;
}
public BigDecimal getSalary() {
return salary;
}
public void setSalary(BigDecimal salary) {
this.salary = salary;
}
public BigDecimal getPayInsurance() {
return payInsurance;
}
public void setPayInsurance(BigDecimal payInsurance) {
this.payInsurance = payInsurance;
}
public BigDecimal getSalaryBeforeTax() {
return salaryBeforeTax;
}
public void setSalaryBeforeTax(BigDecimal salaryBeforeTax) {
this.salaryBeforeTax = salaryBeforeTax;
}
public BigDecimal getTotalWages() {
return totalWages;
}
public void setTotalWages(BigDecimal totalWages) {
this.totalWages = totalWages;
}
public BigDecimal getAnnualExemptionAmount() {
return annualExemptionAmount;
}
public void setAnnualExemptionAmount(BigDecimal annualExemptionAmount) {
this.annualExemptionAmount = annualExemptionAmount;
}
public BigDecimal getSpecialDeduction() {
return specialDeduction;
}
public void setSpecialDeduction(BigDecimal specialDeduction) {
this.specialDeduction = specialDeduction;
}
public BigDecimal getSlowDownTheDeduction() {
return slowDownTheDeduction;
}
public void setSlowDownTheDeduction(BigDecimal slowDownTheDeduction) {
this.slowDownTheDeduction = slowDownTheDeduction;
}
public BigDecimal getAggregatePersonalIncomeTax() {
return aggregatePersonalIncomeTax;
}
public void setAggregatePersonalIncomeTax(BigDecimal aggregatePersonalIncomeTax) {
this.aggregatePersonalIncomeTax = aggregatePersonalIncomeTax;
}
public BigDecimal getTaxPayable() {
return taxPayable;
}
public void setTaxPayable(BigDecimal taxPayable) {
this.taxPayable = taxPayable;
}
public BigDecimal getNetPayroll() {
return netPayroll;
}
public void setNetPayroll(BigDecimal netPayroll) {
this.netPayroll = netPayroll;
}
}

View File

@ -69,4 +69,6 @@ public interface IRzSalaryDetailService
public List<RzSalaryDetail> selectSalaryDetailByWbFlag(String wbFlag,Date date);
AjaxResult importSalesCommissions(List<RzSalaryVo> attendanceList);
AjaxResult export(RzSalaryDetail rzSalaryDetail);
}

View File

@ -13,12 +13,11 @@ import com.evo.attendance.processor.PunchTheClockStrategyExchangeProcessor;
import com.evo.common.constant.Constants;
import com.evo.common.core.domain.AjaxResult;
import com.evo.common.core.domain.entity.SysDept;
import com.evo.common.utils.DateUtils;
import com.evo.common.utils.ParamUtils;
import com.evo.common.utils.SecurityUtils;
import com.evo.common.utils.StringUtils;
import com.evo.common.utils.*;
import com.evo.common.utils.Collections;
import com.evo.finance.domain.RzSalaryDetail;
import com.evo.finance.domain.RzSalaryStatistics;
import com.evo.finance.domain.vo.SalaryVo;
import com.evo.finance.mapper.RzSalaryDetailMapper;
import com.evo.finance.mapper.RzSalaryStatisticsMapper;
import com.evo.finance.processor.SalaryCalculationStrategyExchangeProcessor;
@ -26,7 +25,9 @@ import com.evo.finance.service.IRzSalaryDetailService;
import com.evo.personnelMatters.domain.RzHoliday;
import com.evo.personnelMatters.mapper.RzHolidayMapper;
import com.evo.restaurant.domain.RzRestaurantStatistics;
import com.evo.restaurant.domain.vo.RzRestaurantStatisticsExportVo;
import com.evo.restaurant.mapper.RzRestaurantStatisticsMapper;
import com.evo.restaurant.utils.ExcelUtilCy;
import com.evo.system.domain.SysStaff;
import com.evo.system.domain.SysStaffDetail;
import com.evo.system.mapper.SysDeptMapper;
@ -44,10 +45,7 @@ import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -659,4 +657,61 @@ public class RzSalaryDetailServiceImpl extends ServiceImpl<RzSalaryDetailMapper,
}
return AjaxResult.success();
}
@Override
public AjaxResult export(RzSalaryDetail rzSalaryDetail) {
ExcelUtilCy<SalaryVo> util = new ExcelUtilCy<SalaryVo>(SalaryVo.class);
Map<String,List<SalaryVo>> dataList = buildExportData(rzSalaryDetail).stream().collect(Collectors.groupingBy(SalaryVo::getDeptName));
List<SalaryVo> allList = new ArrayList<>();
//创建各个部门工资数据集合的集合
List<List<SalaryVo>> lists = new ArrayList<>();
for (String key : dataList.keySet()){
allList.addAll(dataList.get(key));
lists.add(dataList.get(key));
}
return util.exportExcel(allList,lists,"总表", new ArrayList<>(dataList.keySet()));
}
private List<SalaryVo> buildExportData(RzSalaryDetail rzSalaryDetail) {
// 获取所有部门列表
List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>());
Map<Long, String> deptNameMap = deptList.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName));
Map<String, String> nameAndDeptIdMap = deptList.stream().filter(d -> d.getParentId().equals(0l)).collect(Collectors.toMap(d->String.valueOf(d.getDeptId()), SysDept::getDeptName));
Map<Long, String> companyNameMap = Collections.emptyMap();
deptList.stream().filter(d -> !d.getParentId().equals(0l)).forEach(d ->{
List<String> parentIdList = Collections.asList(d.getAncestors().split(","));
Iterator<String> it = nameAndDeptIdMap.keySet().iterator();
while (it.hasNext()){
String pid = it.next();
if(parentIdList.contains(pid)){
companyNameMap.put(d.getDeptId(), nameAndDeptIdMap.get(pid));
}
}
});
nameAndDeptIdMap.entrySet().stream().forEach(d->{
companyNameMap.put(Long.valueOf(d.getKey()), d.getValue());
});
List<SalaryVo> voResult = Collections.emptyList();
String month = new SimpleDateFormat("yyyy-MM").format(rzSalaryDetail.getMonth());
List<RzSalaryDetail> res_list = selectRzSalaryDetaiList(rzSalaryDetail);
for (RzSalaryDetail salaryDetail : res_list) {
SalaryVo vo = new SalaryVo();
com.evo.common.utils.bean.BeanUtils.copyProperties(salaryDetail, vo);
vo.setDeptName(DataUtils.findDefaultValue(companyNameMap.get(salaryDetail.getDeptId()), "实习生"));
vo.setDeptName(DataUtils.findDefaultValue(deptNameMap.get(salaryDetail.getDeptId()), "实习生"));
vo.setMonth(month);
voResult.add(vo);
}
return voResult;
}
private List<RzSalaryDetail> selectRzSalaryDetaiList(RzSalaryDetail rzSalaryDetail) {
return getBaseMapper().selectRzSalaryDetailList(rzSalaryDetail);
}
}