diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardBaseCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardBaseCalculator.java index 9f4fc6b..cfe7d03 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardBaseCalculator.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardBaseCalculator.java @@ -125,7 +125,8 @@ public abstract class EvalRewardBaseCalculator implements Calculator queryRewardLadders(final Long evalGroupRewardId) { List ladders = evalGroupRewardLaddersService.list(Wrappers.lambdaQuery() .eq(EvalGroupRewardLadders::getEvalGroupRewardId, evalGroupRewardId) - .eq(EvalGroupRewardLadders::getYn, Boolean.TRUE)); + .eq(EvalGroupRewardLadders::getYn, Boolean.TRUE) + ); if (CollectionUtils.isEmpty(ladders)) { return Collections.emptyList(); } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java index 05b7181..5760ceb 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java @@ -100,6 +100,7 @@ public class EvalGroupBizService { checkReward(evalGroupDTO); checkEvalIndicatorLadders(evalGroupDTO.getIndicators()); checkEvalRewardLadders(evalGroupDTO.getRewards()); + sortRewardRankLadders(evalGroupDTO.getRewards()); setTargetVos(evalGroupDTO); } SettingDraft settingDraft = getSettingDraft(dto, isSubmit); @@ -424,6 +425,39 @@ public class EvalGroupBizService { } /** + * 检查阶梯分值 + * @param rewards + */ + private void sortRewardRankLadders(List rewards) { + for (EvalGroupRewardDTO reward : rewards) { + if (! EvalRewardCalMethodEnum.RANK.equals(reward.getCalMethod())) { + continue; + } + + List ladders = reward.getLadders(); + Collections.sort(ladders, new Comparator() { + @Override + public int compare(EvalGroupRewardLaddersDTO o1, EvalGroupRewardLaddersDTO o2) { + if (PublicUtil.isEmpty(o1.getRankOrderType())) { + return -1; + } + if (PublicUtil.isEmpty(o2.getRankOrderType())) { + return 1; + } + //正数在前 负数在后 + Integer order = o1.getRankOrderType().compareTo(o2.getRankOrderType()); + if (order == 0) { + //大的在后 + return o1.getLower().subtract(o2.getLower()).intValue(); + } + return order; + } + }); + + } + } + + /** * 检查考评组指标 * * @param evalGroupDTO @@ -619,10 +653,10 @@ public class EvalGroupBizService { reward.setLadderParams(paramTypeMap.getOrDefault(ParamTypeEnum.LADDER, new ArrayList<>())); reward.setConds(rewardCondMap.getOrDefault(rewardId, new ArrayList<>())); - List rewardLadders = evalGroupRewardLaddersService.list(Wrappers.lambdaQuery() .eq(EvalGroupRewardLadders::getEvalGroupRewardId, rewardId) .eq(EvalGroupRewardLadders::getYn, Boolean.TRUE) + .last("order by rank_order_type ASC, lower ASC") ); List rewardLaddersVOS = new ArrayList<>(); for (EvalGroupRewardLadders rewardLadder : rewardLadders) { diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java index 84b0e7a..eddad31 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java @@ -653,6 +653,7 @@ public class EvalGroupPoolService { List rewardLadders = evalGroupRewardLaddersService.list(Wrappers.lambdaQuery() .eq(EvalGroupRewardLadders::getEvalGroupRewardId, reward.getEvalGroupRewardId()) .eq(EvalGroupRewardLadders::getYn, Boolean.TRUE) + .last("order by rank_order_type ASC, lower ASC") ); List rewardLaddersVOS = new ArrayList<>(); for (EvalGroupRewardLadders rewardLadder : rewardLadders) {