Commit c043db4c44f1cf71f9f37161f4707934fc4238bf

Authored by 姜超
1 parent a9445e72

feature(*): 查看考评详情

查看考评详情
fw-morax-dao/src/main/resources/mapper/eval/EvalGroupUserMapper.xml
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 <mapper namespace="cn.fw.morax.dao.eval.EvalGroupUserDao"> 3 <mapper namespace="cn.fw.morax.dao.eval.EvalGroupUserDao">
4 4
5 <sql id="all_columns"> 5 <sql id="all_columns">
6 - id, egc, eval_id, eval_group_id, user_id, user_name, post_id, post_name, shop_id, 6 + id, eval_group_rank_id, eval_group_rank_stage_id, eval_group_id, user_id, user_name, post_id, post_name, shop_id,
7 shop_name, ignored, ignore_cause, ignore_cause_desc, anticipated_date, 7 shop_name, ignored, ignore_cause, ignore_cause_desc, anticipated_date,
8 remark, data_date, group_id, yn, create_time, update_time 8 remark, data_date, group_id, yn, create_time, update_time
9 </sql> 9 </sql>
fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java
@@ -91,6 +91,11 @@ public class EvalGroupUserShop { @@ -91,6 +91,11 @@ public class EvalGroupUserShop {
91 private BigDecimal reward; 91 private BigDecimal reward;
92 92
93 /** 93 /**
  94 + * 是否计不入考评考核
  95 + */
  96 + private Boolean ignored;
  97 +
  98 + /**
94 * 指标总分 99 * 指标总分
95 */ 100 */
96 private BigDecimal indicatorTotalScore; 101 private BigDecimal indicatorTotalScore;
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorParam.java
@@ -113,7 +113,7 @@ public class EvalGroupIndicatorParam extends BaseAuditableTimeEntity&lt;EvalGroupIn @@ -113,7 +113,7 @@ public class EvalGroupIndicatorParam extends BaseAuditableTimeEntity&lt;EvalGroupIn
113 */ 113 */
114 public void dividePercent() { 114 public void dividePercent() {
115 this.setProportion(this.getProportion().divide(Constant.ONE_HUNDRED, 4, RoundingMode.HALF_UP)); 115 this.setProportion(this.getProportion().divide(Constant.ONE_HUNDRED, 4, RoundingMode.HALF_UP));
116 - if (PublicUtil.isNotEmpty(this.getExtraTargetValue()) && 116 + if (PublicUtil.isNotEmpty(this.getTargetValue()) &&
117 PublicUtil.isNotEmpty(this.getTargetType()) && 117 PublicUtil.isNotEmpty(this.getTargetType()) &&
118 TargetTypeEnum.RATIO.equals(this.getTargetType())) { 118 TargetTypeEnum.RATIO.equals(this.getTargetType())) {
119 this.setTargetValue(this.getTargetValue().divide(Constant.ONE_HUNDRED, 4, RoundingMode.HALF_UP)); 119 this.setTargetValue(this.getTargetValue().divide(Constant.ONE_HUNDRED, 4, RoundingMode.HALF_UP));
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalPoolVO.java 0 → 100644
  1 +package cn.fw.morax.domain.vo;
  2 +
  3 +import lombok.Data;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * @author jiangchao
  9 + * @des:
  10 + * @date 2023/5/22 11:35
  11 + */
  12 +@Data
  13 +public class EvalPoolVO {
  14 +
  15 + /**
  16 + * 用户id
  17 + */
  18 + private Long userId;
  19 + /**
  20 + * 用户名称
  21 + */
  22 + private String userName;
  23 + /**
  24 + * 考评选择
  25 + */
  26 + private List<EvalSelectorVO> evalSelectors;
  27 +
  28 + public EvalPoolVO() {
  29 + }
  30 +
  31 + public EvalPoolVO(Long userId, String userName, List<EvalSelectorVO> evalSelectors) {
  32 + this.userId = userId;
  33 + this.userName = userName;
  34 + this.evalSelectors = evalSelectors;
  35 + }
  36 +}
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalSelectorVO.java
@@ -5,6 +5,7 @@ import lombok.Builder; @@ -5,6 +5,7 @@ import lombok.Builder;
5 import lombok.Data; 5 import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 7
  8 +import javax.validation.constraints.NotNull;
8 import java.math.BigDecimal; 9 import java.math.BigDecimal;
9 import java.util.List; 10 import java.util.List;
10 11
@@ -24,6 +25,18 @@ public class EvalSelectorVO { @@ -24,6 +25,18 @@ public class EvalSelectorVO {
24 private String name; 25 private String name;
25 26
26 /** 27 /**
  28 + * 门店
  29 + */
  30 + @NotNull(message = "门店")
  31 + private Long shopId;
  32 +
  33 + /**
  34 + * 岗位
  35 + */
  36 + @NotNull(message = "岗位")
  37 + private Long postId;
  38 +
  39 + /**
27 * 排名 40 * 排名
28 */ 41 */
29 private List<EvalUserGroupRankVO> ranks; 42 private List<EvalUserGroupRankVO> ranks;
fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/EvalPoolController.java
@@ -12,6 +12,7 @@ import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO; @@ -12,6 +12,7 @@ import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO;
12 import cn.fw.morax.domain.dto.eval.EvalUserRankDTO; 12 import cn.fw.morax.domain.dto.eval.EvalUserRankDTO;
13 import cn.fw.morax.domain.dto.query.EvalPoolQueryDTO; 13 import cn.fw.morax.domain.dto.query.EvalPoolQueryDTO;
14 import cn.fw.morax.domain.enums.EvalScopeEnum; 14 import cn.fw.morax.domain.enums.EvalScopeEnum;
  15 +import cn.fw.morax.domain.vo.EvalPoolVO;
15 import cn.fw.morax.domain.vo.EvalSelectorVO; 16 import cn.fw.morax.domain.vo.EvalSelectorVO;
16 import cn.fw.morax.domain.vo.eval.*; 17 import cn.fw.morax.domain.vo.eval.*;
17 import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankVO; 18 import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankVO;
@@ -70,6 +71,23 @@ public class EvalPoolController { @@ -70,6 +71,23 @@ public class EvalPoolController {
70 } 71 }
71 72
72 /** 73 /**
  74 + * 人员信息
  75 + *
  76 + * @return
  77 + * @ignoreParams currentUser
  78 + */
  79 + @GetMapping("/staff-info")
  80 + @ControllerMethod("人员信息")
  81 + public Message<EvalUserPoolVO> queryUser(@CurrentUser LoginAuthBean user) {
  82 + EvalUserPoolVO poolVO = new EvalUserPoolVO();
  83 + if (PublicUtil.isNotEmpty(user)) {
  84 + poolVO.setUserId(user.getUserId());
  85 + poolVO.setUserName(user.getUserName());
  86 + }
  87 + return success(poolVO);
  88 + }
  89 +
  90 + /**
73 * 本月可查看的其他考评池选项 91 * 本月可查看的其他考评池选项
74 * 92 *
75 * @param user 用户id 93 * @param user 用户id
@@ -81,8 +99,8 @@ public class EvalPoolController { @@ -81,8 +99,8 @@ public class EvalPoolController {
81 @GetMapping("/staff-selector") 99 @GetMapping("/staff-selector")
82 @IgnoreUserToken 100 @IgnoreUserToken
83 @ControllerMethod("本月可查看的其他考评池选项") 101 @ControllerMethod("本月可查看的其他考评池选项")
84 - public Message<List<EvalSelectorVO>> evalPoolSelector(@CurrentUser LoginAuthBean user, Long userId,  
85 - @RequestParam(required = false) YearMonth monthly) { 102 + public Message<EvalPoolVO> evalPoolSelector(@CurrentUser LoginAuthBean user, Long userId,
  103 + @RequestParam(required = false) YearMonth monthly) {
86 if (Objects.isNull(monthly)) { 104 if (Objects.isNull(monthly)) {
87 monthly = YearMonth.now(); 105 monthly = YearMonth.now();
88 } 106 }
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java
@@ -10,6 +10,7 @@ import cn.fw.morax.rpc.ehr.EhrRpcService; @@ -10,6 +10,7 @@ import cn.fw.morax.rpc.ehr.EhrRpcService;
10 import cn.fw.morax.rpc.ehr.dto.PerformanceStaffDTO; 10 import cn.fw.morax.rpc.ehr.dto.PerformanceStaffDTO;
11 import cn.fw.morax.server.consumer.FlowConsumer; 11 import cn.fw.morax.server.consumer.FlowConsumer;
12 import cn.fw.morax.server.task.*; 12 import cn.fw.morax.server.task.*;
  13 +import cn.fw.morax.service.biz.eval.EvalCalculateService;
13 import cn.fw.security.auth.client.annotation.Authorization; 14 import cn.fw.security.auth.client.annotation.Authorization;
14 import cn.fw.security.auth.client.enums.AuthType; 15 import cn.fw.security.auth.client.enums.AuthType;
15 import lombok.RequiredArgsConstructor; 16 import lombok.RequiredArgsConstructor;
@@ -18,6 +19,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -18,6 +19,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
18 import org.springframework.validation.annotation.Validated; 19 import org.springframework.validation.annotation.Validated;
19 import org.springframework.web.bind.annotation.*; 20 import org.springframework.web.bind.annotation.*;
20 21
  22 +import java.time.LocalDate;
21 import java.util.Date; 23 import java.util.Date;
22 import java.util.List; 24 import java.util.List;
23 25
@@ -42,18 +44,23 @@ public class EvalTaskController { @@ -42,18 +44,23 @@ public class EvalTaskController {
42 private final EvalCalcTask evalCalcTask; 44 private final EvalCalcTask evalCalcTask;
43 private final EvalGroupTask evalGroupTask; 45 private final EvalGroupTask evalGroupTask;
44 private final EvalGroupUserTask evalGroupUserTask; 46 private final EvalGroupUserTask evalGroupUserTask;
  47 + private final EvalCalculateService evalCalculateService;
45 48
46 @GetMapping("/group-user") 49 @GetMapping("/group-user")
47 @ControllerMethod("考评组人员") 50 @ControllerMethod("考评组人员")
48 - public Message<Void> processEvalUser() { 51 + public Message<Void> processEvalUser(Date date) {
49 evalGroupUserTask.processEvalUser(); 52 evalGroupUserTask.processEvalUser();
50 return success(); 53 return success();
51 } 54 }
52 55
53 @GetMapping("/calc-cache") 56 @GetMapping("/calc-cache")
54 @ControllerMethod("缓存要计算的考评") 57 @ControllerMethod("缓存要计算的考评")
55 - public Message<Void> cacheCalculableEvalGroup() {  
56 - evalCalcTask.cacheCalculableEvalGroup(); 58 + public Message<Void> cacheCalculableEvalGroup(Date date) {
  59 + if (PublicUtil.isEmpty(date)) {
  60 + evalCalculateService.cacheCalculableEvalGroupIds(LocalDate.now().minusDays(1L));
  61 + } else {
  62 + evalCalculateService.cacheCalculableEvalGroupIds(DateUtil.date2LocalDate(date));
  63 + }
57 return success(); 64 return success();
58 } 65 }
59 66
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java
@@ -97,7 +97,7 @@ public class EvalGroupUserTask { @@ -97,7 +97,7 @@ public class EvalGroupUserTask {
97 * @return 97 * @return
98 */ 98 */
99 private List<EvalGroupUser> queryKpiStaff(LocalDate yesterday) { 99 private List<EvalGroupUser> queryKpiStaff(LocalDate yesterday) {
100 - List<EvalGroup> evalGroups = evalGroupUserBizService.postEffectEvalGroups(); 100 + List<EvalGroup> evalGroups = evalGroupUserBizService.postEffectEvalGroups(yesterday);
101 if (! evalGroups.isEmpty()) { 101 if (! evalGroups.isEmpty()) {
102 log.info("需要生成考评组人员的考评组:{}", evalGroups); 102 log.info("需要生成考评组人员的考评组:{}", evalGroups);
103 } 103 }
@@ -105,7 +105,7 @@ public class EvalGroupUserTask { @@ -105,7 +105,7 @@ public class EvalGroupUserTask {
105 List<EvalGroupUser> evalGroupUsers = null; 105 List<EvalGroupUser> evalGroupUsers = null;
106 for (EvalGroup evalGroup : evalGroups) { 106 for (EvalGroup evalGroup : evalGroups) {
107 for (Long postId : evalGroup.getPostIds()) { 107 for (Long postId : evalGroup.getPostIds()) {
108 - evalGroupUsers = evalGroupUserBizService.fetchBuildKpiUser(postId, evalGroups, yesterday); 108 + evalGroupUsers = evalGroupUserBizService.fetchBuildKpiUser(postId, evalGroup, yesterday);
109 evalGroupUsersForSave.addAll(evalGroupUsers); 109 evalGroupUsersForSave.addAll(evalGroupUsers);
110 } 110 }
111 } 111 }
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java
@@ -239,10 +239,11 @@ public class EvalCalculateService { @@ -239,10 +239,11 @@ public class EvalCalculateService {
239 if (userShop.getIndicatorTotalScore().compareTo(BigDecimal.ZERO) > 0) { 239 if (userShop.getIndicatorTotalScore().compareTo(BigDecimal.ZERO) > 0) {
240 scoreRatio = userShop.getScore().divide(userShop.getIndicatorTotalScore(), 2, RoundingMode.DOWN); 240 scoreRatio = userShop.getScore().divide(userShop.getIndicatorTotalScore(), 2, RoundingMode.DOWN);
241 } 241 }
  242 + BigDecimal reward = (Boolean.TRUE.equals(userShop.getIgnored())) ? BigDecimal.ZERO : userShop.getReward();
242 evalUserPoolService.update(Wrappers.<EvalUserPool>lambdaUpdate() 243 evalUserPoolService.update(Wrappers.<EvalUserPool>lambdaUpdate()
243 .eq(EvalUserPool::getId, userShop.getPoolId()) 244 .eq(EvalUserPool::getId, userShop.getPoolId())
244 .eq(EvalUserPool::getYn, Boolean.TRUE) 245 .eq(EvalUserPool::getYn, Boolean.TRUE)
245 - .set(EvalUserPool::getReward, userShop.getReward()) 246 + .set(EvalUserPool::getReward, reward)
246 .set(EvalUserPool::getScore, userShop.getScore()) 247 .set(EvalUserPool::getScore, userShop.getScore())
247 .set(EvalUserPool::getScoreRatio, scoreRatio) 248 .set(EvalUserPool::getScoreRatio, scoreRatio)
248 .set(EvalUserPool::getMonthly, YearMonth.from(localDate)) 249 .set(EvalUserPool::getMonthly, YearMonth.from(localDate))
@@ -280,9 +281,9 @@ public class EvalCalculateService { @@ -280,9 +281,9 @@ public class EvalCalculateService {
280 281
281 Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, users, localDate); 282 Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, users, localDate);
282 for (EvalGroupUser user : users) { 283 for (EvalGroupUser user : users) {
283 - if (Boolean.TRUE.equals(user.getIgnored())) {  
284 - continue;  
285 - } 284 +// if (Boolean.TRUE.equals(user.getIgnored())) {
  285 +// continue;
  286 +// }
286 EvalUserPool userPool = userPoolMap.get(user.getUserId()); 287 EvalUserPool userPool = userPoolMap.get(user.getUserId());
287 userShops.add(convertBO(user, userPool)); 288 userShops.add(convertBO(user, userPool));
288 } 289 }
@@ -637,6 +638,7 @@ public class EvalCalculateService { @@ -637,6 +638,7 @@ public class EvalCalculateService {
637 userShop.setGroupId(user.getGroupId()); 638 userShop.setGroupId(user.getGroupId());
638 userShop.setScore(BigDecimal.ZERO); 639 userShop.setScore(BigDecimal.ZERO);
639 userShop.setReward(BigDecimal.ZERO); 640 userShop.setReward(BigDecimal.ZERO);
  641 + userShop.setIgnored(user.getIgnored());
640 return userShop; 642 return userShop;
641 } 643 }
642 644
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java
@@ -9,6 +9,7 @@ import cn.fw.morax.domain.db.kpi.*; @@ -9,6 +9,7 @@ import cn.fw.morax.domain.db.kpi.*;
9 import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO; 9 import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO;
10 import cn.fw.morax.domain.dto.eval.EvalUserRankDTO; 10 import cn.fw.morax.domain.dto.eval.EvalUserRankDTO;
11 import cn.fw.morax.domain.enums.*; 11 import cn.fw.morax.domain.enums.*;
  12 +import cn.fw.morax.domain.vo.EvalPoolVO;
12 import cn.fw.morax.domain.vo.EvalSelectorVO; 13 import cn.fw.morax.domain.vo.EvalSelectorVO;
13 import cn.fw.morax.domain.vo.SelectorVO; 14 import cn.fw.morax.domain.vo.SelectorVO;
14 import cn.fw.morax.domain.vo.eval.*; 15 import cn.fw.morax.domain.vo.eval.*;
@@ -132,34 +133,13 @@ public class EvalGroupPoolService { @@ -132,34 +133,13 @@ public class EvalGroupPoolService {
132 List<EvalUserPool> rankPools = stagePoolMap.get(stageVO.getId()); 133 List<EvalUserPool> rankPools = stagePoolMap.get(stageVO.getId());
133 if (PublicUtil.isNotEmpty(rankPools)) { 134 if (PublicUtil.isNotEmpty(rankPools)) {
134 EvalUserPool stagePool = rankPools.get(0); 135 EvalUserPool stagePool = rankPools.get(0);
135 - EvalUserPoolVO evalUserPoolVO = PublicUtil.copy(stagePool, EvalUserPoolVO.class); 136 + EvalUserPoolVO evalUserPoolVO = this.poolDetail(stagePool);
136 stageVO.setPool(evalUserPoolVO); 137 stageVO.setPool(evalUserPoolVO);
137 } 138 }
138 } 139 }
139 return stageVos; 140 return stageVos;
140 } 141 }
141 142
142 -// /**  
143 -// * 查询考评详情  
144 -// *  
145 -// * @param userId  
146 -// * @param yearMonth  
147 -// * @return  
148 -// */  
149 -// public List<EvalUserGroupRankVO> queryUserPoolDetail(final Long userId, final YearMonth yearMonth) {  
150 -// List<EvalUserPool> pools = userEvalPool(userId, yearMonth);  
151 -// if (PublicUtil.isEmpty(pools)) {  
152 -// return new ArrayList<>();  
153 -// }  
154 -// EvalUserPool userPool = pools.get(0);  
155 -// Long postId = userPool.getPostId();  
156 -// Long shopId = userPool.getShopId();  
157 -//  
158 -// pools.stream().filter()  
159 -//  
160 -// return poolDetail(evalUserPool);  
161 -// }  
162 -  
163 public EvalUserPoolVO poolDetail(EvalUserPool pool) { 143 public EvalUserPoolVO poolDetail(EvalUserPool pool) {
164 EvalUserPoolVO evalUserPoolVO = PublicUtil.copy(pool, EvalUserPoolVO.class); 144 EvalUserPoolVO evalUserPoolVO = PublicUtil.copy(pool, EvalUserPoolVO.class);
165 evalUserPoolVO.convertScoreRatio(); 145 evalUserPoolVO.convertScoreRatio();
@@ -282,21 +262,25 @@ public class EvalGroupPoolService { @@ -282,21 +262,25 @@ public class EvalGroupPoolService {
282 * @param yearMonth 262 * @param yearMonth
283 * @return 263 * @return
284 */ 264 */
285 - public List<EvalSelectorVO> evalPoolSelector(Long userId, YearMonth yearMonth) { 265 + public EvalPoolVO evalPoolSelector(Long userId, YearMonth yearMonth) {
286 List<EvalUserPool> pools = userEvalPool(userId, yearMonth); 266 List<EvalUserPool> pools = userEvalPool(userId, yearMonth);
287 if (CollectionUtils.isEmpty(pools)) { 267 if (CollectionUtils.isEmpty(pools)) {
288 - return new ArrayList<>(); 268 + return null;
289 } 269 }
  270 + String userName = pools.stream().findFirst().map(EvalUserPool::getUserName).orElse("");
290 List<EvalSelectorVO> selectors = new ArrayList<>(); 271 List<EvalSelectorVO> selectors = new ArrayList<>();
  272 + EvalPoolVO evalPoolVO = new EvalPoolVO(userId, userName, selectors);
291 Map<Long, String> rankNameMap = this.getRankNameMap(pools); 273 Map<Long, String> rankNameMap = this.getRankNameMap(pools);
292 Map<String, List<EvalUserPool>> shopPostMap = pools.stream().collect(Collectors.groupingBy(pool -> pool.getShopName() + "(" + pool.getPostName() + ")")); 274 Map<String, List<EvalUserPool>> shopPostMap = pools.stream().collect(Collectors.groupingBy(pool -> pool.getShopName() + "(" + pool.getPostName() + ")"));
293 //门店、岗位维度 275 //门店、岗位维度
294 for (Map.Entry<String, List<EvalUserPool>> shopPostEntry : shopPostMap.entrySet()) { 276 for (Map.Entry<String, List<EvalUserPool>> shopPostEntry : shopPostMap.entrySet()) {
295 -  
296 List<EvalUserGroupRankVO> ranks = new ArrayList<>(); 277 List<EvalUserGroupRankVO> ranks = new ArrayList<>();
297 - Map<Long, List<EvalUserPool>> rankPools = shopPostEntry.getValue().stream().collect(Collectors.groupingBy(EvalUserPool::getEvalGroupRankId)); 278 + List<EvalUserPool> shopPostPools = shopPostEntry.getValue();
  279 + Long shopId = shopPostPools.stream().findFirst().map(EvalUserPool::getShopId).get();
  280 + Long postId = shopPostPools.stream().findFirst().map(EvalUserPool::getPostId).get();
  281 + Map<Long, List<EvalUserPool>> rankPools = shopPostPools.stream().collect(Collectors.groupingBy(EvalUserPool::getEvalGroupRankId));
  282 + //排名维度
298 for (Map.Entry<Long, List<EvalUserPool>> rankEntry : rankPools.entrySet()) { 283 for (Map.Entry<Long, List<EvalUserPool>> rankEntry : rankPools.entrySet()) {
299 - String rankName = rankNameMap.getOrDefault(rankEntry.getKey(), "");  
300 List<EvalUserPool> userRankPools = rankEntry.getValue(); 284 List<EvalUserPool> userRankPools = rankEntry.getValue();
301 double averageKpiScoreRatio = userRankPools.stream() 285 double averageKpiScoreRatio = userRankPools.stream()
302 .mapToDouble(r -> Optional.ofNullable(r.getScoreRatio()).orElse(BigDecimal.ZERO).doubleValue()) 286 .mapToDouble(r -> Optional.ofNullable(r.getScoreRatio()).orElse(BigDecimal.ZERO).doubleValue())
@@ -307,12 +291,15 @@ public class EvalGroupPoolService { @@ -307,12 +291,15 @@ public class EvalGroupPoolService {
307 rank.setEvalGroupRankName(rankNameMap.getOrDefault(rankEntry.getKey(), "")); 291 rank.setEvalGroupRankName(rankNameMap.getOrDefault(rankEntry.getKey(), ""));
308 rank.setScoreRatio(new BigDecimal(averageKpiScoreRatio).multiply(Constant.ONE_HUNDRED)); 292 rank.setScoreRatio(new BigDecimal(averageKpiScoreRatio).multiply(Constant.ONE_HUNDRED));
309 rank.setReward(reward); 293 rank.setReward(reward);
  294 + rank.setEvalGroupRankId(rankEntry.getKey());
310 ranks.add(rank); 295 ranks.add(rank);
311 } 296 }
312 EvalSelectorVO evalSelectorVO = new EvalSelectorVO(shopPostEntry.getKey(), ranks); 297 EvalSelectorVO evalSelectorVO = new EvalSelectorVO(shopPostEntry.getKey(), ranks);
  298 + evalSelectorVO.setShopId(shopId);
  299 + evalSelectorVO.setPostId(postId);
313 selectors.add(evalSelectorVO); 300 selectors.add(evalSelectorVO);
314 } 301 }
315 - return selectors; 302 + return evalPoolVO;
316 } 303 }
317 304
318 public Map<Long, String> getRankNameMap(List<EvalUserPool> pools) { 305 public Map<Long, String> getRankNameMap(List<EvalUserPool> pools) {
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java
@@ -53,14 +53,16 @@ public class EvalGroupUserBizService { @@ -53,14 +53,16 @@ public class EvalGroupUserBizService {
53 /** 53 /**
54 * 所有集团生效的绩效组配置 54 * 所有集团生效的绩效组配置
55 */ 55 */
56 - public List<EvalGroup> postEffectEvalGroups(){  
57 - LocalDate queryDate = LocalDate.now().minusDays(1L); 56 + public List<EvalGroup> postEffectEvalGroups(LocalDate queryDate){
58 List<EvalGroup> evalGroups = evalGroupService.getAllEffectGroups(queryDate); 57 List<EvalGroup> evalGroups = evalGroupService.getAllEffectGroups(queryDate);
59 if (PublicUtil.isEmpty(evalGroups)) { 58 if (PublicUtil.isEmpty(evalGroups)) {
60 log.info("时间:{},没有正在生效中的考评组配置", DateTimeFormatter.ofPattern("yyyy-MM-dd").format(queryDate)); 59 log.info("时间:{},没有正在生效中的考评组配置", DateTimeFormatter.ofPattern("yyyy-MM-dd").format(queryDate));
61 return new ArrayList<>(); 60 return new ArrayList<>();
62 } 61 }
63 - return evalGroups; 62 + //过滤岗位为空考评组
  63 + List<EvalGroup> postEvalGroups = evalGroups.stream()
  64 + .filter(evalGroup -> PublicUtil.isNotEmpty(evalGroup.getPostIds())).collect(Collectors.toList());
  65 + return postEvalGroups;
64 } 66 }
65 67
66 /** 68 /**
@@ -69,24 +71,11 @@ public class EvalGroupUserBizService { @@ -69,24 +71,11 @@ public class EvalGroupUserBizService {
69 * @return 71 * @return
70 */ 72 */
71 @Transactional(rollbackFor = Exception.class) 73 @Transactional(rollbackFor = Exception.class)
72 - public List<EvalGroupUser> fetchBuildKpiUser(Long postId, List<EvalGroup> evalGroups, LocalDate localDate){  
73 - Set<Long> shopIds = new HashSet<>();  
74 - Map<Long, EvalGroup> shopKpiGroupMap = new HashMap<>();  
75 - for (EvalGroup evalGroup : evalGroups) {  
76 - shopIds.addAll(evalGroup.getShopIds());  
77 - for (Long shopId : evalGroup.getShopIds()) {  
78 - shopKpiGroupMap.put(shopId, evalGroup);  
79 - }  
80 - }  
81 - List<EvalGroupUser> evalGroupUsers = this.fetchPostUsers(postId, new ArrayList<>(shopIds), localDate); 74 + public List<EvalGroupUser> fetchBuildKpiUser(Long postId, EvalGroup evalGroup, LocalDate localDate){
  75 + List<EvalGroupUser> evalGroupUsers = this.fetchPostUsers(postId, evalGroup.getShopIds(), localDate);
82 76
83 //构建考评组信息 77 //构建考评组信息
84 for (EvalGroupUser user : evalGroupUsers) { 78 for (EvalGroupUser user : evalGroupUsers) {
85 - if (! shopKpiGroupMap.containsKey(user.getShopId())) {  
86 - log.error("员工门店没有绩效组配置,门店:{},岗位:{},员工:{}", user.getShopId(), user.getPostId(), user.getId());  
87 - continue;  
88 - }  
89 - EvalGroup evalGroup = shopKpiGroupMap.get(user.getShopId());  
90 user.setEvalGroupRankId(evalGroup.getEvalGroupRankId()); 79 user.setEvalGroupRankId(evalGroup.getEvalGroupRankId());
91 user.setEvalGroupRankStageId(evalGroup.getEvalGroupRankStageId()); 80 user.setEvalGroupRankStageId(evalGroup.getEvalGroupRankStageId());
92 user.setEvalGroupId(evalGroup.getId()); 81 user.setEvalGroupId(evalGroup.getId());