Commit f2ed69d70d34cf1376af264763b81587e285e7ed
1 parent
2a32e29a
feature(*): 人员质量评测接口
人员质量评测接口
Showing
6 changed files
with
24 additions
and
4 deletions
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<KpiAssess, Long> { |
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<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<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 | } | ... | ... |