Commit d3f9031f2b72395a5587564d1083400fabd3d78e

Authored by 姜超
2 parents 5dd2ea7d fa4c4f4f

Merge branch 'bug-fix' into 'main'

feature(*): 考评得分率计算修改,统一算法

考评得分率计算修改,统一算法

See merge request !615
fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardBaseCalculator.java
... ... @@ -149,15 +149,28 @@ public abstract class EvalRewardBaseCalculator implements Calculator<EvalGroupUs
149 149 RoundingMode roundingMode = (laddersBO.getMoney().compareTo(BigDecimal.ZERO) > 0) ? RoundingMode.CEILING : RoundingMode.FLOOR;
150 150 Integer ladderStaffNum = realUpper.subtract(realLower)
151 151 .multiply(personCount).divide(BigDecimal.ONE, 0, roundingMode).intValue();
152   - Integer startIndex;
153   - Integer endIndex;
  152 + Integer startIndex = null;
  153 + Integer endIndex = null;
154 154 //百分比是连续的,使用上一段结束排名(上一次阶梯的 上限等于这次阶梯的下限)
155 155 if (PublicUtil.isNotEmpty(lastLadderUpper) && lastLadderUpper.compareTo(realLower) == 0) {
156 156 startIndex = lastLadderEndIndex;
  157 + //连续阶梯,最后一个阶梯要进行兜底。
  158 + if (BigDecimal.ONE.compareTo(realUpper) == 0) {
  159 + endIndex = personCount.intValue();
  160 + }
157 161 } else {
158   - startIndex = realLower.multiply(personCount).divide(BigDecimal.ONE, 0, roundingMode).intValue();
  162 + //不是连续阶梯,最后一个阶梯
  163 + if (BigDecimal.ONE.compareTo(realUpper) == 0) {
  164 + endIndex = personCount.intValue();
  165 + startIndex = endIndex - ladderStaffNum;
  166 + } else {
  167 + startIndex = realLower.multiply(personCount).divide(BigDecimal.ONE, 0, roundingMode).intValue();
  168 + }
  169 + }
  170 + //兜底
  171 + if (PublicUtil.isEmpty(endIndex)) {
  172 + endIndex = startIndex + ladderStaffNum;
159 173 }
160   - endIndex = startIndex + ladderStaffNum;
161 174  
162 175 //设置排名名次
163 176 laddersBO.setPercentStartIndex(startIndex);
... ...