package com.evo.system.utils; import com.alibaba.fastjson2.util.BeanUtils; import com.evo.common.constant.Constants; import com.evo.common.core.domain.entity.SysDictData; import com.evo.common.utils.DateUtils; import com.evo.common.utils.spring.SpringUtils; import com.evo.personnelMatters.domain.RzSubsidy; import com.evo.personnelMatters.domain.RzSubsidyInfo; import com.evo.personnelMatters.mapper.RzSubsidyMapper; import com.evo.system.domain.SysStaff; import com.evo.system.domain.SysStaffDetail; import com.evo.system.mapper.SysDictDataMapper; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 类 * * @ClassName:SubsidyCalculationUtils * @date: 2025年05月22日 11:26 * @author: andy.shi * @contact: 17330188597 * @remark: 开发人员联系方式 1042025947@qq.com/微信同步 */ public class SubsidyCalculationUtils { public static final String ht = "12"; public static final String gl = "14"; public static final String xnh = "13"; public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List subsidyInfoList){ //正式员工并且有补助信息 if(Constants.JOB_STATIS_1.equals(staff.getStatus())){ 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 = true; RzSubsidyInfo rzSubsidyInfo = map.get(Long.valueOf(subsidyId)); String key = rzSubsidyInfo.getName(); BigDecimal value = rzSubsidyInfo.getValue(); if(ht.equals(subsidyId)){ Integer year= DateUtils.getBetweenYear(staff.getContractStart(), staff.getContractEnd()); value = value.multiply(new BigDecimal(year)); }else if(gl.equals(subsidyId)){ Integer year= DateUtils.getBetweenYear(staff.getEmploymentDate(), new Date()); //最多只允许10年的工龄补贴 if(year > 10) year=10; value = value.multiply(new BigDecimal(year)); }else if(xnh.equals(subsidyId)){ isAdd = "新农合".equals(staff.getSocialType()) && ("是".equals(staff.getSocialSubsidy()) || "享有".equals(staff.getSocialSubsidy())); } if(isAdd) staffDetail.getExtendeds().put(key, value); } } //计算学历补助 if(StringUtils.isNotEmpty(staff.getLevel())){ //查询学历 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; } }