Commit d3f9031f2b72395a5587564d1083400fabd3d78e
Merge branch 'bug-fix' into 'main'
feature(*): 考评得分率计算修改,统一算法 考评得分率计算修改,统一算法 See merge request !615
Showing
1 changed file
with
17 additions
and
4 deletions
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); | ... | ... |