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.Collections; 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.personnelMatters.service.IRzSubsidyInfoService; 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.text.ParseException; import java.text.SimpleDateFormat; 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 final String yc = "11"; public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List subsidyInfoList){ //正式员工并且有补助信息 if(Constants.JOB_STATIS_1.equals(staff.getStatus())){ 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 = true; RzSubsidyInfo rzSubsidyInfo = map.get(Long.valueOf(subsidyId)); String key = rzSubsidyInfo.getName(); BigDecimal value = rzSubsidyInfo.getValue(); if(ht.equals(subsidyId) && staff.getContractStart() != null && staff.getContractEnd() != null){ Integer year= DateUtils.getBetweenYear(staff.getContractStart(), staff.getContractEnd(), 1); value = value.multiply(new BigDecimal(year)); }else if(gl.equals(subsidyId)){ Integer year= DateUtils.getBetweenYearByDays(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())); }else if(yc.equals(subsidyId)){ isAdd = "否".equals(staff.getZsFlag()); } 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; } }