From d61d08fcbc669e3fc46c8e74f2a4ad659ab4a4d5 Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Thu, 10 Jul 2025 13:34:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/evo/common/utils/ParamUtils.java | 38 +++++++++++++++++++ ...yCalculationStrategyExchangeProcessor.java | 11 ++++-- ...onthlySalaryStrategyExchangeProcessor.java | 9 +---- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/evo-admin/src/main/java/com/evo/common/utils/ParamUtils.java b/evo-admin/src/main/java/com/evo/common/utils/ParamUtils.java index 6785121..b14e87a 100644 --- a/evo-admin/src/main/java/com/evo/common/utils/ParamUtils.java +++ b/evo-admin/src/main/java/com/evo/common/utils/ParamUtils.java @@ -1,5 +1,6 @@ package com.evo.common.utils; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.evo.attendance.domain.RzSysParam; import com.evo.attendance.service.IRzSysParamService; @@ -11,6 +12,7 @@ import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @@ -277,4 +279,40 @@ public class ParamUtils { return holidaysMaps.entrySet().stream().filter(m -> holidayType.equals(m.getValue())).map(m-> m.getKey()).collect(Collectors.toList()); } + /*** + * 获取全薪假期 + * @return + */ + public static List getFullPaidLeave(){ + RzSysParam param= paramService.getRzSysParam("全薪发放的假期", "full_paid_leave","54,56,58,59,60","全薪发放的假期; 54-年休假,56-婚假,58-陪产假,59-丧假,60-工伤假"); + return Collections.asList(param.getParamValue().split(",")).stream().filter(StringUtils::isNotEmpty).map(Long::valueOf).collect(Collectors.toList()); + } + + /*** + * 获取80%假期 + * @return + */ + public static List getEightyPercentVacation(){ + RzSysParam param= paramService.getRzSysParam("80%的假期类型", "eighty_percent_vacation","52","80%的假期类型; 52-病假"); + return Collections.asList(param.getParamValue().split(",")).stream().filter(StringUtils::isNotEmpty).map(Long::valueOf).collect(Collectors.toList()); + } + + /*** + * 获取80%假期 + * @param nameAndIdCard 姓名-身份证 + * @return + */ + public static BigDecimal getSpecialExemptionAmount(String nameAndIdCard){ + RzSysParam param= paramService.getRzSysParam("特殊年度免征额计算", "special_exemption_amount",JSON.toJSONString(Collections.asMap("60000","李欣-130132199103134105;陈阳-130823200405243013;檀亚茹-130124199008242423;师敏玲-130132198610153189;马君君-130133199005203011;赵芬静-130132200109252589;李亚茹-130132199105122861;侯阔-130124198805202411;贺光建-130528198608083019;宋娇娇-130132198811222865;张子豪-130132200505170016;位晓峰-130132199211012877;周红娟-13013219820321284X;周庆迪-342221199208256085;赵硕岐-130132199210280052;李宏叶-130132198902060021;吴海静-130132198701021966;何亚平-130132198407011943;谷丽博-130132198612102887;楚世光-130105196807301212;杜晓华-130132198402093804;姚少鹏-130132199412151937;常志涛-130726200203256135;何旭然-130132198812093268;曹盼-130185199207201360;王硕-130132198701102934;何春玲-431124198612294526;王旭-130132199007270035;郑杰-130426199310292324;崔炫宇-130429200008068019;王晓田-130132199010252903;刘建斌-130105196908150919;崔佳佩-130132198602261323")),"特殊年度免征额计算, 上年各月均有申报且全年收入不超过6万元 所以今年免征额直接60000了"); + Map vm = JSON.parseObject(param.getParamValue(), Map.class); + + for(Map.Entry entry : vm.entrySet()){ + if(Collections.asList(entry.getValue().split(";")).contains(nameAndIdCard)){ + return new BigDecimal(entry.getKey()); + } + } + return null; + } + + } diff --git a/evo-admin/src/main/java/com/evo/finance/processor/SalaryCalculationStrategyExchangeProcessor.java b/evo-admin/src/main/java/com/evo/finance/processor/SalaryCalculationStrategyExchangeProcessor.java index b819d70..fa0fcbd 100644 --- a/evo-admin/src/main/java/com/evo/finance/processor/SalaryCalculationStrategyExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/finance/processor/SalaryCalculationStrategyExchangeProcessor.java @@ -230,18 +230,23 @@ public interface SalaryCalculationStrategyExchangeProcessor { int curr_month = rzSalaryDetail.getMonth().getMonth(); //获取工资统计月份,查询上个月的纳税公司 得到年度免征额 RzSalaryDetail old_rzSalary = rzSalaryDetailMapper.selectRzSalaryDetailByStaffId(rzSalaryDetail.getStaffId()); + BigDecimal annualExemptionAmount = new BigDecimal("5000.00"); + if(curr_month == 12){ - rzSalaryDetail.setAnnualExemptionAmount(new BigDecimal("5000.00")); + annualExemptionAmount = new BigDecimal("5000.00"); }else{ //判断员工为 新入职,公司纳税主题改变,同一主题超一年的,同一主题不超一年但跨年的 if(StringUtils.isNull(old_rzSalary) || !old_rzSalary.getWbFlag().equals(sysStaff.getCompanyName()) || (rzSalaryDetail.getMonth().getTime() - old_rzSalary.getMonth().getTime())/1000/60/60/24 > 365 || (old_rzSalary.getMonth().getMonth() < 12 && old_rzSalary.getMonth().getMonth() > rzSalaryDetail.getMonth().getMonth())){ - rzSalaryDetail.setAnnualExemptionAmount(new BigDecimal("5000.00")); + annualExemptionAmount = new BigDecimal("5000.00"); }else{ - rzSalaryDetail.setAnnualExemptionAmount(new BigDecimal("5000.00").add(old_rzSalary.getAnnualExemptionAmount())); + annualExemptionAmount = new BigDecimal("5000.00").add(old_rzSalary.getAnnualExemptionAmount()); } } + rzSalaryDetail.setAnnualExemptionAmount(DataUtils.findDefaultValue(ParamUtils.getSpecialExemptionAmount(sysStaff.getName()+"-"+sysStaff.getIdCard()), annualExemptionAmount)); + + // 本年累计已发工资(本年累计已发工资+本月税前工资) rzSalaryDetail.setTotalWages(detail.getTotalWages().add(rzSalaryDetail.getSalaryBeforeTax())); // 专项附加扣除(六项附加扣除额相加) diff --git a/evo-admin/src/main/java/com/evo/finance/processor/impl/MonthlySalaryStrategyExchangeProcessor.java b/evo-admin/src/main/java/com/evo/finance/processor/impl/MonthlySalaryStrategyExchangeProcessor.java index 303f9a4..f345888 100644 --- a/evo-admin/src/main/java/com/evo/finance/processor/impl/MonthlySalaryStrategyExchangeProcessor.java +++ b/evo-admin/src/main/java/com/evo/finance/processor/impl/MonthlySalaryStrategyExchangeProcessor.java @@ -1,12 +1,9 @@ package com.evo.finance.processor.impl; -import com.alibaba.fastjson2.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.evo.attendance.domain.RzAttendance; import com.evo.attendance.domain.RzAttendanceStatistical; import com.evo.attendance.mapper.RzAttendanceMapper; import com.evo.common.constant.Constants; -import com.evo.common.utils.Collections; import com.evo.common.utils.DataUtils; import com.evo.common.utils.DateUtils; import com.evo.common.utils.ParamUtils; @@ -39,8 +36,6 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation private RzAttendanceMapper rzAttendanceMapper; @Resource private RzLeaveDetailMapper rzLeaveDetailMapper; - private List qx = Collections.asList(56l,58l,59l,83l,60l); - private List qx8 = Collections.asList(52l); @Override @@ -109,7 +104,7 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation * 工伤假 不包含补贴 */ Long total8Hour = 0l; - for (Long type: qx8) { + for (Long type: ParamUtils.getEightyPercentVacation()) { Long hour = rzLeaveDetailMapper.selectLeaveHourByUserIdAndDateAndType(sysStaff.getUserId(), rzSalaryDetail.getMonth(), type); if(hour.compareTo(0l)> 0){ total8Hour = total8Hour+ hour; @@ -121,7 +116,7 @@ public class MonthlySalaryStrategyExchangeProcessor implements SalaryCalculation rzSalaryDetail.setMonthSalary(rzSalaryDetail.getMonthSalary().add(gs)); } Long totalAllHour = 0l; - for (Long type: qx) { + for (Long type: ParamUtils.getFullPaidLeave()) { Long hour = rzLeaveDetailMapper.selectLeaveHourByUserIdAndDateAndType(sysStaff.getUserId(), rzSalaryDetail.getMonth(), type); if(hour.compareTo(0l)> 0){ totalAllHour = totalAllHour+hour;