Commit 9161579f525cdadba9d0e47d37ef1f04ab1f7f4c

Authored by 姜超
1 parent c4a10f17

feature(*): 排名返回名称

排名返回名称
doc/2023_update.sql
... ... @@ -4,6 +4,7 @@ ALTER TABLE `fw_morax`.`eval_group_reward_ladders`
4 4  
5 5 CREATE TABLE `eval_group_reward_rank_log` (
6 6 `id` bigint(20) NOT NULL AUTO_INCREMENT,
  7 + `name` varchar(512) NOT NULL COMMENT '名称',
7 8 `pool_id` bigint(20) DEFAULT NULL COMMENT '人员id 、门店id',
8 9 `scope_type` tinyint(4) NOT NULL COMMENT '考评范围; 1:门店考评 2:人员考评',
9 10 `refer_id` bigint(20) DEFAULT NULL COMMENT '考评奖惩 前置条件 配置id',
... ... @@ -11,6 +12,7 @@ CREATE TABLE `eval_group_reward_rank_log` (
11 12 `value` decimal(18,4) DEFAULT NULL COMMENT '原始值',
12 13 `reach_value` decimal(18,4) DEFAULT NULL COMMENT '达成目标',
13 14 `rank` int(10) DEFAULT NULL COMMENT '排名',
  15 + `hit` tinyint(1) DEFAULT NULL COMMENT '是否命中',
14 16 `data_date` date NOT NULL COMMENT '数据日期',
15 17 `group_id` bigint(20) NOT NULL COMMENT '集团',
16 18 `create_time` datetime DEFAULT NULL,
... ...
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRewardHitLogDao.java
... ... @@ -2,7 +2,12 @@ package cn.fw.morax.dao.eval;
2 2  
3 3  
4 4 import cn.fw.morax.domain.db.eval.EvalGroupRewardHitLog;
  5 +import cn.fw.morax.domain.vo.eval.EvalGroupRewardHitLogVO;
5 6 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  7 +import org.apache.ibatis.annotations.Param;
  8 +
  9 +import java.time.LocalDate;
  10 +import java.util.List;
6 11  
7 12 /**
8 13 * <p>
... ... @@ -14,4 +19,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
14 19 */
15 20 public interface EvalGroupRewardHitLogDao extends BaseMapper<EvalGroupRewardHitLog> {
16 21  
  22 + List<EvalGroupRewardHitLogVO> getUserHitLogs(@Param("evalGroupRewardId")Long evalGroupRewardId, @Param("dataDate")LocalDate dataDate);
  23 +
  24 + List<EvalGroupRewardHitLogVO> getShopHitLogs(@Param("evalGroupRewardId")Long evalGroupRewardId, @Param("dataDate")LocalDate dataDate);
  25 +
17 26 }
... ...
fw-morax-dao/src/main/resources/mapper/eval/EvalGroupRewardHitLogMapper.xml
... ... @@ -2,6 +2,50 @@
2 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3 <mapper namespace="cn.fw.morax.dao.eval.EvalGroupRewardHitLogDao">
4 4  
  5 + <select id="getUserHitLogs" resultType="cn.fw.morax.domain.vo.eval.EvalGroupRewardHitLogVO">
  6 + SELECT
  7 + t1.id,
  8 + t1.pool_id,
  9 + t1.eval_group_reward_id,
  10 + t1.eval_group_reward_ladders_id,
  11 + t1.scope_type,
  12 + t1.reward_value,
  13 + t1.hit_ladder_value,
  14 + t1.hit_commission_value,
  15 + t1.proportion_value,
  16 + t1.data_date,
  17 + t1.group_id,
  18 + t2.name
  19 + FROM
  20 + eval_group_reward_hit_log t1
  21 + LEFT JOIN eval_user_pool t2 ON t1.pool_id = t2.id
  22 + WHERE
  23 + t1.eval_group_reward_id = #{evalGroupRewardId}
  24 + AND t1.data_date = #{dataDate}
  25 + AND t1.yn = 1
  26 + </select>
5 27  
  28 + <select id="getShopHitLogs" resultType="cn.fw.morax.domain.vo.eval.EvalGroupRewardHitLogVO">
  29 + SELECT
  30 + t1.id,
  31 + t1.pool_id,
  32 + t1.eval_group_reward_id,
  33 + t1.eval_group_reward_ladders_id,
  34 + t1.scope_type,
  35 + t1.reward_value,
  36 + t1.hit_ladder_value,
  37 + t1.hit_commission_value,
  38 + t1.proportion_value,
  39 + t1.data_date,
  40 + t1.group_id,
  41 + t2.name
  42 + FROM
  43 + eval_group_reward_hit_log t1
  44 + LEFT JOIN eval_user_pool t2 ON t1.pool_id = t2.id
  45 + WHERE
  46 + t1.eval_group_reward_id = #{evalGroupRewardId}
  47 + AND t1.data_date = #{dataDate}
  48 + AND t1.yn = 1
  49 + </select>
6 50  
7 51 </mapper>
8 52 \ No newline at end of file
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java
... ... @@ -48,6 +48,11 @@ public class EvalGroupUserShop {
48 48 private Long poolId;
49 49  
50 50 /**
  51 + * 名称
  52 + */
  53 + private String name;
  54 +
  55 + /**
51 56 * 用户id、门店id
52 57 */
53 58 private Long referId;
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupRewardRankLog.java
... ... @@ -41,6 +41,11 @@ public class EvalGroupRewardRankLog extends BaseAuditableTimeEntity&lt;EvalGroupRew
41 41 private EvalScopeEnum scopeType;
42 42  
43 43 /**
  44 + * 名称
  45 + */
  46 + private String name;
  47 +
  48 + /**
44 49 * 考评奖惩 前置条件 配置id
45 50 */
46 51 private Long referId;
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardHitLogVO.java
1 1 package cn.fw.morax.domain.vo.eval;
2 2  
3   -import cn.fw.common.data.entity.BaseAuditableTimeEntity;
  3 +import cn.fw.morax.common.constant.Constant;
  4 +import cn.fw.morax.domain.enums.DataTypeEnum;
4 5 import cn.fw.morax.domain.enums.EvalScopeEnum;
5   -import com.baomidou.mybatisplus.annotation.TableName;
6   -import lombok.*;
  6 +import cn.fw.morax.domain.enums.TargetTypeEnum;
  7 +import lombok.Data;
7 8  
8 9 import java.math.BigDecimal;
9 10 import java.time.LocalDate;
... ... @@ -24,6 +25,10 @@ public class EvalGroupRewardHitLogVO {
24 25 */
25 26 private Long id;
26 27 /**
  28 + * 名称
  29 + */
  30 + private String name;
  31 + /**
27 32 * 员工id
28 33 */
29 34 private Long poolId;
... ... @@ -68,4 +73,14 @@ public class EvalGroupRewardHitLogVO {
68 73 * 逻辑删除
69 74 */
70 75 private Boolean yn;
  76 +
  77 +
  78 + /**
  79 + * 转换为百分数展示
  80 + */
  81 + public void convertValueToPercent(){
  82 + this.setProportionValue(this.getProportionValue().multiply(Constant.ONE_HUNDRED));
  83 + }
  84 +
  85 +
71 86 }
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardRankLogVO.java
... ... @@ -31,6 +31,11 @@ public class EvalGroupRewardRankLogVO {
31 31 private Long id;
32 32  
33 33 /**
  34 + * 名称
  35 + */
  36 + private String name;
  37 +
  38 + /**
34 39 * 员工id
35 40 */
36 41 private Long poolId;
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/EvalPoolController.java
... ... @@ -14,7 +14,6 @@ import cn.fw.morax.domain.enums.EvalScopeEnum;
14 14 import cn.fw.morax.domain.vo.SelectorVO;
15 15 import cn.fw.morax.domain.vo.eval.*;
16 16 import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankVO;
17   -import cn.fw.morax.service.biz.SettingDraftBizService;
18 17 import cn.fw.morax.service.biz.eval.*;
19 18 import cn.fw.security.auth.client.annotation.Authorization;
20 19 import cn.fw.security.auth.client.annotation.IgnoreAuth;
... ... @@ -28,9 +27,6 @@ import org.springframework.web.bind.annotation.*;
28 27 import javax.validation.constraints.NotNull;
29 28 import java.time.LocalDate;
30 29 import java.time.YearMonth;
31   -import java.time.temporal.ChronoField;
32   -import java.time.temporal.TemporalAdjuster;
33   -import java.time.temporal.TemporalAdjusters;
34 30 import java.util.List;
35 31 import java.util.Objects;
36 32 import java.util.Set;
... ... @@ -234,12 +230,16 @@ public class EvalPoolController {
234 230 */
235 231 @GetMapping("/reward-proportion")
236 232 @ControllerMethod("门店、人员考评奖惩占比")
237   - public Message<List<EvalGroupRewardHitLogVO>> queryRewardProportion(Long evalGroupRewardId,
  233 + public Message<List<EvalGroupRewardHitLogVO>> queryUserRewardProportion(@NotNull(message = "奖惩id不能为空") Long evalGroupRewardId,
  234 + @NotNull(message = "类型不能为空") Integer scopeType,
238 235 @NotNull(message = "日期不能为空") @RequestParam("dataDate") LocalDate dataDate) {
239   - return success(evalGroupPoolService.queryRewardProportion(evalGroupRewardId, dataDate));
  236 + EvalScopeEnum scopeTypeEnum = EvalScopeEnum.ofValue(scopeType);
  237 + BV.notNull(scopeTypeEnum, "参数错误");
  238 + return success(evalGroupPoolService.queryRewardProportion(scopeTypeEnum, evalGroupRewardId, dataDate));
240 239 }
241 240  
242 241  
  242 +
243 243 /**
244 244 * 门店考评池列表
245 245 *
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardBaseCalculator.java
... ... @@ -468,6 +468,7 @@ public abstract class EvalRewardBaseCalculator implements Calculator&lt;EvalGroupUs
468 468 }
469 469 EvalGroupRewardRankLog rankLog = EvalGroupRewardRankLog.builder()
470 470 .poolId(userShop.getPoolId())
  471 + .name(userShop.getName())
471 472 .scopeType(userShop.getScopeType())
472 473 .referId(evalGroupRewardId)
473 474 .targetType(RankIndicatorTypeEnum.REWARD_COMMISSION)
... ... @@ -505,6 +506,7 @@ public abstract class EvalRewardBaseCalculator implements Calculator&lt;EvalGroupUs
505 506 }
506 507  
507 508 EvalGroupRewardRankLog rankLog = EvalGroupRewardRankLog.builder()
  509 + .name(userShop.getName())
508 510 .poolId(userShop.getPoolId())
509 511 .scopeType(userShop.getScopeType())
510 512 .referId(preconditionId)
... ... @@ -540,7 +542,7 @@ public abstract class EvalRewardBaseCalculator implements Calculator&lt;EvalGroupUs
540 542 return;
541 543 }
542 544 evalGroupRewardRankLogService.update(Wrappers.<EvalGroupRewardRankLog>lambdaUpdate()
543   - .eq(EvalGroupRewardRankLog::getId, matchRankLogs.stream().map(EvalGroupRewardRankLog::getId).collect(Collectors.toList()))
  545 + .in(EvalGroupRewardRankLog::getId, matchRankLogs.stream().map(EvalGroupRewardRankLog::getId).collect(Collectors.toList()))
544 546 .set(EvalGroupRewardRankLog::getHit, Boolean.TRUE)
545 547 );
546 548 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java
... ... @@ -413,6 +413,7 @@ public class EvalCalculateService {
413 413  
414 414 public EvalGroupUserShop convertBO(EvalGroupUser user, EvalUserPool userPool) {
415 415 EvalGroupUserShop userShop = new EvalGroupUserShop();
  416 + userShop.setName(user.getUserName());
416 417 userShop.setScopeType(EvalScopeEnum.STAFF);
417 418 userShop.setEvalGroupId(user.getEvalGroupId());
418 419 userShop.setPoolId(userPool.getId());
... ... @@ -426,6 +427,7 @@ public class EvalCalculateService {
426 427  
427 428 public EvalGroupUserShop convertBO(EvalShopPool shopPool, EvalGroup evalGroup, LocalDate dataDate) {
428 429 EvalGroupUserShop userShop = new EvalGroupUserShop();
  430 + userShop.setName(shopPool.getShopName());
429 431 userShop.setReferId(shopPool.getShopId());
430 432 userShop.setPoolId(shopPool.getId());
431 433 userShop.setScopeType(EvalScopeEnum.SHOP);
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java
... ... @@ -65,6 +65,8 @@ public class EvalGroupPoolService {
65 65 private final IndicatorUserValueService indicatorUserValueService;
66 66 private final EvalIndicatorValueService evalIndicatorValueService;
67 67 private final EvalGroupUserService evalGroupUserService;
  68 + private final EvalGroupRewardService evalGroupRewardService;
  69 + private final EvalGroupService evalGroupService;
68 70 private final EvalUserPoolService evalUserPoolService;
69 71 private final EvalShopPoolService evalShopPoolService;
70 72 private final CommonService commonService;
... ... @@ -1258,12 +1260,14 @@ public class EvalGroupPoolService {
1258 1260 return rankLogVOs;
1259 1261 }
1260 1262  
1261   - public List<EvalGroupRewardHitLogVO> queryRewardProportion(Long evalGroupRewardId, LocalDate dataDate) {
1262   - List<EvalGroupRewardHitLog> rewardHitLogs = evalGroupRewardHitLogService.list(Wrappers.<EvalGroupRewardHitLog>lambdaQuery()
1263   - .eq(EvalGroupRewardHitLog::getEvalGroupRewardId, evalGroupRewardId)
1264   - .eq(EvalGroupRewardHitLog::getDataDate, dataDate)
1265   - );
1266   - List<EvalGroupRewardHitLogVO> hitLogVOS = PublicUtil.copyList(rewardHitLogs, EvalGroupRewardHitLogVO.class);
  1263 + public List<EvalGroupRewardHitLogVO> queryRewardProportion(EvalScopeEnum scopeType, Long evalGroupRewardId, LocalDate dataDate) {
  1264 + List<EvalGroupRewardHitLogVO> hitLogVOS = null;
  1265 + if (EvalScopeEnum.STAFF.equals(scopeType)) {
  1266 + hitLogVOS = evalGroupRewardHitLogService.getUserHitLogs(evalGroupRewardId, dataDate);
  1267 + } else {
  1268 + hitLogVOS = evalGroupRewardHitLogService.getShopHitLogs(evalGroupRewardId, dataDate);
  1269 + }
  1270 + hitLogVOS.stream().forEach(hitLog -> hitLog.convertValueToPercent());
1267 1271 return hitLogVOS;
1268 1272 }
1269 1273 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalGroupRewardHitLogService.java
... ... @@ -3,8 +3,12 @@ package cn.fw.morax.service.data.eval;
3 3  
4 4 import cn.fw.morax.domain.db.eval.EvalGroupReward;
5 5 import cn.fw.morax.domain.db.eval.EvalGroupRewardHitLog;
  6 +import cn.fw.morax.domain.vo.eval.EvalGroupRewardHitLogVO;
6 7 import com.baomidou.mybatisplus.extension.service.IService;
7 8  
  9 +import java.time.LocalDate;
  10 +import java.util.List;
  11 +
8 12 /**
9 13 * <p>
10 14 * 考评奖惩 服务类
... ... @@ -15,4 +19,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
15 19 */
16 20 public interface EvalGroupRewardHitLogService extends IService<EvalGroupRewardHitLog> {
17 21  
  22 + List<EvalGroupRewardHitLogVO> getUserHitLogs(Long evalGroupRewardId, LocalDate dataDate);
  23 +
  24 + List<EvalGroupRewardHitLogVO> getShopHitLogs(Long evalGroupRewardId, LocalDate dataDate);
  25 +
18 26 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupRewardHitLogServiceImpl.java
... ... @@ -5,11 +5,15 @@ import cn.fw.morax.dao.eval.EvalGroupRewardHitLogDao;
5 5 import cn.fw.morax.dao.eval.EvalGroupRewardTargetHitLogDao;
6 6 import cn.fw.morax.domain.db.eval.EvalGroupRewardHitLog;
7 7 import cn.fw.morax.domain.db.eval.EvalGroupRewardTargetHitLog;
  8 +import cn.fw.morax.domain.vo.eval.EvalGroupRewardHitLogVO;
8 9 import cn.fw.morax.service.data.eval.EvalGroupRewardHitLogService;
9 10 import cn.fw.morax.service.data.eval.EvalGroupRewardTargetHitLogService;
10 11 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
11 12 import org.springframework.stereotype.Service;
12 13  
  14 +import java.time.LocalDate;
  15 +import java.util.List;
  16 +
13 17 /**
14 18 * <p>
15 19 * 考评指标达成目标记录 服务实现类
... ... @@ -23,4 +27,13 @@ public class EvalGroupRewardHitLogServiceImpl
23 27 extends ServiceImpl<EvalGroupRewardHitLogDao, EvalGroupRewardHitLog>
24 28 implements EvalGroupRewardHitLogService {
25 29  
  30 + @Override
  31 + public List<EvalGroupRewardHitLogVO> getUserHitLogs(Long evalGroupRewardId, LocalDate dataDate) {
  32 + return this.baseMapper.getUserHitLogs(evalGroupRewardId, dataDate);
  33 + }
  34 +
  35 + @Override
  36 + public List<EvalGroupRewardHitLogVO> getShopHitLogs(Long evalGroupRewardId, LocalDate dataDate) {
  37 + return this.baseMapper.getShopHitLogs(evalGroupRewardId, dataDate);
  38 + }
26 39 }
... ...