From 82107fa22390e120078e198d684f86bcfdb0808e Mon Sep 17 00:00:00 2001 From: andy <1042025947@qq.com> Date: Wed, 15 Oct 2025 16:58:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=96=AA=E8=B5=84=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...yCalculationStrategyExchangeProcessor.java | 3 +- .../system/utils/SubsidyCalculationUtils.java | 85 ++++++++++--------- 2 files changed, 47 insertions(+), 41 deletions(-) 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 b184d08..2c6862b 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 @@ -132,7 +132,8 @@ public interface SalaryCalculationStrategyExchangeProcessor { //计算实际出勤占比, 如果实际出勤小于应出勤的半数, 则社保有员工承担 //转正才享有 // if(Constants.JOB_STATIS_1.equals(sysStaff.getStatus())){ - detail = SubsidyCalculationUtils.subsidyCalculation(sysStaff, detail, null); + detail = SubsidyCalculationUtils.subsidyCalculation(sysStaff, detail, null, true); + rzSalaryDetail.setMiddleSubsidies(new BigDecimal(attendanceStatistical.getMiddleShiftNumber()).multiply(new BigDecimal(String.valueOf(DataUtils.findDefaultValue(detail.getExtendeds().get(zbName), 0))))); rzSalaryDetail.setNightSubsidies(new BigDecimal(attendanceStatistical.getNightNumber()).multiply(new BigDecimal(String.valueOf(DataUtils.findDefaultValue(detail.getExtendeds().get(ybName), 0))))); rzSalaryDetail.setDinnerSubsidies(new BigDecimal(attendanceStatistical.getNightNumber()).multiply(new BigDecimal(String.valueOf(DataUtils.findDefaultValue(detail.getExtendeds().get(ycName), 0))))); diff --git a/evo-admin/src/main/java/com/evo/system/utils/SubsidyCalculationUtils.java b/evo-admin/src/main/java/com/evo/system/utils/SubsidyCalculationUtils.java index eaa9af6..35a160d 100644 --- a/evo-admin/src/main/java/com/evo/system/utils/SubsidyCalculationUtils.java +++ b/evo-admin/src/main/java/com/evo/system/utils/SubsidyCalculationUtils.java @@ -38,56 +38,61 @@ public class SubsidyCalculationUtils { public static final String yc = "11"; public static final List tsbz = Collections.asList(ht,gl,xnh,yc); - - public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List subsidyInfoList){ + public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List subsidyInfoList, Boolean isCalculationSalary){ //正式员工并且有补助信息 Boolean isOfficial = Constants.JOB_STATIS_1.equals(staff.getStatus()); /*** * 2025-7-15 跟人力在工位面谈, 其中, 夜餐, 夜班, 中班, 入职享有, 不在是转正后享有, 所以调整代码 */ // if(Constants.JOB_STATIS_1.equals(staff.getStatus())){ - if(Collections.isEmpty(subsidyInfoList)){ - subsidyInfoList = SpringUtils.getBean(IRzSubsidyInfoService.class).list(); + if(Collections.isEmpty(subsidyInfoList)){ + subsidyInfoList = SpringUtils.getBean(IRzSubsidyInfoService.class).list(); + } + if(StringUtils.isNotEmpty(staff.getSubsidys())){ + Map map = subsidyInfoList.stream().collect(Collectors.toMap(RzSubsidyInfo::getId, d->d, (k1, K2)->k1)); + Boolean isAdd = true; + for(String subsidyId : staff.getSubsidys().split(",")){ + isAdd = false; + RzSubsidyInfo rzSubsidyInfo = map.get(Long.valueOf(subsidyId)); + String key = rzSubsidyInfo.getName(); + BigDecimal value = rzSubsidyInfo.getValue(); + if(ht.equals(subsidyId) && isOfficial && staff.getContractStart() != null && staff.getContractEnd() != null){ + Integer year= DateUtils.getBetweenYear(staff.getContractStart(), staff.getContractEnd(), 1); + value = value.multiply(new BigDecimal(year)); + isAdd = true; + }else if(gl.equals(subsidyId) && isOfficial ){ + //如果是计算工资的话, 需要当前时间减去一个月, 因为是第二个月计算 上月工资 + Integer year= DateUtils.getBetweenYearByDays(staff.getEmploymentDate(), (isCalculationSalary ? DateUtils.addMonths(new Date(), -1) : new Date())); + //最多只允许10年的工龄补贴 + if(year > 10) year=10; + value = value.multiply(new BigDecimal(year)); + isAdd = true; + }else if(xnh.equals(subsidyId) && isOfficial){ + isAdd = "新农合".equals(staff.getSocialType()) && ("是".equals(staff.getSocialSubsidy()) || "享有".equals(staff.getSocialSubsidy())); + }else if(yc.equals(subsidyId)){ + isAdd = "否".equals(staff.getZsFlag()); + } + //当前补助不是特殊补助, 或者 特殊补助允许添加 + if(!tsbz.contains(subsidyId) || isAdd) staffDetail.getExtendeds().put(key, value); } - if(StringUtils.isNotEmpty(staff.getSubsidys())){ - Map map = subsidyInfoList.stream().collect(Collectors.toMap(RzSubsidyInfo::getId, d->d, (k1, K2)->k1)); - Boolean isAdd = true; - for(String subsidyId : staff.getSubsidys().split(",")){ - isAdd = false; - RzSubsidyInfo rzSubsidyInfo = map.get(Long.valueOf(subsidyId)); - String key = rzSubsidyInfo.getName(); - BigDecimal value = rzSubsidyInfo.getValue(); - if(ht.equals(subsidyId) && isOfficial && staff.getContractStart() != null && staff.getContractEnd() != null){ - Integer year= DateUtils.getBetweenYear(staff.getContractStart(), staff.getContractEnd(), 1); - value = value.multiply(new BigDecimal(year)); - isAdd = true; - }else if(gl.equals(subsidyId) && isOfficial ){ - Integer year= DateUtils.getBetweenYearByDays(staff.getEmploymentDate(), new Date()); - //最多只允许10年的工龄补贴 - if(year > 10) year=10; - value = value.multiply(new BigDecimal(year)); - isAdd = true; - }else if(xnh.equals(subsidyId) && isOfficial){ - isAdd = "新农合".equals(staff.getSocialType()) && ("是".equals(staff.getSocialSubsidy()) || "享有".equals(staff.getSocialSubsidy())); - }else if(yc.equals(subsidyId)){ - isAdd = "否".equals(staff.getZsFlag()); - } - //当前补助不是特殊补助, 或者 特殊补助允许添加 - if(!tsbz.contains(subsidyId) || isAdd) staffDetail.getExtendeds().put(key, value); - } - } - //计算学历补助 - if(StringUtils.isNotEmpty(staff.getLevel()) && isOfficial){ - //查询学历 - String label = SpringUtils.getBean(SysDictDataMapper.class).selectDictLabel(Constants.SYS_LEVEL, staff.getLevel()); - if(StringUtils.isNotEmpty(label)){ - RzSubsidy rzSubsidy = SpringUtils.getBean(RzSubsidyMapper.class).selectRzSubsidyByName(label); - if(ObjectUtils.isNotEmpty(rzSubsidy)){ - staffDetail.getExtendeds().put("学历补助", rzSubsidy.getValue()); - } + } + //计算学历补助 + if(StringUtils.isNotEmpty(staff.getLevel()) && isOfficial){ + //查询学历 + String label = SpringUtils.getBean(SysDictDataMapper.class).selectDictLabel(Constants.SYS_LEVEL, staff.getLevel()); + if(StringUtils.isNotEmpty(label)){ + RzSubsidy rzSubsidy = SpringUtils.getBean(RzSubsidyMapper.class).selectRzSubsidyByName(label); + if(ObjectUtils.isNotEmpty(rzSubsidy)){ + staffDetail.getExtendeds().put("学历补助", rzSubsidy.getValue()); } } + } // } return staffDetail; } + + + public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List subsidyInfoList){ + return subsidyCalculation(staff, staffDetail, subsidyInfoList, false); + } }