From e3cf13dffb917917413f4a3a55498ac17e4cd0dc Mon Sep 17 00:00:00 2001 From: tzy Date: Thu, 5 Jun 2025 16:28:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B7=A5=E8=B5=84=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RzSalaryDetailController.java | 14 +- .../com/evo/finance/domain/vo/SalaryVo.java | 211 +----------------- .../service/IRzSalaryDetailService.java | 2 + .../impl/RzSalaryDetailServiceImpl.java | 71 +++++- 4 files changed, 81 insertions(+), 217 deletions(-) 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 4bef93e..cc481c3 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 @@ -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 util = new ExcelUtilSs(SalaryVo.class); //创建总表 @@ -508,5 +508,15 @@ public class RzSalaryDetailController extends BaseController List 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); + } } diff --git a/evo-admin/src/main/java/com/evo/finance/domain/vo/SalaryVo.java b/evo-admin/src/main/java/com/evo/finance/domain/vo/SalaryVo.java index fed6e1a..f384e95 100644 --- a/evo-admin/src/main/java/com/evo/finance/domain/vo/SalaryVo.java +++ b/evo-admin/src/main/java/com/evo/finance/domain/vo/SalaryVo.java @@ -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; - } } diff --git a/evo-admin/src/main/java/com/evo/finance/service/IRzSalaryDetailService.java b/evo-admin/src/main/java/com/evo/finance/service/IRzSalaryDetailService.java index 97ac51b..40b1209 100644 --- a/evo-admin/src/main/java/com/evo/finance/service/IRzSalaryDetailService.java +++ b/evo-admin/src/main/java/com/evo/finance/service/IRzSalaryDetailService.java @@ -69,4 +69,6 @@ public interface IRzSalaryDetailService public List selectSalaryDetailByWbFlag(String wbFlag,Date date); AjaxResult importSalesCommissions(List attendanceList); + + AjaxResult export(RzSalaryDetail rzSalaryDetail); } 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 c3a7532..501c657 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 @@ -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 util = new ExcelUtilCy(SalaryVo.class); + Map> dataList = buildExportData(rzSalaryDetail).stream().collect(Collectors.groupingBy(SalaryVo::getDeptName)); + List allList = new ArrayList<>(); + //创建各个部门工资数据集合的集合 + List> 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 buildExportData(RzSalaryDetail rzSalaryDetail) { + // 获取所有部门列表 + List deptList = deptMapper.selectList(new LambdaQueryWrapper()); + + Map deptNameMap = deptList.stream().collect(Collectors.toMap(SysDept::getDeptId, SysDept::getDeptName)); + Map nameAndDeptIdMap = deptList.stream().filter(d -> d.getParentId().equals(0l)).collect(Collectors.toMap(d->String.valueOf(d.getDeptId()), SysDept::getDeptName)); + Map companyNameMap = Collections.emptyMap(); + deptList.stream().filter(d -> !d.getParentId().equals(0l)).forEach(d ->{ + List parentIdList = Collections.asList(d.getAncestors().split(",")); + Iterator 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 voResult = Collections.emptyList(); + String month = new SimpleDateFormat("yyyy-MM").format(rzSalaryDetail.getMonth()); + List 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 selectRzSalaryDetaiList(RzSalaryDetail rzSalaryDetail) { + return getBaseMapper().selectRzSalaryDetailList(rzSalaryDetail); + } }