调整薪资计算规则
This commit is contained in:
parent
5f6e1302f4
commit
82107fa223
@ -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)))));
|
||||
|
||||
@ -38,56 +38,61 @@ public class SubsidyCalculationUtils {
|
||||
public static final String yc = "11";
|
||||
|
||||
public static final List<String> tsbz = Collections.asList(ht,gl,xnh,yc);
|
||||
|
||||
public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List<RzSubsidyInfo> subsidyInfoList){
|
||||
public static SysStaffDetail subsidyCalculation(SysStaff staff, SysStaffDetail staffDetail, List<RzSubsidyInfo> 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<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 = 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<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 = 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<RzSubsidyInfo> subsidyInfoList){
|
||||
return subsidyCalculation(staff, staffDetail, subsidyInfoList, false);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user