Commit a9445e724e7a6f83f2a122f9c6f94ee4f6e982bd

Authored by 姜超
1 parent 58b7591d

feature(*): 查看考评详情

查看考评详情
fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalUserRankDTO.java 0 → 100644
  1 +package cn.fw.morax.domain.dto.eval;
  2 +
  3 +import cn.fw.morax.common.utils.PublicUtil;
  4 +import lombok.AllArgsConstructor;
  5 +import lombok.Builder;
  6 +import lombok.Data;
  7 +import lombok.NoArgsConstructor;
  8 +
  9 +import javax.validation.constraints.NotNull;
  10 +import java.time.LocalDate;
  11 +import java.time.YearMonth;
  12 +
  13 +/**
  14 + * <p>
  15 + * 绩效组排名配置
  16 + * </p>
  17 + *
  18 + * @author jiangchao
  19 + * @since 2022-09-26
  20 + */
  21 +@Data
  22 +@Builder
  23 +@NoArgsConstructor
  24 +@AllArgsConstructor
  25 +public class EvalUserRankDTO {
  26 +
  27 + /**
  28 + * 用户id
  29 + */
  30 +// @NotNull(message = "用户id不能为空")
  31 + private Long userId;
  32 +
  33 + /**
  34 + * 门店
  35 + */
  36 + @NotNull(message = "门店")
  37 + private Long shopId;
  38 +
  39 + /**
  40 + * 岗位
  41 + */
  42 + @NotNull(message = "岗位")
  43 + private Long postId;
  44 +
  45 + /**
  46 + * 考评排名组id
  47 + */
  48 + @NotNull(message = "考评排名组id")
  49 + private Long evalGroupRankId;
  50 +
  51 + /**
  52 + * 月份
  53 + */
  54 + private YearMonth monthly;
  55 +
  56 + public void initMonthly() {
  57 + if (PublicUtil.isEmpty(this.monthly)) {
  58 + this.monthly = YearMonth.now();
  59 + }
  60 + }
  61 +
  62 +}
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalSelectorVO.java
... ... @@ -17,17 +17,8 @@ import java.util.List;
17 17 */
18 18 @Data
19 19 @EqualsAndHashCode
20   -@Builder
21 20 public class EvalSelectorVO {
22 21 /**
23   - * 岗位id
24   - */
25   - private Long postId;
26   - /**
27   - * 门店id
28   - */
29   - private Long shopId;
30   - /**
31 22 * 名称
32 23 */
33 24 private String name;
... ... @@ -37,17 +28,6 @@ public class EvalSelectorVO {
37 28 */
38 29 private List<EvalUserGroupRankVO> ranks;
39 30  
40   - public static EvalSelectorVO whit(Long postId, Long shopId, String shopName, String postName) {
41   - String name = shopName +
42   - " (" +
43   - postName +
44   - ") ";
45   - EvalSelectorVO vo = new EvalSelectorVO();
46   - vo.setShopId(shopId);
47   - vo.setPostId(postId);
48   - vo.setName(name);
49   - return vo;
50   - }
51 31  
52 32 public EvalSelectorVO() {
53 33 }
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/EvalPoolController.java
... ... @@ -9,6 +9,7 @@ import cn.fw.common.web.auth.annotation.CurrentUser;
9 9 import cn.fw.data.base.domain.common.Message;
10 10 import cn.fw.morax.common.utils.PublicUtil;
11 11 import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO;
  12 +import cn.fw.morax.domain.dto.eval.EvalUserRankDTO;
12 13 import cn.fw.morax.domain.dto.query.EvalPoolQueryDTO;
13 14 import cn.fw.morax.domain.enums.EvalScopeEnum;
14 15 import cn.fw.morax.domain.vo.EvalSelectorVO;
... ... @@ -24,6 +25,7 @@ import lombok.extern.slf4j.Slf4j;
24 25 import org.springframework.validation.annotation.Validated;
25 26 import org.springframework.web.bind.annotation.*;
26 27  
  28 +import javax.validation.Valid;
27 29 import javax.validation.constraints.NotNull;
28 30 import java.time.LocalDate;
29 31 import java.time.YearMonth;
... ... @@ -79,7 +81,8 @@ public class EvalPoolController {
79 81 @GetMapping("/staff-selector")
80 82 @IgnoreUserToken
81 83 @ControllerMethod("本月可查看的其他考评池选项")
82   - public Message<List<EvalSelectorVO>> evalPoolSelector(@CurrentUser LoginAuthBean user, Long userId, @RequestParam(required = false) YearMonth monthly) {
  84 + public Message<List<EvalSelectorVO>> evalPoolSelector(@CurrentUser LoginAuthBean user, Long userId,
  85 + @RequestParam(required = false) YearMonth monthly) {
83 86 if (Objects.isNull(monthly)) {
84 87 monthly = YearMonth.now();
85 88 }
... ... @@ -91,33 +94,28 @@ public class EvalPoolController {
91 94  
92 95 /**
93 96 * 考评详情查询 (查看自己考评详情)
94   - *
95   - * @param userId 用户id
96   - * @param monthly 月度
97   - * @return 绩效池详情
98   - * @ignoreParams userId
99 97 */
100 98 @GetMapping("/own-detail")
101 99 @ControllerMethod("考评详情查询")
102 100 public Message<List<EvalUserRankStageVO>> evalPoolOwnDetail(@CurrentUser Long userId,
103   - @RequestParam(required = false) YearMonth monthly) {
104   - if (Objects.isNull(monthly)) {
105   - monthly = YearMonth.now();
106   - }
107   - return success(evalGroupPoolService.queryUserPoolDetail(userId, monthly));
  101 + @Valid EvalUserRankDTO dto) {
  102 + dto.initMonthly();
  103 + dto.setUserId(userId);
  104 + return success(evalGroupPoolService.queryRankStagePools(dto));
108 105 }
109 106  
110 107 /**
111 108 * 考评详情查询 (查看他人考评详情)
112 109 *
113   - * @param evalPoolId 用户id
114   - * @return 绩效池详情
115   - * @ignoreParams userId
116 110 */
117   - @GetMapping("/staff")
  111 + @GetMapping("/detail")
118 112 @ControllerMethod("考评详情查询")
119   - public Message<EvalUserPoolVO> evalPoolDetail(@NotNull(message = "考评池id不能为空") Long evalPoolId) {
120   - return success(evalGroupPoolService.queryRankStagePools(evalPoolId));
  113 + public Message<List<EvalUserRankStageVO>> evalPoolDetail(@Valid EvalUserRankDTO dto) {
  114 + dto.initMonthly();
  115 + if (PublicUtil.isEmpty(dto.getUserId())) {
  116 + throw new BusinessException("人员信息不能为空");
  117 + }
  118 + return success(evalGroupPoolService.queryRankStagePools(dto));
121 119 }
122 120  
123 121 /**
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java
... ... @@ -7,6 +7,7 @@ import cn.fw.morax.common.utils.PublicUtil;
7 7 import cn.fw.morax.domain.db.eval.*;
8 8 import cn.fw.morax.domain.db.kpi.*;
9 9 import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO;
  10 +import cn.fw.morax.domain.dto.eval.EvalUserRankDTO;
10 11 import cn.fw.morax.domain.enums.*;
11 12 import cn.fw.morax.domain.vo.EvalSelectorVO;
12 13 import cn.fw.morax.domain.vo.SelectorVO;
... ... @@ -104,29 +105,38 @@ public class EvalGroupPoolService {
104 105 *
105 106 * @return
106 107 */
107   - public List<EvalUserRankStageVO> queryRankStagePools(final Long userId, final Long evalGroupRankId) {
108   -
  108 + public List<EvalUserRankStageVO> queryRankStagePools(EvalUserRankDTO dto) {
  109 + final Long userId = dto.getUserId();
  110 + final Long postId = dto.getPostId();
  111 + final Long shopId = dto.getShopId();
  112 + final Long evalGroupRankId = dto.getEvalGroupRankId();
109 113 List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery()
  114 + .eq(EvalUserPool::getPostId, postId)
  115 + .eq(EvalUserPool::getShopId, shopId)
110 116 .eq(EvalUserPool::getUserId, userId)
111 117 .eq(EvalUserPool::getEvalGroupRankId, evalGroupRankId)
112 118 .eq(EvalUserPool::getYn, Boolean.TRUE)
113 119 .orderByDesc(EvalUserPool::getScoreRatio)
114 120 );
115   - pools.stream().map(EvalUserPool::getE)
116   -
  121 + Map<Long, List<EvalUserPool>> stagePoolMap = pools.stream().collect(Collectors.groupingBy(EvalUserPool::getEvalGroupRankStageId));
  122 + List<Long> evalGroupRankStageIds = pools.stream().map(EvalUserPool::getEvalGroupRankStageId).collect(Collectors.toList());
117 123  
118 124 List<EvalGroupRankStage> stages = evalGroupRankStageService.list(Wrappers.<EvalGroupRankStage>lambdaQuery()
119   - .in(EvalGroupRankStage::getEvalGroupRankId, evalGroupRankId)
  125 + .in(EvalGroupRankStage::getId, evalGroupRankStageIds)
120 126 .eq(EvalGroupRankStage::getYn, Boolean.TRUE)
  127 + .orderByAsc(EvalGroupRankStage::getBeginTime)
121 128 );
122 129  
123   -
124   -
125   - EvalUserPool evalUserPool = evalUserPoolService.getById(poolId);
126   - if (PublicUtil.isEmpty(evalUserPool)) {
127   - return null;
  130 + List<EvalUserRankStageVO> stageVos = PublicUtil.copyList(stages, EvalUserRankStageVO.class);
  131 + for (EvalUserRankStageVO stageVO : stageVos) {
  132 + List<EvalUserPool> rankPools = stagePoolMap.get(stageVO.getId());
  133 + if (PublicUtil.isNotEmpty(rankPools)) {
  134 + EvalUserPool stagePool = rankPools.get(0);
  135 + EvalUserPoolVO evalUserPoolVO = PublicUtil.copy(stagePool, EvalUserPoolVO.class);
  136 + stageVO.setPool(evalUserPoolVO);
  137 + }
128 138 }
129   - return poolDetail(evalUserPool);
  139 + return stageVos;
130 140 }
131 141  
132 142 // /**
... ... @@ -376,7 +386,6 @@ public class EvalGroupPoolService {
376 386 if (PublicUtil.isEmpty(pool)) {
377 387 return null;
378 388 }
379   -// BV.notNull(pool, "考评池不存在");
380 389 Long userId = pool.getUserId();
381 390 return getHitIndicatorDetail(evalPoolId, EvalScopeEnum.STAFF, userId, evalGroupIndicatorId, dataDate);
382 391 }
... ...