Commit e376b24ccf2a106d5512b64c959bc5f855a04a5d
1 parent
320f8884
feature(*): 修改个人考评
修改个人考评
Showing
13 changed files
with
260 additions
and
60 deletions
doc/2023-05-18_update.sql
... | ... | @@ -4,3 +4,8 @@ ALTER TABLE `fw_morax`.`eval_user_pool` |
4 | 4 | CHANGE COLUMN `eval_group_stage_id` `eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评阶段id' AFTER `eval_group_rank_id`; |
5 | 5 | ALTER TABLE `fw_morax`.`eval_group_user` |
6 | 6 | ADD COLUMN `eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评排名组阶段id' AFTER `eval_group_rank_id`; |
7 | + | |
8 | +-- 2023年5月23日 | |
9 | +ALTER TABLE `fw_morax`.`eval_group_indicator_target_hit_log` | |
10 | + ADD COLUMN `extra_reach_value` decimal(18, 4) NULL COMMENT '额外达成目标' AFTER `reach_value`, | |
11 | +ADD COLUMN `use_target` tinyint(4) NULL DEFAULT 1 COMMENT '考评使用目标; 1:无目标 2:第一目标 3:额外目标值' AFTER `extra_reach_value`; | ... | ... |
fw-morax-dao/src/main/resources/mapper/eval/EvalGroupIndicatorTargetHitLogMapper.xml
... | ... | @@ -9,6 +9,8 @@ |
9 | 9 | <result column="target_type" property="targetType"/> |
10 | 10 | <result column="value" property="value"/> |
11 | 11 | <result column="reach_value" property="reachValue"/> |
12 | + <result column="extra_reach_value" property="extraReachValue"/> | |
13 | + <result column="use_target" property="useTarget"/> | |
12 | 14 | <result column="data_date" property="dataDate"/> |
13 | 15 | <result column="group_id" property="groupId"/> |
14 | 16 | <result column="create_time" property="createTime"/> |
... | ... | @@ -24,6 +26,8 @@ |
24 | 26 | t1.`pool_id`, |
25 | 27 | t1.`value` AS `value`, |
26 | 28 | t1.`reach_value`, |
29 | + t1.`extra_reach_value`, | |
30 | + t1.`use_target`, | |
27 | 31 | t1.`data_date`, |
28 | 32 | t1.`group_id` |
29 | 33 | FROM | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupIndicatorTargetHitLog.java
... | ... | @@ -2,6 +2,7 @@ package cn.fw.morax.domain.db.eval; |
2 | 2 | |
3 | 3 | import cn.fw.common.data.entity.BaseAuditableTimeEntity; |
4 | 4 | import cn.fw.morax.domain.enums.EvalScopeEnum; |
5 | +import cn.fw.morax.domain.enums.EvalUseTargetEnum; | |
5 | 6 | import cn.fw.morax.domain.enums.IndicatorTypeEnum; |
6 | 7 | import com.baomidou.mybatisplus.annotation.TableLogic; |
7 | 8 | import com.baomidou.mybatisplus.annotation.TableName; |
... | ... | @@ -60,6 +61,16 @@ public class EvalGroupIndicatorTargetHitLog extends BaseAuditableTimeEntity<Eval |
60 | 61 | private BigDecimal reachValue; |
61 | 62 | |
62 | 63 | /** |
64 | + * 额外达成目标 | |
65 | + */ | |
66 | + private BigDecimal extraReachValue; | |
67 | + | |
68 | + /** | |
69 | + * 考评使用目标; 1:无目标 2:第一目标 3:额外目标值 | |
70 | + */ | |
71 | + private EvalUseTargetEnum useTarget; | |
72 | + | |
73 | + /** | |
63 | 74 | * 数据日期 |
64 | 75 | */ |
65 | 76 | private LocalDate dataDate; | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalUseTargetEnum.java
0 → 100644
1 | +package cn.fw.morax.domain.enums; | |
2 | + | |
3 | +import com.baomidou.mybatisplus.core.enums.IEnum; | |
4 | +import com.fasterxml.jackson.annotation.JsonCreator; | |
5 | +import com.fasterxml.jackson.annotation.JsonValue; | |
6 | +import lombok.Getter; | |
7 | + | |
8 | +/** | |
9 | + * 考评使用目标 | |
10 | + * | |
11 | + * @author kurisu | |
12 | + */ | |
13 | +public enum EvalUseTargetEnum implements IEnum<Integer> { | |
14 | + /** | |
15 | + * 考评使用目标; 1:无目标 2:第一目标 3:额外目标值 | |
16 | + */ | |
17 | + NO(1, "无目标"), | |
18 | + FIRST_TARGET(2, "第一目标"), | |
19 | + EXTRA_TARGET(2, "额外目标值"), | |
20 | + ; | |
21 | + | |
22 | + /** | |
23 | + * 值 | |
24 | + */ | |
25 | + private final Integer value; | |
26 | + /** | |
27 | + * 名称 | |
28 | + */ | |
29 | + @Getter | |
30 | + private final String name; | |
31 | + | |
32 | + EvalUseTargetEnum(final Integer value, final String name) { | |
33 | + this.value = value; | |
34 | + this.name = name; | |
35 | + } | |
36 | + | |
37 | + /** | |
38 | + * 根据枚举值获取枚举对象 | |
39 | + */ | |
40 | + @JsonCreator | |
41 | + public static EvalUseTargetEnum ofValue(final Integer value) { | |
42 | + for (final EvalUseTargetEnum _enum : EvalUseTargetEnum.values()) { | |
43 | + if (_enum.value.equals(value)) { | |
44 | + return _enum; | |
45 | + } | |
46 | + } | |
47 | + return null; | |
48 | + } | |
49 | + | |
50 | + /** | |
51 | + * 获取值 | |
52 | + * | |
53 | + * @return 值 | |
54 | + */ | |
55 | + @JsonValue | |
56 | + @Override | |
57 | + public Integer getValue() { | |
58 | + return value; | |
59 | + } | |
60 | + | |
61 | + /** | |
62 | + * 获取描述 | |
63 | + * | |
64 | + * @return 值 | |
65 | + */ | |
66 | + @JsonCreator | |
67 | + public static String getNameByVale(final Integer value) { | |
68 | + for (final EvalUseTargetEnum _enum : EvalUseTargetEnum.values()) { | |
69 | + if (_enum.value.equals(value)) { | |
70 | + return _enum.getName(); | |
71 | + } | |
72 | + } | |
73 | + return ""; | |
74 | + } | |
75 | +} | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorParamVO.java
... | ... | @@ -93,14 +93,24 @@ public class EvalGroupIndicatorParamVO { |
93 | 93 | private BigDecimal indicatorValue; |
94 | 94 | |
95 | 95 | /** |
96 | - * 达成值 | |
96 | + * 达成目标 | |
97 | 97 | */ |
98 | 98 | private BigDecimal reachValue; |
99 | 99 | |
100 | 100 | /** |
101 | + * 额外达成目标 | |
102 | + */ | |
103 | + private BigDecimal extraReachValue; | |
104 | + | |
105 | + /** | |
106 | + * 考评使用目标; 1:无目标 2:第一目标 3:额外目标值 | |
107 | + */ | |
108 | + private EvalUseTargetEnum useTarget; | |
109 | + | |
110 | + /** | |
101 | 111 | * 时间进度目标值 |
102 | 112 | */ |
103 | - private BigDecimal timeScheduleTargetValue; | |
113 | +// private BigDecimal timeScheduleTargetValue; | |
104 | 114 | |
105 | 115 | /** |
106 | 116 | * 目标计算类型;1: 目标值计算 2:最低要求计算 3:阶段目标 4:时间进度 | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupIndicatorTargetHitLogVO.java
... | ... | @@ -2,6 +2,7 @@ package cn.fw.morax.domain.vo.eval; |
2 | 2 | |
3 | 3 | import cn.fw.common.data.entity.BaseAuditableTimeEntity; |
4 | 4 | import cn.fw.morax.domain.enums.EvalScopeEnum; |
5 | +import cn.fw.morax.domain.enums.EvalUseTargetEnum; | |
5 | 6 | import cn.fw.morax.domain.enums.IndicatorTypeEnum; |
6 | 7 | import com.baomidou.mybatisplus.annotation.TableName; |
7 | 8 | import lombok.Data; |
... | ... | @@ -56,6 +57,16 @@ public class EvalGroupIndicatorTargetHitLogVO extends BaseAuditableTimeEntity<Ev |
56 | 57 | private BigDecimal reachValue; |
57 | 58 | |
58 | 59 | /** |
60 | + * 额外达成目标 | |
61 | + */ | |
62 | + private BigDecimal extraReachValue; | |
63 | + | |
64 | + /** | |
65 | + * 考评使用目标; 1:无目标 2:第一目标 3:额外目标值 | |
66 | + */ | |
67 | + private EvalUseTargetEnum useTarget; | |
68 | + | |
69 | + /** | |
59 | 70 | * 数据日期 |
60 | 71 | */ |
61 | 72 | private LocalDate dataDate; | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalUserPoolVO.java
... | ... | @@ -111,9 +111,22 @@ public class EvalUserPoolVO { |
111 | 111 | private BigDecimal reward; |
112 | 112 | |
113 | 113 | /** |
114 | - * 考评得分 | |
114 | + * 本月考评得分(最终得分) | |
115 | 115 | */ |
116 | 116 | private BigDecimal score; |
117 | + /** | |
118 | + * 原始考评得分(无奖惩分) | |
119 | + */ | |
120 | + private BigDecimal originScore; | |
121 | + | |
122 | + /** | |
123 | + * 奖励绩效分 | |
124 | + */ | |
125 | + private BigDecimal rewardScore; | |
126 | + /** | |
127 | + * 惩罚绩效分 | |
128 | + */ | |
129 | + private BigDecimal punishScore; | |
117 | 130 | |
118 | 131 | /** |
119 | 132 | * 考评得分率 | ... | ... |
fw-morax-rpc/src/main/java/cn/fw/morax/rpc/ehr/EhrRpcService.java
... | ... | @@ -248,7 +248,7 @@ public class EhrRpcService { |
248 | 248 | } |
249 | 249 | try { |
250 | 250 | final Message<ManagerVo> msg = managerApi.getRealTimeManagerLeaveScope(null, staffId, startLeaveTime.getTime(), endLeaveTime.getTime()); |
251 | - log.info("ManagerApi.getRealTimeManagerScope: msg.code={}, msg.result={}, msg.data={}", msg.getCode(), msg.getResult(), msg.getData()); | |
251 | + log.info("ManagerApi.getRealTimeManagerLeaveScope: msg.code={}, msg.result={}, msg.data={}", msg.getCode(), msg.getResult(), msg.getData()); | |
252 | 252 | if (msg.isSuccess() && !Objects.isNull(msg.getData())) { |
253 | 253 | return this.convertStaffBaseDTOs(msg.getData().getManageStaffList()); |
254 | 254 | } | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java
... | ... | @@ -96,8 +96,8 @@ public class EvalUserReportTask { |
96 | 96 | TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition); |
97 | 97 | try { |
98 | 98 | log.info("定时任务【考评人员报表数据抽取】开始执行"); |
99 | - Map<Long, List<EvalGroupRank>> groupKpiGroupMap = queryStaffEffectRank(date); | |
100 | - for (Map.Entry<Long, List<EvalGroupRank>> entry : groupKpiGroupMap.entrySet()) { | |
99 | + Map<Long, List<EvalGroupRank>> groupEvalGroupMap = queryEffectRank(date); | |
100 | + for (Map.Entry<Long, List<EvalGroupRank>> entry : groupEvalGroupMap.entrySet()) { | |
101 | 101 | for (EvalGroupRank rank : entry.getValue()) { |
102 | 102 | //清除当月数据(当月只有一条数据) |
103 | 103 | cleanRankCurMonthData(rank.getId(), date); |
... | ... | @@ -400,8 +400,13 @@ public class EvalUserReportTask { |
400 | 400 | return rankCodes; |
401 | 401 | } |
402 | 402 | |
403 | - public Map<Long, List<EvalGroupRank>> queryStaffEffectRank(LocalDate date) { | |
403 | + public Map<Long, List<EvalGroupRank>> queryEffectRank(LocalDate date) { | |
404 | + List<SettingStatusEnum> status = new ArrayList<SettingStatusEnum>(){{ | |
405 | + add(SettingStatusEnum.EFFECTIVE); | |
406 | + add(SettingStatusEnum.BE_EFFECTIVE); | |
407 | + }}; | |
404 | 408 | List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery() |
409 | + .in(EvalGroupRank::getStatus, status) | |
405 | 410 | .ge(EvalGroupRank::getOverTime, date) |
406 | 411 | .eq(EvalGroupRank::getYn, Boolean.TRUE) |
407 | 412 | ); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/kpi/EvalKpiBaseCalculator.java
... | ... | @@ -80,9 +80,12 @@ public abstract class EvalKpiBaseCalculator implements Calculator<EvalGroupUserS |
80 | 80 | if (! valueOptional.isPresent()) { |
81 | 81 | return BigDecimal.ZERO; |
82 | 82 | } |
83 | - final BigDecimal originValue = valueOptional.get();//queryIndicatorValue(precondition.getCode(), valueOptional.get()); | |
83 | + final BigDecimal originValue = valueOptional.get(); | |
84 | 84 | BigDecimal indicatorValue = originValue; |
85 | + EvalUseTargetEnum useTarget = EvalUseTargetEnum.NO; | |
86 | + | |
85 | 87 | if (!TargetTypeEnum.NO.equals(targetType)) { |
88 | + useTarget = EvalUseTargetEnum.FIRST_TARGET; | |
86 | 89 | BigDecimal targetValue = precondition.getTargetValue(); |
87 | 90 | if (TargetCalcTypeEnum.TARGET_VALUE.equals(targetCalcType) || TargetCalcTypeEnum.STAGE_TARGET.equals(targetCalcType)) { |
88 | 91 | indicatorValue = indicatorValue.divide(targetValue, 4, RoundingMode.HALF_UP); |
... | ... | @@ -98,9 +101,13 @@ public abstract class EvalKpiBaseCalculator implements Calculator<EvalGroupUserS |
98 | 101 | indicatorValue = userDiffValue.divide(difference, 4, RoundingMode.HALF_UP); |
99 | 102 | } |
100 | 103 | } |
101 | - | |
102 | - saveTargetHitLog(obj, precondition.getId(), IndicatorTypeEnum.PRE, originValue, indicatorValue); | |
103 | 104 | } |
105 | + | |
106 | + EvalGroupIndicatorTargetHitLog log = new EvalGroupIndicatorTargetHitLog(); | |
107 | + log.setValue(originValue); | |
108 | + log.setReachValue(indicatorValue); | |
109 | + log.setUseTarget(useTarget); | |
110 | + saveTargetHitLog(obj, precondition.getId(), IndicatorTypeEnum.PRE, originValue, log); | |
104 | 111 | coefficient = coefficient(obj, precondition.getId(), indicatorValue); |
105 | 112 | } |
106 | 113 | return coefficient; |
... | ... | @@ -152,20 +159,30 @@ public abstract class EvalKpiBaseCalculator implements Calculator<EvalGroupUserS |
152 | 159 | TargetTypeEnum targetType = param.getTargetType(); |
153 | 160 | TargetTypeEnum extraTargetType = param.getExtraTargetType(); |
154 | 161 | final BigDecimal originValue = valueOptional.get(); |
155 | - BigDecimal indicatorValue = null; | |
156 | - BigDecimal extraIndicatorValue = null; | |
157 | - if (!TargetTypeEnum.NO.equals(targetType)) { | |
158 | - indicatorValue = calcTarget(param.getTargetCalcType(), originValue, param.getTargetValue()); | |
162 | + BigDecimal indicatorValue = originValue; | |
163 | + BigDecimal reachValue = BigDecimal.ZERO; | |
164 | + BigDecimal extraReachValue = BigDecimal.ZERO; | |
165 | + EvalUseTargetEnum useTarget = EvalUseTargetEnum.NO; | |
166 | + | |
167 | + if (PublicUtil.isNotEmpty(targetType) && !TargetTypeEnum.NO.equals(targetType)) { | |
168 | + reachValue = calcTarget(param.getTargetCalcType(), originValue, param.getTargetValue()); | |
169 | + useTarget = EvalUseTargetEnum.FIRST_TARGET; | |
170 | + indicatorValue = reachValue; | |
159 | 171 | } |
160 | 172 | if (PublicUtil.isNotEmpty(extraTargetType) && (!TargetTypeEnum.NO.equals(extraTargetType))) { |
161 | - extraIndicatorValue = calcTarget(param.getExtraTargetCalcType(), originValue, param.getExtraTargetValue()); | |
173 | + extraReachValue = calcTarget(param.getExtraTargetCalcType(), originValue, param.getExtraTargetValue()); | |
162 | 174 | //额外计算类型值 原始计算类型值 用大的那个值 |
163 | - if (PublicUtil.isEmpty(indicatorValue) || (extraIndicatorValue.compareTo(indicatorValue) > 0)) { | |
164 | - indicatorValue = extraIndicatorValue; | |
175 | + if (PublicUtil.isEmpty(reachValue) || (extraReachValue.compareTo(reachValue) > 0)) { | |
176 | + indicatorValue = extraReachValue; | |
177 | + useTarget = EvalUseTargetEnum.EXTRA_TARGET; | |
165 | 178 | } |
166 | 179 | } |
167 | - | |
168 | - saveTargetHitLog(userShop, param.getId(), IndicatorTypeEnum.EXAMINE, originValue, indicatorValue); | |
180 | + EvalGroupIndicatorTargetHitLog log = new EvalGroupIndicatorTargetHitLog(); | |
181 | + log.setValue(originValue); | |
182 | + log.setReachValue(reachValue); | |
183 | + log.setExtraReachValue(extraReachValue); | |
184 | + log.setUseTarget(useTarget); | |
185 | + saveTargetHitLog(userShop, param.getId(), IndicatorTypeEnum.EXAMINE, originValue, log); | |
169 | 186 | |
170 | 187 | boolean isCap = Boolean.TRUE.equals(param.getCap()); |
171 | 188 | BigDecimal proportion = param.getProportion(); |
... | ... | @@ -281,6 +298,26 @@ public abstract class EvalKpiBaseCalculator implements Calculator<EvalGroupUserS |
281 | 298 | /** |
282 | 299 | * 查询具体指标值 |
283 | 300 | * |
301 | + * @param indicatorUserValue | |
302 | + * @return | |
303 | + */ | |
304 | + protected Optional<BigDecimal> queryKpiIndicatorValue(IndicatorUserValue indicatorUserValue) { | |
305 | + if (PublicUtil.isEmpty(indicatorUserValue) || PublicUtil.isEmpty(indicatorUserValue.getIndicatorValue())) { | |
306 | + return Optional.empty(); | |
307 | + } | |
308 | + BigDecimal value = BigDecimal.ZERO; | |
309 | + try { | |
310 | + JSONObject jsonObject = JSONObject.parseObject(indicatorUserValue.getIndicatorValue()); | |
311 | + value = Optional.ofNullable(jsonObject.getBigDecimal(indicatorUserValue.getIndicatorCode())).orElse(BigDecimal.ZERO); | |
312 | + } catch (Exception e) { | |
313 | + log.error("[{}]指标值转化失败", indicatorUserValue, e); | |
314 | + } | |
315 | + return Optional.of(value); | |
316 | + } | |
317 | + | |
318 | + /** | |
319 | + * 查询具体指标值 | |
320 | + * | |
284 | 321 | * @param indicatorCode |
285 | 322 | * @param originalValue |
286 | 323 | * @return |
... | ... | @@ -318,6 +355,25 @@ public abstract class EvalKpiBaseCalculator implements Calculator<EvalGroupUserS |
318 | 355 | preconditionHitLogService.save(hitLog); |
319 | 356 | } |
320 | 357 | |
358 | + protected void saveTargetHitLog(EvalGroupUserShop userShop, Long referId, IndicatorTypeEnum targetType, BigDecimal value, EvalGroupIndicatorTargetHitLog log) { | |
359 | + evalGroupIndicatorTargetHitLogService.remove(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() | |
360 | + .eq(EvalGroupIndicatorTargetHitLog::getPoolId, userShop.getPoolId()) | |
361 | + .eq(EvalGroupIndicatorTargetHitLog::getScopeType, userShop.getScopeType()) | |
362 | + .eq(EvalGroupIndicatorTargetHitLog::getTargetType, targetType) | |
363 | + .eq(EvalGroupIndicatorTargetHitLog::getDataDate, userShop.getDataDate()) | |
364 | + .eq(EvalGroupIndicatorTargetHitLog::getReferId, referId) | |
365 | + ); | |
366 | + log.setPoolId(userShop.getPoolId()); | |
367 | + log.setScopeType(userShop.getScopeType()); | |
368 | + log.setReferId(referId); | |
369 | + log.setTargetType(targetType); | |
370 | + log.setValue(value); | |
371 | + log.setDataDate(userShop.getDataDate()); | |
372 | + log.setGroupId(userShop.getGroupId()); | |
373 | + log.setYn(Boolean.TRUE); | |
374 | + evalGroupIndicatorTargetHitLogService.save(log); | |
375 | + } | |
376 | + | |
321 | 377 | protected void saveTargetHitLog(EvalGroupUserShop userShop, Long referId, IndicatorTypeEnum targetType, BigDecimal value, BigDecimal reachValue) { |
322 | 378 | evalGroupIndicatorTargetHitLogService.remove(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() |
323 | 379 | .eq(EvalGroupIndicatorTargetHitLog::getPoolId, userShop.getPoolId()) |
... | ... | @@ -333,6 +389,7 @@ public abstract class EvalKpiBaseCalculator implements Calculator<EvalGroupUserS |
333 | 389 | log.setTargetType(targetType); |
334 | 390 | log.setValue(value); |
335 | 391 | log.setReachValue(reachValue); |
392 | + log.setUseTarget(EvalUseTargetEnum.FIRST_TARGET); | |
336 | 393 | log.setDataDate(userShop.getDataDate()); |
337 | 394 | log.setGroupId(userShop.getGroupId()); |
338 | 395 | log.setYn(Boolean.TRUE); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java
... | ... | @@ -134,6 +134,7 @@ public class EvalGroupPoolService { |
134 | 134 | if (PublicUtil.isNotEmpty(rankPools)) { |
135 | 135 | EvalUserPool stagePool = rankPools.get(0); |
136 | 136 | EvalUserPoolVO evalUserPoolVO = this.poolDetail(stagePool); |
137 | + this.setRewardPunish(evalUserPoolVO); | |
137 | 138 | stageVO.setPool(evalUserPoolVO); |
138 | 139 | } |
139 | 140 | } |
... | ... | @@ -154,6 +155,12 @@ public class EvalGroupPoolService { |
154 | 155 | return evalUserPoolVO; |
155 | 156 | } |
156 | 157 | |
158 | + public void setRewardPunish(EvalUserPoolVO evalUserPoolVO) { | |
159 | + evalUserPoolVO.setRewardScore(BigDecimal.ZERO); | |
160 | + evalUserPoolVO.setPunishScore(BigDecimal.ZERO); | |
161 | + evalUserPoolVO.setOriginScore(evalUserPoolVO.getScore()); | |
162 | + } | |
163 | + | |
157 | 164 | public void setIgnore(EvalUserPoolVO pool) { |
158 | 165 | EvalGroupUser evalGroupUser = evalGroupUserService.getMonthLastData(pool.getEvalGroupId(), pool.getUserId(), pool.getMonthly()); |
159 | 166 | if (PublicUtil.isEmpty(evalGroupUser)) { |
... | ... | @@ -539,16 +546,18 @@ public class EvalGroupPoolService { |
539 | 546 | String code = paramVO.getCode(); |
540 | 547 | Long paramId = paramVO.getId(); |
541 | 548 | //无目标 |
542 | - if (TargetTypeEnum.NO.equals(paramVO.getTargetType())) { | |
543 | - BigDecimal indicatorOriginValue = queryUserOriginValue(code, referId, scopeType,dataDate, paramVO.getCodeType()); | |
544 | - paramVO.setIndicatorValue(indicatorOriginValue); | |
545 | - continue; | |
546 | - } | |
549 | +// if (TargetTypeEnum.NO.equals(paramVO.getTargetType())) { | |
550 | +// BigDecimal indicatorOriginValue = queryUserOriginValue(code, referId, scopeType,dataDate, paramVO.getCodeType()); | |
551 | +// paramVO.setIndicatorValue(indicatorOriginValue); | |
552 | +// continue; | |
553 | +// } | |
547 | 554 | |
548 | 555 | //有目标 |
549 | 556 | Optional<EvalGroupIndicatorTargetHitLog> hitLogOptional = Optional.ofNullable(paramTargetHitLogMap.get(paramId)); |
550 | 557 | paramVO.setIndicatorValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getValue).orElse(BigDecimal.ZERO)); |
551 | 558 | paramVO.setReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO)); |
559 | + paramVO.setExtraReachValue(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO)); | |
560 | + paramVO.setUseTarget(hitLogOptional.map(EvalGroupIndicatorTargetHitLog::getUseTarget).orElse(EvalUseTargetEnum.NO)); | |
552 | 561 | } |
553 | 562 | |
554 | 563 | Map<ParamTypeEnum, List<EvalGroupIndicatorParamVO>> indicatorParamMap = paramVos.stream() |
... | ... | @@ -560,23 +569,21 @@ public class EvalGroupPoolService { |
560 | 569 | EvalScopeEnum scopeType, |
561 | 570 | LocalDate dataDate, |
562 | 571 | List<EvalGroupIndicatorParamVO> paramVos) { |
563 | - List<Long> hasTargetParamIds = paramVos.stream() | |
564 | - .filter(param -> (! TargetTypeEnum.NO.equals(param.getTargetType()))) | |
565 | - .map(EvalGroupIndicatorParamVO::getId).collect(Collectors.toList()); | |
572 | +// List<Long> hasTargetParamIds = paramVos.stream() | |
573 | +// .filter(param -> (! TargetTypeEnum.NO.equals(param.getTargetType()))) | |
574 | +// .map(EvalGroupIndicatorParamVO::getId).collect(Collectors.toList()); | |
566 | 575 | |
567 | 576 | Map<Long, EvalGroupIndicatorTargetHitLog> paramTargetHitLogMap = new HashMap<>(); |
568 | - if (PublicUtil.isNotEmpty(hasTargetParamIds)) { | |
569 | - List<EvalGroupIndicatorTargetHitLog> targetHitLogs = evalGroupIndicatorTargetHitLogService.list(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() | |
570 | - .in(EvalGroupIndicatorTargetHitLog::getReferId, hasTargetParamIds) | |
571 | - .in(EvalGroupIndicatorTargetHitLog::getTargetType, IndicatorTypeEnum.EXAMINE) | |
572 | - .eq(EvalGroupIndicatorTargetHitLog::getDataDate, dataDate) | |
573 | - .eq(EvalGroupIndicatorTargetHitLog::getPoolId, poolId) | |
574 | - .eq(EvalGroupIndicatorTargetHitLog::getScopeType, scopeType) | |
575 | - .eq(EvalGroupIndicatorTargetHitLog::getYn, Boolean.TRUE) | |
576 | - ); | |
577 | - paramTargetHitLogMap = targetHitLogs.stream() | |
578 | - .collect(Collectors.toMap(EvalGroupIndicatorTargetHitLog::getReferId, Function.identity(), (v1, v2) -> v1)); | |
579 | - } | |
577 | + List<EvalGroupIndicatorTargetHitLog> targetHitLogs = evalGroupIndicatorTargetHitLogService.list(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() | |
578 | +// .in(EvalGroupIndicatorTargetHitLog::getReferId, hasTargetParamIds) | |
579 | + .in(EvalGroupIndicatorTargetHitLog::getTargetType, IndicatorTypeEnum.EXAMINE) | |
580 | + .eq(EvalGroupIndicatorTargetHitLog::getDataDate, dataDate) | |
581 | + .eq(EvalGroupIndicatorTargetHitLog::getPoolId, poolId) | |
582 | + .eq(EvalGroupIndicatorTargetHitLog::getScopeType, scopeType) | |
583 | + .eq(EvalGroupIndicatorTargetHitLog::getYn, Boolean.TRUE) | |
584 | + ); | |
585 | + paramTargetHitLogMap = targetHitLogs.stream() | |
586 | + .collect(Collectors.toMap(EvalGroupIndicatorTargetHitLog::getReferId, Function.identity(), (v1, v2) -> v1)); | |
580 | 587 | return paramTargetHitLogMap; |
581 | 588 | } |
582 | 589 | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java
... | ... | @@ -169,7 +169,7 @@ public class EvalRewardService { |
169 | 169 | log.error("考评奖惩没有门店:{}", JSON.toJSONString(evalGroup)); |
170 | 170 | return; |
171 | 171 | } |
172 | - sendDistRewardTodo(shopRewardDims, evalGroup, evalGroupRank, evalGroupRankStage); | |
172 | +// sendDistRewardTodo(shopRewardDims, evalGroup, evalGroupRank, evalGroupRankStage); | |
173 | 173 | } |
174 | 174 | |
175 | 175 | /** |
... | ... | @@ -190,6 +190,7 @@ public class EvalRewardService { |
190 | 190 | for (EvalGroupRewardDim rewardDim : shopRewardDims) { |
191 | 191 | final String roleCode = rewardDim.getDistRoleCode(); |
192 | 192 | List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery() |
193 | + .ne(EvalShopPool::getReward, BigDecimal.ZERO) | |
193 | 194 | .eq(EvalShopPool::getEvalGroupId, evalGroup.getId()) |
194 | 195 | .in(EvalShopPool::getShopId, rewardDim.getShopIds()) |
195 | 196 | .eq(EvalShopPool::getYn, Boolean.TRUE) |
... | ... | @@ -198,9 +199,7 @@ public class EvalRewardService { |
198 | 199 | log.error("分配奖惩待办,未找到考评池:{}", JSON.toJSONString(rewardDim)); |
199 | 200 | continue; |
200 | 201 | } |
201 | - List<Long> distShopIds = pools.stream().filter(pool -> pool.getReward().compareTo(BigDecimal.ZERO) == 0) | |
202 | - .map(EvalShopPool::getShopId).collect(Collectors.toList()); | |
203 | - | |
202 | + List<Long> distShopIds = pools.stream().map(EvalShopPool::getShopId).collect(Collectors.toList()); | |
204 | 203 | List<RpcUserRoleInfoDTO> users = this.getUserEnableRoleInfos(roleCode, distShopIds); |
205 | 204 | for (RpcUserRoleInfoDTO user : users) { |
206 | 205 | List<Long> manageShopIds = user.getRangeList().stream() |
... | ... | @@ -249,25 +248,23 @@ public class EvalRewardService { |
249 | 248 | planItemReq.setExtraData(extraData); |
250 | 249 | itemList.add(planItemReq); |
251 | 250 | } |
252 | - | |
253 | - } | |
254 | - | |
255 | - | |
256 | - //推送待办 | |
257 | - BacklogBatchPlanReqDTO batchPlanReq = new BacklogBatchPlanReqDTO(todoVal.getDistEvalReward(), itemList); | |
258 | - List<FailBacklogItem> failItems = Optional.ofNullable(todoRpcService.batchPush(batchPlanReq)).orElse(new ArrayList<>()); | |
259 | - if (PublicUtil.isNotEmpty(failItems)) { | |
260 | - log.error("发送分配考评奖励待办失败,失败人员信息:{}", JSON.toJSONString(failItems)); | |
261 | 251 | } |
252 | + if (PublicUtil.isNotEmpty(itemList)) { | |
253 | + //推送待办 | |
254 | + BacklogBatchPlanReqDTO batchPlanReq = new BacklogBatchPlanReqDTO(todoVal.getDistEvalReward(), itemList); | |
255 | + List<FailBacklogItem> failItems = Optional.ofNullable(todoRpcService.batchPush(batchPlanReq)).orElse(new ArrayList<>()); | |
256 | + if (PublicUtil.isNotEmpty(failItems)) { | |
257 | + log.error("发送分配考评奖励待办失败,失败人员信息:{}", JSON.toJSONString(failItems)); | |
258 | + } | |
262 | 259 | |
263 | - if (PublicUtil.isEmpty(failItems) || itemList.size() > failItems.size()) { | |
264 | - if (PublicUtil.isNotEmpty(distPoolIds)) { | |
265 | - evalShopPoolService.update(Wrappers.<EvalShopPool>lambdaUpdate() | |
266 | - .in(EvalShopPool::getId, distPoolIds) | |
267 | - .set(EvalShopPool::getStatus, EvalShopPoolStatusEnum.WAIT_DIST_REWARD) | |
268 | - .set(EvalShopPool::getYn, Boolean.FALSE) | |
269 | - .set(EvalShopPool::getUpdateTime, new Date()) | |
270 | - ); | |
260 | + if (PublicUtil.isEmpty(failItems) || itemList.size() > failItems.size()) { | |
261 | + if (PublicUtil.isNotEmpty(distPoolIds)) { | |
262 | + evalShopPoolService.update(Wrappers.<EvalShopPool>lambdaUpdate() | |
263 | + .in(EvalShopPool::getId, distPoolIds) | |
264 | + .set(EvalShopPool::getStatus, EvalShopPoolStatusEnum.WAIT_DIST_REWARD) | |
265 | + .set(EvalShopPool::getUpdateTime, new Date()) | |
266 | + ); | |
267 | + } | |
271 | 268 | } |
272 | 269 | } |
273 | 270 | } | ... | ... |