Commit 1c849d0756dbb3714116760a7bacccaf0341d15c
Merge branch 'test' into eval-detail
Showing
11 changed files
with
85 additions
and
44 deletions
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
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 | * 获取绩效组指标总分 | ... | ... |