diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryCalcService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryCalcService.java index 0b1c993..08257b0 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryCalcService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryCalcService.java @@ -29,6 +29,8 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.time.YearMonth; +import java.time.temporal.TemporalAdjuster; +import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ThreadPoolExecutor; @@ -408,16 +410,17 @@ public class SalaryCalcService { .eq(SalaryGroupUser::getProbationer, Boolean.TRUE) .eq(SalaryGroupUser::getFrozen, Boolean.FALSE) .eq(SalaryGroupUser::getYn, Boolean.TRUE) + .ge(SalaryGroupUser::getDataDate, user.getDataDate().with(TemporalAdjusters.firstDayOfMonth())) .le(SalaryGroupUser::getDataDate, user.getDataDate()) ); if (count <= 0) { return; } int lengthOfMonth = YearMonth.from(user.getDataDate()).lengthOfMonth(); - BigDecimal dayP = new BigDecimal(count).divide(new BigDecimal(lengthOfMonth), 2, RoundingMode.HALF_UP); + BigDecimal dayP = new BigDecimal(count).divide(new BigDecimal(lengthOfMonth), 2, RoundingMode.DOWN); BigDecimal baseValue = ehrRpcService.queryProbationerSalary(user.getUserId(), user.getDataDate()); BV.notNull(baseValue, () -> "试用期工资查询失败"); - BigDecimal probationSalary = baseValue.multiply(dayP).divide(BigDecimal.ONE, 2, RoundingMode.HALF_UP); + BigDecimal probationSalary = baseValue.multiply(dayP).divide(BigDecimal.ONE, 2, RoundingMode.DOWN); SalaryPoolDetail detail = createDetail(pool, user.getDataDate()); detail.setType(SalaryTypeEnum.PROBATION); detail.setSalaryAmount(probationSalary);