Commit 9a6df217881d000909118846aa9dadf8513bcca6

Authored by 姜超
1 parent f945186c

feature(*): 修改个人考评

修改个人考评
fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java
... ... @@ -65,10 +65,10 @@ public class EvalGroupUserShop {
65 65 */
66 66 private Long referId;
67 67  
68   -// /**
69   -// * 多阶段
70   -// */
71   -// private Boolean multiStage;
  68 + /**
  69 + * 多阶段
  70 + */
  71 + private Boolean multiStage;
72 72  
73 73 /**
74 74 * 数据开始日期
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalRewardDist.java
... ... @@ -49,11 +49,6 @@ public class EvalRewardDist extends BaseAuditableTimeEntity<EvalRewardDist, Long
49 49 * 考评排名组阶段id
50 50 */
51 51 private Long evalGroupRankStageId;
52   -
53   -// /**
54   -// * 考评组名称
55   -// */
56   -// private String evalGroupName;
57 52 /**
58 53 * 考评排名组名称
59 54 */
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalRewardDistVO.java
... ... @@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
12 12 import lombok.experimental.Accessors;
13 13  
14 14 import java.math.BigDecimal;
  15 +import java.time.LocalDate;
15 16 import java.util.List;
16 17  
17 18 /**
... ... @@ -37,31 +38,37 @@ public class EvalRewardDistVO {
37 38 * 用户id
38 39 */
39 40 private Long userId;
40   -
41 41 /**
42   - * 考评id
  42 + * 考评id
43 43 */
44   - private Long evalId;
45   -
  44 + private Long evalGroupId;
46 45 /**
47   - * 考评组编码
  46 + * 考评排名组id
48 47 */
49   - private Long evalGroupId;
  48 + private Long evalGroupRankId;
  49 + /**
  50 + * 考评排名组阶段id
  51 + */
  52 + private Long evalGroupRankStageId;
  53 + /**
  54 + * 考评排名组名称
  55 + */
  56 + private String evalGroupRankName;
50 57  
51 58 /**
52   - * 考评类型; 1:活动考评 2:其他考评
  59 + * 考评排名组阶段名称
53 60 */
54   - private EvalTypeEnum evalType;
  61 + private String evalGroupRankStageName;
55 62  
56 63 /**
57   - * 考评
  64 + * 生效时间
58 65 */
59   - private String evalName;
  66 + private LocalDate beginTime;
60 67  
61 68 /**
62   - * 考评组
  69 + * 结束时间
63 70 */
64   - private String evalGroupName;
  71 + private LocalDate overTime;
65 72  
66 73 /**
67 74 * 考评组id
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/kpi/EvalKpiBaseCalculator.java
... ... @@ -225,20 +225,37 @@ public abstract class EvalKpiBaseCalculator implements Calculator<EvalGroupUserS
225 225 protected Optional<BigDecimal> queryValue(EvalGroupUserShop obj, IndicatorCodeTypeEnum codeType, String indicatorCode) {
226 226 DimensionTypeEnum dimensionType = EvalScopeEnum.STAFF.equals(obj.getScopeType()) ? DimensionTypeEnum.STAFF : DimensionTypeEnum.SHOP;
227 227 if (IndicatorCodeTypeEnum.INDICATOR.equals(codeType)) {
228   - LambdaQueryWrapper<IndicatorUserStageValue> queryWrapper = Wrappers.<IndicatorUserStageValue>lambdaQuery()
229   - .eq(IndicatorUserStageValue::getIndicatorCode, indicatorCode)
230   - .eq(IndicatorUserStageValue::getBeginDate, obj.getBeginDate())
231   - .eq(IndicatorUserStageValue::getEndDate, obj.getDataDate())
232   - .eq(IndicatorUserStageValue::getDimensionType, dimensionType)
233   - .eq(IndicatorUserStageValue::getYn, Boolean.TRUE)
234   - .eq(IndicatorUserStageValue::getGroupId, obj.getGroupId());
  228 + //多阶段查询
  229 + if (Boolean.TRUE.equals(obj.getMultiStage())) {
  230 + LambdaQueryWrapper<IndicatorUserStageValue> queryWrapper = Wrappers.<IndicatorUserStageValue>lambdaQuery()
  231 + .eq(IndicatorUserStageValue::getIndicatorCode, indicatorCode)
  232 + .eq(IndicatorUserStageValue::getBeginDate, obj.getBeginDate())
  233 + .eq(IndicatorUserStageValue::getEndDate, obj.getDataDate())
  234 + .eq(IndicatorUserStageValue::getDimensionType, dimensionType)
  235 + .eq(IndicatorUserStageValue::getYn, Boolean.TRUE)
  236 + .eq(IndicatorUserStageValue::getGroupId, obj.getGroupId());
  237 + if (EvalScopeEnum.STAFF.equals(obj.getScopeType())) {
  238 + queryWrapper.eq(IndicatorUserStageValue::getUserId, obj.getReferId());
  239 + } else {
  240 + queryWrapper.eq(IndicatorUserStageValue::getShopId, obj.getReferId());
  241 + }
  242 + IndicatorUserStageValue indicatorUserStageValue = indicatorUserStageValueService.getOne(queryWrapper, Boolean.FALSE);
  243 + return queryKpiIndicatorValue(indicatorUserStageValue);
  244 + }
  245 + //单阶段查询
  246 + LambdaQueryWrapper<IndicatorUserValue> queryWrapper = Wrappers.<IndicatorUserValue>lambdaQuery()
  247 + .eq(IndicatorUserValue::getIndicatorCode, indicatorCode)
  248 + .eq(IndicatorUserValue::getDataDate, obj.getDataDate())
  249 + .eq(IndicatorUserValue::getDimensionType, dimensionType)
  250 + .eq(IndicatorUserValue::getYn, Boolean.TRUE)
  251 + .eq(IndicatorUserValue::getGroupId, obj.getGroupId());
235 252 if (EvalScopeEnum.STAFF.equals(obj.getScopeType())) {
236   - queryWrapper.eq(IndicatorUserStageValue::getUserId, obj.getReferId());
  253 + queryWrapper.eq(IndicatorUserValue::getUserId, obj.getReferId());
237 254 } else {
238   - queryWrapper.eq(IndicatorUserStageValue::getShopId, obj.getReferId());
  255 + queryWrapper.eq(IndicatorUserValue::getShopId, obj.getReferId());
239 256 }
240   - IndicatorUserStageValue indicatorUserStageValue = indicatorUserStageValueService.getOne(queryWrapper, Boolean.FALSE);
241   - return queryKpiIndicatorValue(indicatorUserStageValue);
  257 + IndicatorUserValue indicatorUserValue = indicatorUserValueService.getOne(queryWrapper, Boolean.FALSE);
  258 + return queryKpiIndicatorValue(indicatorUserValue);
242 259 }
243 260  
244 261 EvalIndicatorValue evalIndicatorValue = evalIndicatorValueService.queryLastValue(obj.getReferId(),
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java
... ... @@ -183,7 +183,12 @@ public class EvalCalculateService {
183 183 log.error("考评排名组阶段[{}]不存在,终止计算!", JSON.toJSONString(evalGroup));
184 184 return;
185 185 }
186   - List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(evalGroup, evalGroupRankStage, localDate, scopeType);
  186 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroup.getEvalGroupRankId());
  187 + if (Objects.isNull(evalGroupRank)) {
  188 + log.error("考评组[{}]排名组不存在,终止计算!", evalGroup.getEvalGroupRankId());
  189 + return;
  190 + }
  191 + List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(evalGroup, evalGroupRank, evalGroupRankStage, localDate, scopeType);
187 192 if (CollectionUtils.isEmpty(userShops)) {
188 193 log.error("考评组[{}]人员为空,终止计算!", evalGroupId);
189 194 return;
... ... @@ -269,8 +274,7 @@ public class EvalCalculateService {
269 274 }
270 275  
271 276  
272   - public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroup evalGroup, EvalGroupRankStage evalGroupRankStage, LocalDate localDate, EvalScopeEnum scopeType) {
273   - LocalDate beginDate = evalGroupRankStage.getBeginTime();
  277 + public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage, LocalDate localDate, EvalScopeEnum scopeType) {
274 278 List<EvalGroupUserShop> userShops = new ArrayList<>();
275 279 if (EvalScopeEnum.STAFF.equals(scopeType)) {
276 280 List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery()
... ... @@ -282,7 +286,7 @@ public class EvalCalculateService {
282 286 Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, evalGroupRankStage, users, localDate);
283 287 for (EvalGroupUser user : users) {
284 288 EvalUserPool userPool = userPoolMap.get(user.getUserId());
285   - userShops.add(convertBO(user, userPool));
  289 + userShops.add(convertBO(user, userPool, evalGroupRank, evalGroupRankStage));
286 290 }
287 291 return userShops;
288 292 }
... ... @@ -291,7 +295,7 @@ public class EvalCalculateService {
291 295 for (Long shopId : evalGroup.getShopIds()) {
292 296 EvalShopPool shopPool = shopPoolBOMap.get(shopId);
293 297 Boolean ignored = ! distShopIds.contains(shopId);
294   - userShops.add(convertBO(shopPool, evalGroup, beginDate, localDate, ignored));
  298 + userShops.add(convertBO(shopPool, evalGroup, evalGroupRank, evalGroupRankStage, localDate, ignored));
295 299 }
296 300 return userShops;
297 301 }
... ... @@ -619,7 +623,7 @@ public class EvalCalculateService {
619 623 return poolDetail;
620 624 }
621 625  
622   - public EvalGroupUserShop convertBO(EvalGroupUser user, EvalUserPool userPool) {
  626 + public EvalGroupUserShop convertBO(EvalGroupUser user, EvalUserPool userPool, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) {
623 627 EvalGroupUserShop userShop = new EvalGroupUserShop();
624 628 userShop.setName(user.getUserName());
625 629 userShop.setScopeType(EvalScopeEnum.STAFF);
... ... @@ -628,7 +632,9 @@ public class EvalCalculateService {
628 632 userShop.setPostId(userPool.getPostId());
629 633 userShop.setShopId(userPool.getShopId());
630 634 userShop.setReferId(user.getUserId());
  635 + userShop.setBeginDate(evalGroupRankStage.getBeginTime());
631 636 userShop.setDataDate(user.getDataDate());
  637 + userShop.setMultiStage(evalGroupRank.getMultiStage());
632 638 userShop.setGroupId(user.getGroupId());
633 639 userShop.setScore(BigDecimal.ZERO);
634 640 userShop.setReward(BigDecimal.ZERO);
... ... @@ -636,7 +642,7 @@ public class EvalCalculateService {
636 642 return userShop;
637 643 }
638 644  
639   - public EvalGroupUserShop convertBO(EvalShopPool shopPool, EvalGroup evalGroup, LocalDate beginDate, LocalDate dataDate, Boolean ignored) {
  645 + public EvalGroupUserShop convertBO(EvalShopPool shopPool, EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage, LocalDate dataDate, Boolean ignored) {
640 646 EvalGroupUserShop userShop = new EvalGroupUserShop();
641 647 userShop.setName(shopPool.getShopName());
642 648 userShop.setReferId(shopPool.getShopId());
... ... @@ -645,8 +651,9 @@ public class EvalCalculateService {
645 651 userShop.setScopeType(EvalScopeEnum.SHOP);
646 652 userShop.setEvalId(userShop.getEvalId());
647 653 userShop.setEvalGroupId(evalGroup.getId());
648   - userShop.setBeginDate(beginDate);
  654 + userShop.setBeginDate(evalGroupRankStage.getBeginTime());
649 655 userShop.setDataDate(dataDate);
  656 + userShop.setMultiStage(evalGroupRank.getMultiStage());
650 657 userShop.setGroupId(evalGroup.getGroupId());
651 658 userShop.setIgnored(ignored);
652 659 userShop.setScore(BigDecimal.ZERO);
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java
... ... @@ -285,14 +285,14 @@ public class EvalGroupPoolService {
285 285 //排名维度
286 286 for (Map.Entry<Long, List<EvalUserPool>> rankEntry : rankPools.entrySet()) {
287 287 List<EvalUserPool> userRankPools = rankEntry.getValue();
288   - double averageKpiScoreRatio = userRankPools.stream()
  288 + Double averageKpiScoreRatio = userRankPools.stream()
289 289 .mapToDouble(r -> Optional.ofNullable(r.getScoreRatio()).orElse(BigDecimal.ZERO).doubleValue())
290 290 .average()
291 291 .orElse(0);
292 292 BigDecimal reward = userRankPools.stream().map(EvalUserPool::getReward).reduce(BigDecimal.ZERO, BigDecimal::add);
293 293 EvalUserGroupRankVO rank = new EvalUserGroupRankVO();
294 294 rank.setEvalGroupRankName(rankNameMap.getOrDefault(rankEntry.getKey(), ""));
295   - rank.setScoreRatio(new BigDecimal(averageKpiScoreRatio).multiply(Constant.ONE_HUNDRED));
  295 + rank.setScoreRatio(new BigDecimal(averageKpiScoreRatio.toString()).multiply(Constant.ONE_HUNDRED));
296 296 rank.setReward(reward);
297 297 rank.setEvalGroupRankId(rankEntry.getKey());
298 298 ranks.add(rank);
... ... @@ -496,6 +496,10 @@ public class EvalGroupPoolService {
496 496 if (! TargetTypeEnum.NO.equals(paramVO.getTargetType())) {
497 497 paramVO.setReachValue(Optional.ofNullable(paramVO.getReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED));
498 498 }
  499 + //有目标
  500 + if (PublicUtil.isNotEmpty(paramVO.getExtraTargetType()) && (! TargetTypeEnum.NO.equals(paramVO.getExtraTargetType()))) {
  501 + paramVO.setExtraReachValue(Optional.ofNullable(paramVO.getExtraReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED));
  502 + }
499 503 }
500 504  
501 505 for (EvalGroupIndicatorParamVO paramVO : Optional.ofNullable(detail.getLadderParams()).orElse(new ArrayList<>())) {
... ... @@ -507,6 +511,10 @@ public class EvalGroupPoolService {
507 511 if (! TargetTypeEnum.NO.equals(paramVO.getTargetType())) {
508 512 paramVO.setReachValue(Optional.ofNullable(paramVO.getReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED));
509 513 }
  514 + //有目标
  515 + if (PublicUtil.isNotEmpty(paramVO.getExtraTargetType()) && (! TargetTypeEnum.NO.equals(paramVO.getExtraTargetType()))) {
  516 + paramVO.setExtraReachValue(Optional.ofNullable(paramVO.getExtraReachValue()).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED));
  517 + }
510 518 }
511 519  
512 520 for (EvalGroupIndicatorPreconditionVO preconditionVO : Optional.ofNullable(detail.getConds()).orElse(new ArrayList<>())) {
... ... @@ -539,7 +547,6 @@ public class EvalGroupPoolService {
539 547 scopeType, dataDate, paramVos);
540 548  
541 549 for (EvalGroupIndicatorParamVO paramVO : paramVos) {
542   - String code = paramVO.getCode();
543 550 Long paramId = paramVO.getId();
544 551 //无目标
545 552 // if (TargetTypeEnum.NO.equals(paramVO.getTargetType())) {
... ... @@ -552,8 +559,15 @@ public class EvalGroupPoolService {
552 559 Optional<EvalGroupIndicatorTargetHitLog> hitLogOptional = Optional.ofNullable(paramTargetHitLogMap.get(paramId));
553 560 paramVO.setIndicatorValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getValue).orElse(BigDecimal.ZERO));
554 561 paramVO.setReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO));
555   - paramVO.setExtraReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO));
  562 + paramVO.setExtraReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getExtraReachValue).orElse(BigDecimal.ZERO));
556 563 paramVO.setUseTarget(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getUseTarget).orElse(EvalUseTargetEnum.NO));
  564 +
  565 +// paramVO.setTargetCalcType(paramVO.getTargetCalcType());
  566 +// paramVO.setTargetType(paramVO.getTargetType());
  567 +// paramVO.setTargetValue(paramVO.getTargetValue());
  568 +// paramVO.setExtraTargetCalcType(paramVO.getExtraTargetCalcType());
  569 +// paramVO.setExtraTargetType(paramVO.getExtraTargetType());
  570 +// paramVO.setExtraTargetValue(paramVO.getExtraTargetValue());
557 571 }
558 572  
559 573 Map<ParamTypeEnum, List<EvalGroupIndicatorParamVO>> indicatorParamMap = paramVos.stream()
... ...