Commit f2ed69d70d34cf1376af264763b81587e285e7ed

Authored by 姜超
1 parent 2a32e29a

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

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