Commit e376b24ccf2a106d5512b64c959bc5f855a04a5d

Authored by 姜超
1 parent 320f8884

feature(*): 修改个人考评

修改个人考评
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
... ... @@ -65,6 +65,11 @@ public class EvalGroupUserShop {
65 65 */
66 66 private Long referId;
67 67  
  68 +// /**
  69 +// * 多阶段
  70 +// */
  71 +// private Boolean multiStage;
  72 +
68 73 /**
69 74 * 数据开始日期
70 75 */
... ...
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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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 }
... ...