82 lines
3.4 KiB
Java
82 lines
3.4 KiB
Java
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<RzSubsidyInfo> subsidyInfoList){
|
|
//正式员工并且有补助信息
|
|
if(Constants.JOB_STATIS_1.equals(staff.getStatus())){
|
|
if(StringUtils.isNotEmpty(staff.getSubsidys())){
|
|
Map<Long, RzSubsidyInfo> 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;
|
|
}
|
|
|
|
}
|