Commit 1c849d0756dbb3714116760a7bacccaf0341d15c

Authored by 姜超
2 parents 19325c46 71e4eae7

Merge branch 'test' into eval-detail

doc/2023-05-18_update.sql 0 → 100644
  1 +ALTER TABLE `fw_morax`.`eval_shop_pool`
  2 + CHANGE COLUMN `eval_group_stage_id` `eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评排名阶段id' AFTER `eval_group_rank_id`;
  3 +ALTER TABLE `fw_morax`.`eval_user_pool`
  4 + CHANGE COLUMN `eval_group_stage_id` `eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评阶段id' AFTER `eval_group_rank_id`;
  5 +ALTER TABLE `fw_morax`.`eval_group_user`
  6 + ADD COLUMN `eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评排名组阶段id' AFTER `eval_group_rank_id`;
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupUser.java
... ... @@ -24,6 +24,10 @@ public class EvalGroupUser extends BaseAuditableTimeEntity<EvalGroupUser, Long>
24 24 */
25 25 private Long evalGroupRankId;
26 26 /**
  27 + * 考评排名组阶段id
  28 + */
  29 + private Long evalGroupRankStageId;
  30 + /**
27 31 * 考评组编码
28 32 */
29 33 private String egc;
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalShopPool.java
... ... @@ -39,6 +39,14 @@ public class EvalShopPool extends BaseAuditableTimeEntity<EvalShopPool, Long> {
39 39 * 考评组id
40 40 */
41 41 private Long evalGroupId;
  42 + /**
  43 + * 考评排名组id
  44 + */
  45 + private Long evalGroupRankId;
  46 + /**
  47 + * 考评排名组阶段id
  48 + */
  49 + private Long evalGroupRankStageId;
42 50  
43 51 // /**
44 52 // * 用户id
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserPool.java
... ... @@ -29,12 +29,15 @@ public class EvalUserPool extends BaseAuditableTimeEntity<EvalUserPool, Long> {
29 29 * 考评组编码
30 30 */
31 31 private String egc;
32   -
33 32 /**
34 33 * 考评排名组id
35 34 */
36 35 private Long evalGroupRankId;
37 36 /**
  37 + * 考评排名组阶段id
  38 + */
  39 + private Long evalGroupRankStageId;
  40 + /**
38 41 * 考评组id
39 42 */
40 43 private Long evalGroupId;
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java
... ... @@ -51,9 +51,9 @@ public class KpiPoolDetailVO {
51 51 */
52 52 private String shopName;
53 53 /**
54   - * 原来总绩效得分
  54 + * 真实总绩效得分
55 55 */
56   - private BigDecimal originKpiScore;
  56 + private BigDecimal realKpiScore;
57 57 /**
58 58 * 奖励绩效分
59 59 */
... ... @@ -67,9 +67,9 @@ public class KpiPoolDetailVO {
67 67 */
68 68 private BigDecimal totalScore;
69 69 /**
70   - * 绩效得分
  70 + * 原始绩效得分(无奖惩分)
71 71 */
72   - private BigDecimal kpiScore;
  72 + private BigDecimal originKpiScore;
73 73 /**
74 74 * 当月绩效得分率
75 75 */
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java
... ... @@ -74,9 +74,9 @@ public class EvalGroupUserTask {
74 74 }
75 75 stopWatch.start("考评组人员保存,保存条数:"+ evalGroupUsersForSave.size());
76 76 //逻辑删除今天已保存人员,保存人员
77   - Set<Long> kpiGroupIds = evalGroupUsersForSave.stream().map(EvalGroupUser::getEvalGroupId).collect(Collectors.toSet());
  77 + Set<Long> evalGroupIds = evalGroupUsersForSave.stream().map(EvalGroupUser::getEvalGroupId).collect(Collectors.toSet());
78 78 evalGroupUserService.update(Wrappers.<EvalGroupUser>lambdaUpdate()
79   - .in(EvalGroupUser::getEvalGroupId, kpiGroupIds)
  79 + .in(EvalGroupUser::getEvalGroupId, evalGroupIds)
80 80 .eq(EvalGroupUser::getDataDate, yesterday)
81 81 .eq(EvalGroupUser::getYn, Boolean.TRUE)
82 82 .set(EvalGroupUser::getYn, Boolean.FALSE)
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java
... ... @@ -192,6 +192,7 @@ public class EvalGroupBizService {
192 192 */
193 193 public EvalGroupRankVO evalGroupRankDetail(Long id) {
194 194 EvalGroupRank evalGroupRank = evalGroupRankService.getById(id);
  195 + BV.notNull(evalGroupRank, "考评排名组为空,请重试");
195 196 EvalGroupRankVO evalGroupRankVO = PublicUtil.copy(evalGroupRank, EvalGroupRankVO.class);
196 197  
197 198 List<EvalGroupRankStage> stages = evalGroupRankStageService.list(Wrappers.<EvalGroupRankStage>lambdaQuery()
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java
... ... @@ -88,6 +88,7 @@ public class EvalGroupUserBizService {
88 88 }
89 89 EvalGroup evalGroup = shopKpiGroupMap.get(user.getShopId());
90 90 user.setEvalGroupRankId(evalGroup.getEvalGroupRankId());
  91 + user.setEvalGroupRankStageId(evalGroup.getEvalGroupRankStageId());
91 92 user.setEvalGroupId(evalGroup.getId());
92 93 user.setEgc(evalGroup.getEgc());
93 94 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java
... ... @@ -2,15 +2,15 @@ package cn.fw.morax.service.biz.eval;
2 2  
3 3 import cn.fw.ehr.sdk.api.enums.StaffShopTypeEnum;
4 4 import cn.fw.morax.common.utils.PublicUtil;
5   -import cn.fw.morax.domain.db.eval.EvalGroup;
6   -import cn.fw.morax.domain.db.eval.EvalGroupUser;
7   -import cn.fw.morax.domain.db.eval.EvalShopPool;
8   -import cn.fw.morax.domain.db.eval.EvalUserPool;
  5 +import cn.fw.morax.domain.db.eval.*;
  6 +import cn.fw.morax.domain.enums.EvalScopeEnum;
  7 +import cn.fw.morax.domain.enums.EvalShopPoolStatusEnum;
9 8 import cn.fw.morax.rpc.ehr.EhrRpcService;
10 9 import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO;
11 10 import cn.fw.morax.rpc.ehr.dto.StaffShopInfoDTO;
12 11 import cn.fw.morax.rpc.oop.OopRpcService;
13 12 import cn.fw.morax.rpc.oop.dto.ShopDTO;
  13 +import cn.fw.morax.service.data.eval.EvalGroupRewardDimService;
14 14 import cn.fw.morax.service.data.eval.EvalShopPoolService;
15 15 import cn.fw.morax.service.data.eval.EvalUserPoolService;
16 16 import cn.fw.morax.service.data.salary.SalaryGroupUserService;
... ... @@ -41,6 +41,7 @@ public class EvalPoolCommonService {
41 41  
42 42 private SalaryGroupUserService salaryGroupUserService;
43 43 private EvalUserPoolService evalUserPoolService;
  44 + private EvalGroupRewardDimService evalGroupRewardDimService;
44 45 private EvalShopPoolService evalShopPoolService;
45 46 private EhrRpcService ehrRpcService;
46 47 private OopRpcService oopRpcService;
... ... @@ -75,7 +76,7 @@ public class EvalPoolCommonService {
75 76 public Map<Long, EvalShopPool> inspectionShopPools(EvalGroup evalGroup, LocalDate localDate) {
76 77 Set<Long> evalGroupShopIds = new HashSet<>(evalGroup.getShopIds());
77 78 List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
78   - .eq(EvalShopPool::getEgc, evalGroup.getEgc())
  79 + .eq(EvalShopPool::getEvalGroupId, evalGroup.getId())
79 80 .in(EvalShopPool::getShopId, evalGroupShopIds)
80 81 .eq(EvalShopPool::getMonthly, YearMonth.from(localDate))
81 82 .eq(EvalShopPool::getYn, Boolean.TRUE)
... ... @@ -86,9 +87,20 @@ public class EvalPoolCommonService {
86 87 return v1;
87 88 }));
88 89  
89   - for (Long shopId : evalGroupShopIds) {
  90 + List<EvalGroupRewardDim> rewardDims = evalGroupRewardDimService.list(Wrappers.<EvalGroupRewardDim>lambdaQuery()
  91 + .eq(EvalGroupRewardDim::getEvalGroupId, evalGroup.getId())
  92 + .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP)
  93 + .eq(EvalGroupRewardDim::getYn, Boolean.TRUE)
  94 + );
  95 + if (PublicUtil.isEmpty(rewardDims)) {
  96 + return new HashMap<>();
  97 + }
  98 + Set<Long> distRewardShopIds = rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).collect(Collectors.toSet());
  99 + for (Long shopId : distRewardShopIds) {
90 100 if (! shopPoolMap.containsKey(shopId)) {
91   - EvalShopPool shopPool = this.inspectionShopPool(shopId, evalGroup, localDate);
  101 + EvalShopPoolStatusEnum status = (distRewardShopIds.contains(shopId))
  102 + ? EvalShopPoolStatusEnum.CALC_REWARD : EvalShopPoolStatusEnum.NO_REWARD;
  103 + EvalShopPool shopPool = this.inspectionShopPool(shopId, evalGroup, localDate, status);
92 104 shopPoolMap.put(shopId, shopPool);
93 105 }
94 106 }
... ... @@ -101,9 +113,9 @@ public class EvalPoolCommonService {
101 113 * @return
102 114 */
103 115 @Transactional(rollbackFor = Exception.class)
104   - public EvalShopPool inspectionShopPool(Long shopId, EvalGroup evalGroup, LocalDate localDate) {
  116 + public EvalShopPool inspectionShopPool(Long shopId, EvalGroup evalGroup, LocalDate localDate, EvalShopPoolStatusEnum status) {
105 117 EvalShopPool evalShopPool = evalShopPoolService.getOne(Wrappers.<EvalShopPool>lambdaQuery()
106   - .eq(EvalShopPool::getEgc, evalGroup.getEgc())
  118 + .eq(EvalShopPool::getId, evalGroup.getId())
107 119 .eq(EvalShopPool::getShopId, shopId)
108 120 .eq(EvalShopPool::getYn, Boolean.TRUE)
109 121 .eq(EvalShopPool::getMonthly, YearMonth.from(localDate).minusMonths(1))
... ... @@ -117,16 +129,19 @@ public class EvalPoolCommonService {
117 129 evalShopPool.setMonthly(YearMonth.from(localDate));
118 130 return evalShopPool;
119 131 }
120   - return this.createShopPoolData(shopId, evalGroup, localDate);
  132 + return this.createShopPoolData(shopId, evalGroup, localDate, status);
121 133 }
122 134  
123 135 @Transactional(rollbackFor = Exception.class)
124   - public EvalShopPool createShopPoolData(Long shopId, EvalGroup evalGroup, LocalDate localDate) {
  136 + public EvalShopPool createShopPoolData(Long shopId, EvalGroup evalGroup, LocalDate localDate, EvalShopPoolStatusEnum status) {
125 137 ShopDTO shopDTO = oopRpcService.queryShop(shopId);
126 138 EvalShopPool evalShopPool = new EvalShopPool();
127 139 evalShopPool.setEgc(evalGroup.getEgc());
128 140 evalShopPool.setEvalGroupId(evalGroup.getId());
  141 + evalShopPool.setEvalGroupRankId(evalGroup.getEvalGroupRankId());
  142 + evalShopPool.setEvalGroupRankStageId(evalGroup.getEvalGroupRankStageId());
129 143 // evalShopPool.setEvalId(evalGroup.getEvalId());
  144 + evalShopPool.setStatus(status);
130 145 evalShopPool.setShopId(shopId);
131 146 evalShopPool.setShopName(shopDTO.getShortName());
132 147 evalShopPool.setScore(BigDecimal.ZERO);
... ... @@ -207,6 +222,8 @@ public class EvalPoolCommonService {
207 222 // evalUserPool.setEvalId(user.getEvalGroupRankId());
208 223 evalUserPool.setEgc(user.getEgc());
209 224 evalUserPool.setEvalGroupId(user.getEvalGroupId());
  225 + evalUserPool.setEvalGroupRankId(user.getEvalGroupRankId());
  226 + evalUserPool.setEvalGroupRankStageId(user.getEvalGroupRankStageId());
210 227 evalUserPool.setUserId(user.getUserId());
211 228 evalUserPool.setUserName(user.getUserName());
212 229 evalUserPool.setPostId(user.getPostId());
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/CombineIndicatorBizService.java
... ... @@ -69,7 +69,7 @@ public class CombineIndicatorBizService {
69 69 public List<CombineAndEvalIndicatorVO> combineAndEvalIndicators(CombineIndicatorQueryDTO dto) {
70 70  
71 71 List<CombineAndEvalIndicatorVO> combineAndEvalIndicatorVOS = Lists.newArrayListWithCapacity(100);
72   - if (PublicUtil.isEmpty(dto.getCombineIndicator()) || Boolean.TRUE.equals(dto.getCombineIndicator())) {
  72 + if (PublicUtil.isEmpty(dto.getCombineIndicator()) || Boolean.FALSE.equals(dto.getCombineIndicator())) {
73 73 List<EvalIndicator> evalIndicators = evalIndicatorService.list(Wrappers.<EvalIndicator>lambdaQuery()
74 74 .eq(PublicUtil.isNotEmpty(dto.getSysId()), EvalIndicator::getSysId, dto.getSysId())
75 75 .eq(PublicUtil.isNotEmpty(dto.getRoleCode()), EvalIndicator::getRoleCode, dto.getRoleCode())
... ... @@ -100,7 +100,7 @@ public class CombineIndicatorBizService {
100 100 return combineAndEvalIndicatorVOS;
101 101 }
102 102  
103   - if (PublicUtil.isEmpty(dto.getCombineIndicator()) || Boolean.FALSE.equals(dto.getCombineIndicator())) {
  103 + if (PublicUtil.isEmpty(dto.getCombineIndicator()) || Boolean.TRUE.equals(dto.getCombineIndicator())) {
104 104 List<CombineIndicator> combineIndicators = combineIndicatorService.list(Wrappers.<CombineIndicator>lambdaQuery()
105 105 .eq(CombineIndicator::getGroupId, dto.getGroupId())
106 106 .eq(PublicUtil.isNotEmpty(dto.getEnable()), CombineIndicator::getEnable, dto.getEnable())
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java
... ... @@ -640,9 +640,10 @@ public class KpiPoolBizService {
640 640 }
641 641 }
642 642 //奖励分正数、惩罚分负数,减去奖惩分数,得到原始分数
643   - BigDecimal originKpiScore = kpiPoolDetailVO.getKpiScore().subtract(rewardScore).subtract(punishScore);
  643 + BigDecimal originKpiScore = kpiPoolDetailVO.getOriginKpiScore().subtract(rewardScore).subtract(punishScore);
644 644 kpiPoolDetailVO.setRewardScore(rewardScore);
645 645 kpiPoolDetailVO.setPunishScore(punishScore.abs());
  646 + kpiPoolDetailVO.setRealKpiScore(pool.getKpiScore());
646 647 kpiPoolDetailVO.setOriginKpiScore(originKpiScore);
647 648  
648 649 kpiPoolDetailVO.setRewards(new ArrayList<>());
... ... @@ -713,29 +714,29 @@ public class KpiPoolBizService {
713 714 *
714 715 * @param pool
715 716 */
716   - public void processRewardPoint(KpiPool pool, KpiPoolDetailVO poolDetailVO) {
717   - List<KpiRewardPoint> list = kpiRewardPointService.list(Wrappers.<KpiRewardPoint>lambdaQuery()
718   - .eq(KpiRewardPoint::getUserId, pool.getUserId())
719   - .eq(KpiRewardPoint::getPostId, pool.getPostId())
720   - .eq(KpiRewardPoint::getShopId, pool.getShopId())
721   - .eq(KpiRewardPoint::getMonthly, pool.getMonthly())
722   - .eq(KpiRewardPoint::getGroupId, pool.getGroupId())
723   - );
724   - BigDecimal rewardScore = BigDecimal.ZERO;
725   - BigDecimal punishScore = BigDecimal.ZERO;
726   - for (KpiRewardPoint point : list) {
727   - if (BigDecimal.ZERO.compareTo(point.getScorePoint()) > 0) {
728   - punishScore = punishScore.add(point.getScorePoint());
729   - } else {
730   - rewardScore = rewardScore.add(point.getScorePoint());
731   - }
732   - }
733   - //奖励分正数、惩罚分负数,减去奖惩分数,得到原始分数
734   - BigDecimal originKpiScore = poolDetailVO.getKpiScore().subtract(rewardScore).subtract(punishScore);
735   - poolDetailVO.setRewardScore(rewardScore);
736   - poolDetailVO.setPunishScore(punishScore.abs());
737   - poolDetailVO.setOriginKpiScore(originKpiScore);
738   - }
  717 +// public void processRewardPoint(KpiPool pool, KpiPoolDetailVO poolDetailVO) {
  718 +// List<KpiRewardPoint> list = kpiRewardPointService.list(Wrappers.<KpiRewardPoint>lambdaQuery()
  719 +// .eq(KpiRewardPoint::getUserId, pool.getUserId())
  720 +// .eq(KpiRewardPoint::getPostId, pool.getPostId())
  721 +// .eq(KpiRewardPoint::getShopId, pool.getShopId())
  722 +// .eq(KpiRewardPoint::getMonthly, pool.getMonthly())
  723 +// .eq(KpiRewardPoint::getGroupId, pool.getGroupId())
  724 +// );
  725 +// BigDecimal rewardScore = BigDecimal.ZERO;
  726 +// BigDecimal punishScore = BigDecimal.ZERO;
  727 +// for (KpiRewardPoint point : list) {
  728 +// if (BigDecimal.ZERO.compareTo(point.getScorePoint()) > 0) {
  729 +// punishScore = punishScore.add(point.getScorePoint());
  730 +// } else {
  731 +// rewardScore = rewardScore.add(point.getScorePoint());
  732 +// }
  733 +// }
  734 +// //奖励分正数、惩罚分负数,减去奖惩分数,得到原始分数
  735 +// BigDecimal originKpiScore = poolDetailVO.getKpiScore().subtract(rewardScore).subtract(punishScore);
  736 +// poolDetailVO.setRewardScore(rewardScore);
  737 +// poolDetailVO.setPunishScore(punishScore.abs());
  738 +// poolDetailVO.setOriginKpiScore(originKpiScore);
  739 +// }
739 740  
740 741 /**
741 742 * 获取绩效组指标总分
... ...