diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalUserRankDTO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalUserRankDTO.java new file mode 100644 index 0000000..8e4351a --- /dev/null +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/eval/EvalUserRankDTO.java @@ -0,0 +1,62 @@ +package cn.fw.morax.domain.dto.eval; + +import cn.fw.morax.common.utils.PublicUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.time.LocalDate; +import java.time.YearMonth; + +/** + *

+ * 绩效组排名配置 + *

+ * + * @author jiangchao + * @since 2022-09-26 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EvalUserRankDTO { + + /** + * 用户id + */ +// @NotNull(message = "用户id不能为空") + private Long userId; + + /** + * 门店 + */ + @NotNull(message = "门店") + private Long shopId; + + /** + * 岗位 + */ + @NotNull(message = "岗位") + private Long postId; + + /** + * 考评排名组id + */ + @NotNull(message = "考评排名组id") + private Long evalGroupRankId; + + /** + * 月份 + */ + private YearMonth monthly; + + public void initMonthly() { + if (PublicUtil.isEmpty(this.monthly)) { + this.monthly = YearMonth.now(); + } + } + +} diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalSelectorVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalSelectorVO.java index 1c82322..f403c2e 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalSelectorVO.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalSelectorVO.java @@ -17,17 +17,8 @@ import java.util.List; */ @Data @EqualsAndHashCode -@Builder public class EvalSelectorVO { /** - * 岗位id - */ - private Long postId; - /** - * 门店id - */ - private Long shopId; - /** * 名称 */ private String name; @@ -37,17 +28,6 @@ public class EvalSelectorVO { */ private List ranks; - public static EvalSelectorVO whit(Long postId, Long shopId, String shopName, String postName) { - String name = shopName + - " (" + - postName + - ") "; - EvalSelectorVO vo = new EvalSelectorVO(); - vo.setShopId(shopId); - vo.setPostId(postId); - vo.setName(name); - return vo; - } public EvalSelectorVO() { } diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/EvalPoolController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/EvalPoolController.java index cae77ce..7f6d67b 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/EvalPoolController.java +++ b/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; import cn.fw.data.base.domain.common.Message; import cn.fw.morax.common.utils.PublicUtil; import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO; +import cn.fw.morax.domain.dto.eval.EvalUserRankDTO; import cn.fw.morax.domain.dto.query.EvalPoolQueryDTO; import cn.fw.morax.domain.enums.EvalScopeEnum; import cn.fw.morax.domain.vo.EvalSelectorVO; @@ -24,6 +25,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.time.LocalDate; import java.time.YearMonth; @@ -79,7 +81,8 @@ public class EvalPoolController { @GetMapping("/staff-selector") @IgnoreUserToken @ControllerMethod("本月可查看的其他考评池选项") - public Message> evalPoolSelector(@CurrentUser LoginAuthBean user, Long userId, @RequestParam(required = false) YearMonth monthly) { + public Message> evalPoolSelector(@CurrentUser LoginAuthBean user, Long userId, + @RequestParam(required = false) YearMonth monthly) { if (Objects.isNull(monthly)) { monthly = YearMonth.now(); } @@ -91,33 +94,28 @@ public class EvalPoolController { /** * 考评详情查询 (查看自己考评详情) - * - * @param userId 用户id - * @param monthly 月度 - * @return 绩效池详情 - * @ignoreParams userId */ @GetMapping("/own-detail") @ControllerMethod("考评详情查询") public Message> evalPoolOwnDetail(@CurrentUser Long userId, - @RequestParam(required = false) YearMonth monthly) { - if (Objects.isNull(monthly)) { - monthly = YearMonth.now(); - } - return success(evalGroupPoolService.queryUserPoolDetail(userId, monthly)); + @Valid EvalUserRankDTO dto) { + dto.initMonthly(); + dto.setUserId(userId); + return success(evalGroupPoolService.queryRankStagePools(dto)); } /** * 考评详情查询 (查看他人考评详情) * - * @param evalPoolId 用户id - * @return 绩效池详情 - * @ignoreParams userId */ - @GetMapping("/staff") + @GetMapping("/detail") @ControllerMethod("考评详情查询") - public Message evalPoolDetail(@NotNull(message = "考评池id不能为空") Long evalPoolId) { - return success(evalGroupPoolService.queryRankStagePools(evalPoolId)); + public Message> evalPoolDetail(@Valid EvalUserRankDTO dto) { + dto.initMonthly(); + if (PublicUtil.isEmpty(dto.getUserId())) { + throw new BusinessException("人员信息不能为空"); + } + return success(evalGroupPoolService.queryRankStagePools(dto)); } /** 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 684a0c3..d68ecc4 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 @@ -7,6 +7,7 @@ import cn.fw.morax.common.utils.PublicUtil; import cn.fw.morax.domain.db.eval.*; import cn.fw.morax.domain.db.kpi.*; import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO; +import cn.fw.morax.domain.dto.eval.EvalUserRankDTO; import cn.fw.morax.domain.enums.*; import cn.fw.morax.domain.vo.EvalSelectorVO; import cn.fw.morax.domain.vo.SelectorVO; @@ -104,29 +105,38 @@ public class EvalGroupPoolService { * * @return */ - public List queryRankStagePools(final Long userId, final Long evalGroupRankId) { - + public List queryRankStagePools(EvalUserRankDTO dto) { + final Long userId = dto.getUserId(); + final Long postId = dto.getPostId(); + final Long shopId = dto.getShopId(); + final Long evalGroupRankId = dto.getEvalGroupRankId(); List pools = evalUserPoolService.list(Wrappers.lambdaQuery() + .eq(EvalUserPool::getPostId, postId) + .eq(EvalUserPool::getShopId, shopId) .eq(EvalUserPool::getUserId, userId) .eq(EvalUserPool::getEvalGroupRankId, evalGroupRankId) .eq(EvalUserPool::getYn, Boolean.TRUE) .orderByDesc(EvalUserPool::getScoreRatio) ); - pools.stream().map(EvalUserPool::getE) - + Map> stagePoolMap = pools.stream().collect(Collectors.groupingBy(EvalUserPool::getEvalGroupRankStageId)); + List evalGroupRankStageIds = pools.stream().map(EvalUserPool::getEvalGroupRankStageId).collect(Collectors.toList()); List stages = evalGroupRankStageService.list(Wrappers.lambdaQuery() - .in(EvalGroupRankStage::getEvalGroupRankId, evalGroupRankId) + .in(EvalGroupRankStage::getId, evalGroupRankStageIds) .eq(EvalGroupRankStage::getYn, Boolean.TRUE) + .orderByAsc(EvalGroupRankStage::getBeginTime) ); - - - EvalUserPool evalUserPool = evalUserPoolService.getById(poolId); - if (PublicUtil.isEmpty(evalUserPool)) { - return null; + List stageVos = PublicUtil.copyList(stages, EvalUserRankStageVO.class); + for (EvalUserRankStageVO stageVO : stageVos) { + List rankPools = stagePoolMap.get(stageVO.getId()); + if (PublicUtil.isNotEmpty(rankPools)) { + EvalUserPool stagePool = rankPools.get(0); + EvalUserPoolVO evalUserPoolVO = PublicUtil.copy(stagePool, EvalUserPoolVO.class); + stageVO.setPool(evalUserPoolVO); + } } - return poolDetail(evalUserPool); + return stageVos; } // /** @@ -376,7 +386,6 @@ public class EvalGroupPoolService { if (PublicUtil.isEmpty(pool)) { return null; } -// BV.notNull(pool, "考评池不存在"); Long userId = pool.getUserId(); return getHitIndicatorDetail(evalPoolId, EvalScopeEnum.STAFF, userId, evalGroupIndicatorId, dataDate); }