Commit f72163d1df1d3df05587bda6c19a95678897d1b1

Authored by 张志伟
2 parents 529e593a 7a2c020a

Merge branch 'main-bug' into 'main'

feature(bug):  计算试用期工资bug

计算试用期工资bug

See merge request !69
fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryCalcService.java
... ... @@ -29,6 +29,8 @@ import java.math.BigDecimal;
29 29 import java.math.RoundingMode;
30 30 import java.time.LocalDate;
31 31 import java.time.YearMonth;
  32 +import java.time.temporal.TemporalAdjuster;
  33 +import java.time.temporal.TemporalAdjusters;
32 34 import java.util.*;
33 35 import java.util.concurrent.RejectedExecutionException;
34 36 import java.util.concurrent.ThreadPoolExecutor;
... ... @@ -408,16 +410,17 @@ public class SalaryCalcService {
408 410 .eq(SalaryGroupUser::getProbationer, Boolean.TRUE)
409 411 .eq(SalaryGroupUser::getFrozen, Boolean.FALSE)
410 412 .eq(SalaryGroupUser::getYn, Boolean.TRUE)
  413 + .ge(SalaryGroupUser::getDataDate, user.getDataDate().with(TemporalAdjusters.firstDayOfMonth()))
411 414 .le(SalaryGroupUser::getDataDate, user.getDataDate())
412 415 );
413 416 if (count <= 0) {
414 417 return;
415 418 }
416 419 int lengthOfMonth = YearMonth.from(user.getDataDate()).lengthOfMonth();
417   - BigDecimal dayP = new BigDecimal(count).divide(new BigDecimal(lengthOfMonth), 2, RoundingMode.HALF_UP);
  420 + BigDecimal dayP = new BigDecimal(count).divide(new BigDecimal(lengthOfMonth), 2, RoundingMode.DOWN);
418 421 BigDecimal baseValue = ehrRpcService.queryProbationerSalary(user.getUserId(), user.getDataDate());
419 422 BV.notNull(baseValue, () -> "试用期工资查询失败");
420   - BigDecimal probationSalary = baseValue.multiply(dayP).divide(BigDecimal.ONE, 2, RoundingMode.HALF_UP);
  423 + BigDecimal probationSalary = baseValue.multiply(dayP).divide(BigDecimal.ONE, 2, RoundingMode.DOWN);
421 424 SalaryPoolDetail detail = createDetail(pool, user.getDataDate());
422 425 detail.setType(SalaryTypeEnum.PROBATION);
423 426 detail.setSalaryAmount(probationSalary);
... ...