Commit f2ed69d70d34cf1376af264763b81587e285e7ed

Authored by 姜超
1 parent 2a32e29a

feature(*): 人员质量评测接口

人员质量评测接口
fw-morax-dao/src/main/resources/mapper/kpi/KpiAssessDao.xml
... ... @@ -3,7 +3,7 @@
3 3 <mapper namespace="cn.fw.morax.dao.kpi.KpiAssessDao">
4 4  
5 5 <sql id="all_columns">
6   - id,name,post_id,post_name,shop_ids,shop_names,rank,group_id,yn,create_by,create_time,update_by,update_time
  6 + id,post_id,post_name,shop_ids,shop_names,rank,group_id,yn,create_by,create_time,update_by,update_time
7 7 </sql>
8 8  
9 9 <select id="getConfigs" resultType="cn.fw.morax.domain.db.kpi.KpiAssess">
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiAssess.java
... ... @@ -6,6 +6,7 @@ import cn.fw.common.data.mybatis.handler.LongListTypeHandler;
6 6 import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
7 7 import cn.fw.morax.domain.enums.KpiAssessTypeEnum;
8 8 import com.baomidou.mybatisplus.annotation.TableField;
  9 +import com.baomidou.mybatisplus.annotation.TableLogic;
9 10 import com.baomidou.mybatisplus.annotation.TableName;
10 11 import lombok.Data;
11 12 import lombok.EqualsAndHashCode;
... ... @@ -67,6 +68,7 @@ public class KpiAssess extends BaseAuditableEntity&lt;KpiAssess, Long&gt; {
67 68 /**
68 69 * 逻辑删除
69 70 */
  71 + @TableLogic
70 72 private Boolean yn;
71 73  
72 74 /**
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiAssessDetail.java
... ... @@ -4,6 +4,7 @@ import cn.fw.common.data.entity.BaseAuditableEntity;
4 4 import cn.fw.common.data.entity.BaseAuditableTimeEntity;
5 5 import cn.fw.common.data.mybatis.handler.StringListTypeHandler;
6 6 import com.baomidou.mybatisplus.annotation.TableField;
  7 +import com.baomidou.mybatisplus.annotation.TableLogic;
7 8 import com.baomidou.mybatisplus.annotation.TableName;
8 9 import lombok.Data;
9 10 import lombok.EqualsAndHashCode;
... ... @@ -109,6 +110,7 @@ public class KpiAssessDetail extends BaseAuditableTimeEntity&lt;KpiAssessDetail, Lo
109 110 /**
110 111 * 逻辑删除
111 112 */
  113 + @TableLogic
112 114 private Boolean yn;
113 115  
114 116  
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiAssessPenalty.java
1 1 package cn.fw.morax.domain.db.kpi;
2 2  
3 3 import cn.fw.common.data.entity.BaseAuditableTimeEntity;
  4 +import com.baomidou.mybatisplus.annotation.TableLogic;
4 5 import com.baomidou.mybatisplus.annotation.TableName;
5 6 import lombok.*;
6 7 import lombok.experimental.Accessors;
... ... @@ -119,6 +120,7 @@ public class KpiAssessPenalty extends BaseAuditableTimeEntity&lt;KpiAssessPenalty,
119 120 /**
120 121 * 逻辑删除
121 122 */
  123 + @TableLogic
122 124 private Boolean yn;
123 125  
124 126 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiAssessBizService.java
... ... @@ -269,15 +269,24 @@ public class KpiAssessBizService {
269 269 KpiAssess kpiAssess = new KpiAssess();
270 270 if (PublicUtil.isNotEmpty(dto.getId())) {
271 271 kpiAssess.setId(dto.getId());
  272 + } else {
  273 + kpiAssess.setCreateBy(dto.getUserId());
272 274 }
273 275 kpiAssess.setType(dto.getType());
274 276 kpiAssess.setPostId(dto.getPostId());
275 277 kpiAssess.setPostName(dto.getPostName());
276 278 kpiAssess.setShopIds(dto.getShopIds());
277 279 kpiAssess.setShopNames(dto.getShopNames());
  280 + if (KpiAssessTypeEnum.STAR_D.equals(dto.getType())) {
  281 + kpiAssess.setRank(0);
  282 + } else {
  283 + kpiAssess.setRank(dto.getRank());
  284 + }
278 285 kpiAssess.setRank(dto.getRank());
279 286 kpiAssess.setGroupId(dto.getGroupId());
280 287 kpiAssess.setYn(Boolean.TRUE);
  288 + kpiAssess.setBackup(Boolean.FALSE);
  289 + kpiAssess.setUpdateBy(dto.getUserId());
281 290 return kpiAssess;
282 291 }
283 292  
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiCalculateAssessService.java
... ... @@ -28,6 +28,7 @@ import com.google.common.collect.Lists;
28 28 import lombok.Getter;
29 29 import lombok.RequiredArgsConstructor;
30 30 import lombok.extern.slf4j.Slf4j;
  31 +import org.apache.rocketmq.common.filter.impl.Op;
31 32 import org.springframework.beans.factory.annotation.Value;
32 33 import org.springframework.data.redis.core.BoundSetOperations;
33 34 import org.springframework.data.redis.core.StringRedisTemplate;
... ... @@ -339,7 +340,11 @@ public class KpiCalculateAssessService {
339 340 return Boolean.FALSE;
340 341 }
341 342 for (KpiPool pool : pools) {
342   - BigDecimal rankDiff = new BigDecimal(rank - pool.getAssessRank()).abs();
  343 + Optional<Integer> assessRank = Optional.ofNullable(pool.getAssessRank());
  344 + BigDecimal rankDiff = BigDecimal.ZERO;
  345 + if (assessRank.isPresent()) {
  346 + rankDiff = new BigDecimal(rank - assessRank.get());
  347 + }
343 348 log.info("人员质量评测计算排名差,目标排名:{},绩效池:{},结果:{}", rank, JSON.toJSONString(pool), rankDiff);
344 349 //奖励
345 350 if (rankDiff.compareTo(BigDecimal.ZERO) > 0) {
... ... @@ -352,10 +357,10 @@ public class KpiCalculateAssessService {
352 357 }
353 358 //处罚
354 359 if (rankDiff.compareTo(BigDecimal.ZERO) < 0) {
355   - BigDecimal poolPenaltyScore = rankDiff.multiply(penaltyScore);
  360 + BigDecimal poolPenaltyScore = rankDiff.multiply(penaltyScore).abs();
356 361 poolPenaltyScore = (poolPenaltyScore.compareTo(capPersonPenaltyScore) > 0) ? poolPenaltyScore : capPersonPenaltyScore;
357 362  
358   - BigDecimal poolPenaltyMoney = rankDiff.multiply(penaltyMoney);
  363 + BigDecimal poolPenaltyMoney = rankDiff.multiply(penaltyMoney).abs();
359 364 poolPenaltyMoney = (poolPenaltyMoney.compareTo(capPersonPenaltyMoney) > 0) ? poolPenaltyMoney : capPersonPenaltyMoney;
360 365 penaltyDetails.add(new KpiAssessPenaltyDetailVO(Boolean.TRUE, pool.getId(), rankDiff, poolPenaltyScore, poolPenaltyMoney));
361 366 }
... ...