diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardRankLog.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardRankLog.java index abd565a..b6a134d 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardRankLog.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardRankLog.java @@ -60,6 +60,10 @@ public class EvalGroupRewardRankLog extends BaseAuditableTimeEntity> queryRewardProportion(Long evalGroupRewardId, + @NotNull(message = "日期不能为空") @RequestParam("dataDate") LocalDate dataDate) { + return success(evalGroupPoolService.queryRewardProportion(evalGroupRewardId, dataDate)); + } /** 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 54235ba..bc2a2c0 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 @@ -174,6 +174,7 @@ public abstract class EvalRewardBaseCalculator implements Calculator userShops, List preconditions) { if (CollectionUtils.isEmpty(preconditions)) { return; @@ -201,6 +202,7 @@ public abstract class EvalRewardBaseCalculator implements Calculator matchRankLogs = rankLogs.stream().filter(rankLog -> { return rankLog.getRank() > _startIndex && rankLog.getRank() <= _endIndex; }).collect(Collectors.toList()); + updateHitRankLog(matchRankLogs); AtomicInteger rank = new AtomicInteger(0); for (EvalGroupRewardRankLog rankLog : matchRankLogs) { @@ -238,6 +240,7 @@ public abstract class EvalRewardBaseCalculator implements CalculatorlambdaQuery() .eq(EvalGroupRewardTargetHitLog::getPoolId, userShop.getPoolId()) @@ -259,6 +262,7 @@ public abstract class EvalRewardBaseCalculator implements Calculator consumer) { evalGroupRewardPreconditionHitLogService.remove(Wrappers.lambdaQuery() .eq(EvalGroupRewardPreconditionHitLog::getPoolId, userShop.getPoolId()) @@ -469,6 +473,7 @@ public abstract class EvalRewardBaseCalculator implements Calculator rankLogs, RankIndicatorTypeEnum targetType) { Set poolIds = rankLogs.stream().map(EvalGroupRewardRankLog::getPoolId).collect(Collectors.toSet()); EvalGroupRewardRankLog rankLog = rankLogs.stream().findFirst().get(); @@ -528,6 +534,17 @@ public abstract class EvalRewardBaseCalculator implements Calculator matchRankLogs) { + if (PublicUtil.isEmpty(matchRankLogs)) { + return; + } + evalGroupRewardRankLogService.update(Wrappers.lambdaUpdate() + .eq(EvalGroupRewardRankLog::getId, matchRankLogs.stream().map(EvalGroupRewardRankLog::getId).collect(Collectors.toList())) + .set(EvalGroupRewardRankLog::getHit, Boolean.TRUE) + ); + } + /** * 初始化奖惩值 * diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardProportionCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardProportionCalculator.java index 2cc0648..39be6c9 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardProportionCalculator.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardProportionCalculator.java @@ -69,25 +69,8 @@ public class EvalRewardProportionCalculator extends EvalRewardBaseCalculator { referValueMap.put(poolId, commissionValue); } - if (BigDecimal.ZERO.compareTo(totalCommissionValue) == 0) { - for (EvalGroupUserShop userShop : userShops) { - BigDecimal proportion = BigDecimal.ZERO; - BigDecimal rewardValue = BigDecimal.ZERO; - userShop.setEvalGroupRewardAmount(rewardValue); - clearProjectHitLog(evalGroupRewardId, userShop); - saveProjectHitLog(evalGroupRewardId, userShop, log -> { - log.setRewardValue(rewardValue); - log.setHitCommissionValue(proportion); - }); - } - } - for (EvalGroupUserShop userShop : userShops) { boolean examined = examinePrecondition(userShop, preconditions); - if (!examined) { - userShop.setEvalGroupRewardAmount(BigDecimal.ZERO); - continue; - } BigDecimal commissionValue = referValueMap.getOrDefault(userShop.getPoolId(), BigDecimal.ZERO); @@ -98,6 +81,11 @@ public class EvalRewardProportionCalculator extends EvalRewardBaseCalculator { rewardValue = proportion.multiply(money).divide(BigDecimal.ONE, 2, RoundingMode.DOWN); } + //未通过条件,奖惩为0,保存日志 + if (!examined) { + rewardValue = BigDecimal.ZERO; + } + userShop.setEvalGroupRewardAmount(rewardValue); clearProjectHitLog(evalGroupRewardId, userShop); BigDecimal finalRewardValue = rewardValue; diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardRankCalculator.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardRankCalculator.java index eb3e823..0334194 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardRankCalculator.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardRankCalculator.java @@ -5,6 +5,7 @@ import cn.fw.morax.domain.bo.eval.EvalGroupUserShop; import cn.fw.morax.domain.db.eval.*; import cn.fw.morax.domain.enums.*; import cn.fw.morax.service.biz.CommonService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.sun.org.apache.regexp.internal.RE; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -71,6 +72,7 @@ public class EvalRewardRankCalculator extends EvalRewardBaseCalculator { final BigDecimal money = ladder.getMoney(); List matchRankLogs = matchRank(rankType, personCount, ladder, rankLogs); + updateHitRankLog(matchRankLogs); for (EvalGroupRewardRankLog rankLog : matchRankLogs) { EvalGroupUserShop userShop = poolUserShopMap.get(rankLog.getPoolId()); 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 d3e3e06..09e7499 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 @@ -1246,10 +1246,6 @@ public class EvalGroupPoolService { } public List queryRewardCommissionRank(Long evalGroupRewardId, LocalDate dataDate) { -// EvalGroupRewardPrecondition precondition = evalGroupRewardPreconditionService.getById(preconditionId); -// BV.notNull(precondition, "奖惩条件不存在"); -// final DataTypeEnum dataType = precondition.getDataType(); -// final TargetTypeEnum targetType = precondition.getTargetType(); List rankLogs = evalGroupRewardRankLogService.list(Wrappers.lambdaQuery() .eq(EvalGroupRewardRankLog::getDataDate, dataDate) .eq(EvalGroupRewardRankLog::getReferId, evalGroupRewardId) @@ -1259,7 +1255,15 @@ public class EvalGroupPoolService { Collections.sort(rankLogs); List rankLogVOs = PublicUtil.copyList(rankLogs, EvalGroupRewardRankLogVO.class); -// rankLogVOs.stream().forEach(rankLog -> rankLog.convertValueToPercent(dataType, targetType)); return rankLogVOs; } + + public List queryRewardProportion(Long evalGroupRewardId, LocalDate dataDate) { + List rewardHitLogs = evalGroupRewardHitLogService.list(Wrappers.lambdaQuery() + .eq(EvalGroupRewardHitLog::getEvalGroupRewardId, evalGroupRewardId) + .eq(EvalGroupRewardHitLog::getDataDate, dataDate) + ); + List hitLogVOS = PublicUtil.copyList(rewardHitLogs, EvalGroupRewardHitLogVO.class); + return hitLogVOS; + } }