diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupUserMapper.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupUserMapper.xml index 868f973..3ebaa3c 100644 --- a/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupUserMapper.xml +++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalGroupUserMapper.xml @@ -3,7 +3,7 @@ - id, egc, eval_id, eval_group_id, user_id, user_name, post_id, post_name, shop_id, + id, eval_group_rank_id, eval_group_rank_stage_id, eval_group_id, user_id, user_name, post_id, post_name, shop_id, shop_name, ignored, ignore_cause, ignore_cause_desc, anticipated_date, remark, data_date, group_id, yn, create_time, update_time diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java index a8e95f7..14c59e1 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java @@ -91,6 +91,11 @@ public class EvalGroupUserShop { private BigDecimal reward; /** + * 是否计不入考评考核 + */ + private Boolean ignored; + + /** * 指标总分 */ private BigDecimal indicatorTotalScore; diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorParam.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorParam.java index f276746..320d73d 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorParam.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorParam.java @@ -113,7 +113,7 @@ public class EvalGroupIndicatorParam extends BaseAuditableTimeEntity + * 绩效组排名配置 + *

+ * + * @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/EvalPoolVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalPoolVO.java new file mode 100644 index 0000000..4a01a9c --- /dev/null +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalPoolVO.java @@ -0,0 +1,36 @@ +package cn.fw.morax.domain.vo; + +import lombok.Data; + +import java.util.List; + +/** + * @author jiangchao + * @des: + * @date 2023/5/22 11:35 + */ +@Data +public class EvalPoolVO { + + /** + * 用户id + */ + private Long userId; + /** + * 用户名称 + */ + private String userName; + /** + * 考评选择 + */ + private List evalSelectors; + + public EvalPoolVO() { + } + + public EvalPoolVO(Long userId, String userName, List evalSelectors) { + this.userId = userId; + this.userName = userName; + this.evalSelectors = evalSelectors; + } +} 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 new file mode 100644 index 0000000..3d5518f --- /dev/null +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/EvalSelectorVO.java @@ -0,0 +1,52 @@ +package cn.fw.morax.domain.vo; + +import cn.fw.morax.domain.vo.eval.EvalUserGroupRankVO; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +/** + * @author : kurisu + * @version : 1.0 + * @className : SelectorVO + * @description : 绩效\薪酬池选项 + * @date : 2022-05-06 11:23 + */ +@Data +@EqualsAndHashCode +public class EvalSelectorVO { + /** + * 名称 + */ + private String name; + + /** + * 门店 + */ + @NotNull(message = "门店") + private Long shopId; + + /** + * 岗位 + */ + @NotNull(message = "岗位") + private Long postId; + + /** + * 排名 + */ + private List ranks; + + + public EvalSelectorVO() { + } + + public EvalSelectorVO(String name, List ranks) { + this.name = name; + this.ranks = ranks; + } +} diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalUserGroupRankVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalUserGroupRankVO.java new file mode 100644 index 0000000..92c4b9c --- /dev/null +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalUserGroupRankVO.java @@ -0,0 +1,64 @@ +package cn.fw.morax.domain.vo.eval; + +import cn.fw.morax.common.constant.Constant; +import cn.fw.morax.common.utils.PublicUtil; +import cn.fw.morax.domain.enums.EvalTypeEnum; +import cn.fw.morax.domain.enums.KpiIgnoreCauseEnum; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.YearMonth; +import java.util.List; + +/** + *

+ * 考评池 + *

+ * + * @author jiangchao + * @since 2022-12-09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class EvalUserGroupRankVO { + + private static final long serialVersionUID = 1L; + + /** + * 考评排名组id + */ + private Long id; + + /** + * 考评组编码 + */ + private String evalGroupRankName; + + /** + * 考评组id + */ + private Long evalGroupRankId; + + /** + * 考评得分率 + */ + private BigDecimal scoreRatio; + /** + * 奖惩 + */ + private BigDecimal reward; + + /** + * 考评得分率(格式化) + */ + private String scoreRatioFormat; + + + public void convertScoreRatio() { + if (PublicUtil.isNotEmpty(this.getScoreRatio())) { + this.setScoreRatio(this.getScoreRatio().multiply(Constant.ONE_HUNDRED)); + } + } +} diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalUserRankStageVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalUserRankStageVO.java new file mode 100644 index 0000000..ca7da90 --- /dev/null +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalUserRankStageVO.java @@ -0,0 +1,51 @@ +package cn.fw.morax.domain.vo.eval; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; +import java.util.List; + +/** + *

+ * 考评组 + *

+ * + * @author jiangchao + * @since 2022-12-09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +public class EvalUserRankStageVO { + + /** + * 主键id + */ + private Long id; + /** + * 阶段名称 + */ + private String name; + + /** + * 考评排名组id + */ + private Long evalGroupRankId; + + /** + * 生效时间 + */ + private LocalDate beginTime; + + /** + * 结束时间 + */ + private LocalDate overTime; + + /** + * 考评池 + */ + private EvalUserPoolVO pool; + + +} 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 9f03c0d..bfef4a8 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,9 +9,11 @@ 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.SelectorVO; +import cn.fw.morax.domain.vo.EvalPoolVO; +import cn.fw.morax.domain.vo.EvalSelectorVO; import cn.fw.morax.domain.vo.eval.*; import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankVO; import cn.fw.morax.service.biz.eval.*; @@ -24,12 +26,12 @@ 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; import java.util.List; import java.util.Objects; -import java.util.Set; import static cn.fw.common.businessvalidator.Validator.BV; import static cn.fw.common.web.util.ResultBuilder.success; @@ -69,6 +71,23 @@ public class EvalPoolController { } /** + * 人员信息 + * + * @return + * @ignoreParams currentUser + */ + @GetMapping("/staff-info") + @ControllerMethod("人员信息") + public Message queryUser(@CurrentUser LoginAuthBean user) { + EvalUserPoolVO poolVO = new EvalUserPoolVO(); + if (PublicUtil.isNotEmpty(user)) { + poolVO.setUserId(user.getUserId()); + poolVO.setUserName(user.getUserName()); + } + return success(poolVO); + } + + /** * 本月可查看的其他考评池选项 * * @param user 用户id @@ -80,7 +99,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(); } @@ -92,33 +112,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)); + public Message> evalPoolOwnDetail(@CurrentUser Long userId, + @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.queryPoolDetail(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-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java b/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java index 8a00616..8b21b28 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java +++ b/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; import cn.fw.morax.rpc.ehr.dto.PerformanceStaffDTO; import cn.fw.morax.server.consumer.FlowConsumer; import cn.fw.morax.server.task.*; +import cn.fw.morax.service.biz.eval.EvalCalculateService; import cn.fw.security.auth.client.annotation.Authorization; import cn.fw.security.auth.client.enums.AuthType; import lombok.RequiredArgsConstructor; @@ -18,6 +19,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.time.LocalDate; import java.util.Date; import java.util.List; @@ -42,18 +44,23 @@ public class EvalTaskController { private final EvalCalcTask evalCalcTask; private final EvalGroupTask evalGroupTask; private final EvalGroupUserTask evalGroupUserTask; + private final EvalCalculateService evalCalculateService; @GetMapping("/group-user") @ControllerMethod("考评组人员") - public Message processEvalUser() { + public Message processEvalUser(Date date) { evalGroupUserTask.processEvalUser(); return success(); } @GetMapping("/calc-cache") @ControllerMethod("缓存要计算的考评") - public Message cacheCalculableEvalGroup() { - evalCalcTask.cacheCalculableEvalGroup(); + public Message cacheCalculableEvalGroup(Date date) { + if (PublicUtil.isEmpty(date)) { + evalCalculateService.cacheCalculableEvalGroupIds(LocalDate.now().minusDays(1L)); + } else { + evalCalculateService.cacheCalculableEvalGroupIds(DateUtil.date2LocalDate(date)); + } return success(); } diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java index 92bf172..32278bb 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java @@ -97,7 +97,7 @@ public class EvalGroupUserTask { * @return */ private List queryKpiStaff(LocalDate yesterday) { - List evalGroups = evalGroupUserBizService.postEffectEvalGroups(); + List evalGroups = evalGroupUserBizService.postEffectEvalGroups(yesterday); if (! evalGroups.isEmpty()) { log.info("需要生成考评组人员的考评组:{}", evalGroups); } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java index abe5972..ea996a6 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java @@ -239,10 +239,11 @@ public class EvalCalculateService { if (userShop.getIndicatorTotalScore().compareTo(BigDecimal.ZERO) > 0) { scoreRatio = userShop.getScore().divide(userShop.getIndicatorTotalScore(), 2, RoundingMode.DOWN); } + BigDecimal reward = (Boolean.TRUE.equals(userShop.getIgnored())) ? BigDecimal.ZERO : userShop.getReward(); evalUserPoolService.update(Wrappers.lambdaUpdate() .eq(EvalUserPool::getId, userShop.getPoolId()) .eq(EvalUserPool::getYn, Boolean.TRUE) - .set(EvalUserPool::getReward, userShop.getReward()) + .set(EvalUserPool::getReward, reward) .set(EvalUserPool::getScore, userShop.getScore()) .set(EvalUserPool::getScoreRatio, scoreRatio) .set(EvalUserPool::getMonthly, YearMonth.from(localDate)) @@ -281,9 +282,9 @@ public class EvalCalculateService { Map userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, evalGroupRankStage, users, localDate); for (EvalGroupUser user : users) { - if (Boolean.TRUE.equals(user.getIgnored())) { - continue; - } +// if (Boolean.TRUE.equals(user.getIgnored())) { +// continue; +// } EvalUserPool userPool = userPoolMap.get(user.getUserId()); userShops.add(convertBO(user, userPool)); } @@ -638,6 +639,7 @@ public class EvalCalculateService { userShop.setGroupId(user.getGroupId()); userShop.setScore(BigDecimal.ZERO); userShop.setReward(BigDecimal.ZERO); + userShop.setIgnored(user.getIgnored()); return userShop; } 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 45efe73..9843458 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,7 +7,10 @@ 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.EvalPoolVO; +import cn.fw.morax.domain.vo.EvalSelectorVO; import cn.fw.morax.domain.vo.SelectorVO; import cn.fw.morax.domain.vo.eval.*; import cn.fw.morax.domain.vo.kpi.IndicatorUserValueVO; @@ -60,6 +63,8 @@ public class EvalGroupPoolService { private final EvalIndicatorValueService evalIndicatorValueService; private final EvalGroupUserService evalGroupUserService; private final EvalGroupRewardService evalGroupRewardService; + private final EvalGroupRankStageService evalGroupRankStageService; + private final EvalGroupRankService evalGroupRankService; private final EvalGroupService evalGroupService; private final EvalUserPoolService evalUserPoolService; private final EvalShopPoolService evalShopPoolService; @@ -101,31 +106,38 @@ public class EvalGroupPoolService { * * @return */ - public EvalUserPoolVO queryPoolDetail(final Long poolId) { - EvalUserPool evalUserPool = evalUserPoolService.getById(poolId); - if (PublicUtil.isEmpty(evalUserPool)) { -// throw new BusinessException("人员考评数据不存在"); - return null; - } - return poolDetail(evalUserPool); - } + 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) + ); + Map> stagePoolMap = pools.stream().collect(Collectors.groupingBy(EvalUserPool::getEvalGroupRankStageId)); + List evalGroupRankStageIds = pools.stream().map(EvalUserPool::getEvalGroupRankStageId).collect(Collectors.toList()); - /** - * 查询考评详情 - * - * @param userId - * @param yearMonth - * @return - */ - public EvalUserPoolVO queryUserPoolDetail(final Long userId, final YearMonth yearMonth) { - List pools = userEvalPool(userId, yearMonth); + List stages = evalGroupRankStageService.list(Wrappers.lambdaQuery() + .in(EvalGroupRankStage::getId, evalGroupRankStageIds) + .eq(EvalGroupRankStage::getYn, Boolean.TRUE) + .orderByAsc(EvalGroupRankStage::getBeginTime) + ); - if (PublicUtil.isEmpty(pools)) { -// throw new BusinessException("人员考评数据不存在"); - 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 = this.poolDetail(stagePool); + stageVO.setPool(evalUserPoolVO); + } } - EvalUserPool evalUserPool = pools.get(0); - return poolDetail(evalUserPool); + return stageVos; } public EvalUserPoolVO poolDetail(EvalUserPool pool) { @@ -139,12 +151,6 @@ public class EvalGroupPoolService { this.setIgnore(evalUserPoolVO); evalUserPoolVO.setDataDate(localDate); -// Eval eval = evalService.getById(pool.getEvalId()); -// BV.notNull(pool, "考评池不存在"); -// if (PublicUtil.isNotEmpty(eval)) { -// evalUserPoolVO.setEvalType(eval.getType()); -// } - return evalUserPoolVO; } @@ -256,14 +262,73 @@ public class EvalGroupPoolService { * @param yearMonth * @return */ - public Set evalPoolSelector(Long userId, YearMonth yearMonth) { + public EvalPoolVO evalPoolSelector(Long userId, YearMonth yearMonth) { List pools = userEvalPool(userId, yearMonth); if (CollectionUtils.isEmpty(pools)) { - return new HashSet<>(); + return null; + } + String userName = pools.stream().findFirst().map(EvalUserPool::getUserName).orElse(""); + List selectors = new ArrayList<>(); + EvalPoolVO evalPoolVO = new EvalPoolVO(userId, userName, selectors); + Map rankNameMap = this.getRankNameMap(pools); + Map> shopPostMap = pools.stream().collect(Collectors.groupingBy(pool -> pool.getShopName() + "(" + pool.getPostName() + ")")); + //门店、岗位维度 + for (Map.Entry> shopPostEntry : shopPostMap.entrySet()) { + List ranks = new ArrayList<>(); + List shopPostPools = shopPostEntry.getValue(); + Long shopId = shopPostPools.stream().findFirst().map(EvalUserPool::getShopId).get(); + Long postId = shopPostPools.stream().findFirst().map(EvalUserPool::getPostId).get(); + Map> rankPools = shopPostPools.stream().collect(Collectors.groupingBy(EvalUserPool::getEvalGroupRankId)); + //排名维度 + for (Map.Entry> rankEntry : rankPools.entrySet()) { + List userRankPools = rankEntry.getValue(); + double averageKpiScoreRatio = userRankPools.stream() + .mapToDouble(r -> Optional.ofNullable(r.getScoreRatio()).orElse(BigDecimal.ZERO).doubleValue()) + .average() + .orElse(0); + BigDecimal reward = userRankPools.stream().map(EvalUserPool::getReward).reduce(BigDecimal.ZERO, BigDecimal::add); + EvalUserGroupRankVO rank = new EvalUserGroupRankVO(); + rank.setEvalGroupRankName(rankNameMap.getOrDefault(rankEntry.getKey(), "")); + rank.setScoreRatio(new BigDecimal(averageKpiScoreRatio).multiply(Constant.ONE_HUNDRED)); + rank.setReward(reward); + rank.setEvalGroupRankId(rankEntry.getKey()); + ranks.add(rank); + } + EvalSelectorVO evalSelectorVO = new EvalSelectorVO(shopPostEntry.getKey(), ranks); + evalSelectorVO.setShopId(shopId); + evalSelectorVO.setPostId(postId); + selectors.add(evalSelectorVO); } - return pools.stream().map(r -> SelectorVO.whit(r.getId(), r.getPostName(), r.getShopName() + "")).collect(Collectors.toSet()); + return evalPoolVO; } + public Map getRankNameMap(List pools) { + List evalGroupRankIds = pools.stream().map(EvalUserPool::getEvalGroupRankId).distinct().collect(Collectors.toList()); + List evalGroupRanks = evalGroupRankService.list(Wrappers.lambdaQuery() + .in(EvalGroupRank::getId, evalGroupRankIds) + .eq(EvalGroupRank::getYn, Boolean.TRUE) + ); + if (PublicUtil.isEmpty(evalGroupRanks)) { + return new HashMap<>(); + } + return evalGroupRanks.stream().collect(Collectors.toMap(EvalGroupRank::getId, EvalGroupRank::getName, (v1, v2) -> v1)); + } + + /** + * 查询用户绩效池 + * + * @param userId + * @param yearMonth + * @return + */ +// public Set evalPoolSelector(Long userId, YearMonth yearMonth) { +// List pools = userEvalPool(userId, yearMonth); +// if (CollectionUtils.isEmpty(pools)) { +// return new HashSet<>(); +// } +// return pools.stream().map(r -> SelectorVO.whit(r.getId(), r.getPostName(), r.getShopName() + "")).collect(Collectors.toSet()); +// } + /** * 查询用户月度绩效池列表 @@ -308,7 +373,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); } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java index 8dd687f..ea5ff9c 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java @@ -53,14 +53,16 @@ public class EvalGroupUserBizService { /** * 所有集团生效的绩效组配置 */ - public List postEffectEvalGroups(){ - LocalDate queryDate = LocalDate.now().minusDays(1L); + public List postEffectEvalGroups(LocalDate queryDate){ List evalGroups = evalGroupService.getAllEffectGroups(queryDate); if (PublicUtil.isEmpty(evalGroups)) { log.info("时间:{},没有正在生效中的考评组配置", DateTimeFormatter.ofPattern("yyyy-MM-dd").format(queryDate)); return new ArrayList<>(); } - return evalGroups; + //过滤岗位为空考评组 + List postEvalGroups = evalGroups.stream() + .filter(evalGroup -> PublicUtil.isNotEmpty(evalGroup.getPostIds())).collect(Collectors.toList()); + return postEvalGroups; } /**