From 2ac0c565e8e9418f7d4f424cf07e64574192ffae Mon Sep 17 00:00:00 2001 From: jiangchao Date: Wed, 24 May 2023 10:24:54 +0800 Subject: [PATCH] feature(*): 修改个人考评 --- fw-morax-common/src/main/java/cn/fw/morax/common/constant/Constant.java | 5 +++++ fw-morax-dao/src/main/resources/mapper/eval/EvalShopPoolDao.xml | 66 ++++++++++++++++++++++++++++++++++++++++-------------------------- fw-morax-dao/src/main/resources/mapper/eval/EvalUserPoolDao.xml | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------- fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalRewardDist.java | 34 +++++++++++++++++++++++----------- fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalShopPool.java | 35 ----------------------------------- fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalShopPoolVO.java | 69 ++++++++++----------------------------------------------------------- fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java | 79 +++++++++++++++++++++++++++++++++++++++++++++++++------------------------------ 7 files changed, 181 insertions(+), 195 deletions(-) diff --git a/fw-morax-common/src/main/java/cn/fw/morax/common/constant/Constant.java b/fw-morax-common/src/main/java/cn/fw/morax/common/constant/Constant.java index c43d592..31d7822 100644 --- a/fw-morax-common/src/main/java/cn/fw/morax/common/constant/Constant.java +++ b/fw-morax-common/src/main/java/cn/fw/morax/common/constant/Constant.java @@ -52,6 +52,11 @@ public class Constant { public final static String SEPARATOR = "_"; /** + * 时间分隔符 + */ + public final static String TIME_SEPARATOR = "——"; + + /** * 薪酬报表车系名称 */ public final static String REPORT_CAR_SERIES_NAME = "carSeriesName"; diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalShopPoolDao.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalShopPoolDao.xml index 63ca173..870e86d 100644 --- a/fw-morax-dao/src/main/resources/mapper/eval/EvalShopPoolDao.xml +++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalShopPoolDao.xml @@ -4,23 +4,31 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - id,eval_id,egc,eval_group_id,shop_id,shop_name,reward,status,score,score_ratio,monthly,group_id + id,eval_group_rank_id,eval_group_rank_stage_id + ,egc,eval_group_id,shop_id,shop_name,reward + ,status,score,score_ratio,rank,data_date + ,monthly,group_id,yn,create_time,update_time SELECT - id, - eval_id, - egc, - eval_group_id, - shop_id, - shop_name, - reward, - status, - score, - score_ratio, - monthly, - group_id + id + ,eval_group_rank_id + ,eval_group_rank_stage_id + ,egc + ,eval_group_id + ,shop_id + ,shop_name + ,reward + ,status + ,score + ,score_ratio + ,rank + ,data_date + ,monthly + ,group_id + ,yn + ,create_time + ,update_time from eval_shop_pool where yn = 1 and group_id = #{condition.groupId} diff --git a/fw-morax-dao/src/main/resources/mapper/eval/EvalUserPoolDao.xml b/fw-morax-dao/src/main/resources/mapper/eval/EvalUserPoolDao.xml index 504b097..4223dc4 100644 --- a/fw-morax-dao/src/main/resources/mapper/eval/EvalUserPoolDao.xml +++ b/fw-morax-dao/src/main/resources/mapper/eval/EvalUserPoolDao.xml @@ -4,43 +4,63 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + id,eval_group_rank_id,eval_group_rank_stage_id,egc,eval_group_id,user_id,user_name,post_id + ,post_name,shop_id,shop_name,fund_shop_id,fund_shop_name + ,reward,score,score_ratio,rank,inclusion,data_date + ,monthly,group_id,yn,create_time,update_time + + + SELECT - * + from eval_user_pool where yn = 1 and group_id = #{condition.groupId} diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalRewardDist.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalRewardDist.java index f6d30d6..5d813d9 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalRewardDist.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalRewardDist.java @@ -13,6 +13,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @@ -36,31 +37,42 @@ public class EvalRewardDist extends BaseAuditableTimeEntity { * 考评组编码 */ private String egc; - - /** - * 考评id - */ - private Long evalId; /** * 考评组id */ @@ -48,26 +43,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity { */ private Long evalGroupRankStageId; -// /** -// * 用户id -// */ -// private Long userId; -// -// /** -// * 用户名称 -// */ -// private String userName; - -// /** -// * 岗位id -// */ -// private Long postId; -// -// /** -// * 岗位名称 -// */ -// private String postName; - /** * 门店id */ @@ -78,16 +53,6 @@ public class EvalShopPool extends BaseAuditableTimeEntity { */ private String shopName; -// /** -// * 社保公积金门店id -// */ -// private Long fundShopId; -// -// /** -// * 社保公积金门店名称 -// */ -// private String fundShopName; - /** * 考评奖惩 */ diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalShopPoolVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalShopPoolVO.java index b3bf033..6d43a0c 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalShopPoolVO.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalShopPoolVO.java @@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode; import java.math.BigDecimal; import java.time.LocalDate; +import java.time.YearMonth; import java.util.List; /** @@ -27,56 +28,22 @@ import java.util.List; public class EvalShopPoolVO { private static final long serialVersionUID = 1L; - - /** - * 考评池id - */ - private Long id; - /** * 考评组编码 */ private String egc; - - /** - * 考评组 - */ - private String evalGroupName; - - /** - * 考评id - */ - private Long evalId; /** * 考评组id */ private Long evalGroupId; - - /** - * 考评类型; 1:活动考评 2:其他考评 + * 考评排名组id */ - private EvalTypeEnum evalType; - -// /** -// * 用户id -// */ -// private Long userId; -// -// /** -// * 用户名称 -// */ -// private String userName; - -// /** -// * 岗位id -// */ -// private Long postId; -// -// /** -// * 岗位名称 -// */ -// private String postName; + private Long evalGroupRankId; + /** + * 考评排名组阶段id + */ + private Long evalGroupRankStageId; /** * 门店id @@ -88,16 +55,6 @@ public class EvalShopPoolVO { */ private String shopName; -// /** -// * 社保公积金门店id -// */ -// private Long fundShopId; -// -// /** -// * 社保公积金门店名称 -// */ -// private String fundShopName; - /** * 考评奖惩 */ @@ -114,20 +71,14 @@ public class EvalShopPoolVO { private BigDecimal scoreRatio; /** - * 绩效总分 + * 排名 */ - private BigDecimal totalScore; - - /** - * 考评得分率(格式化) - */ - private String scoreRatioFormat; + private Integer rank; /** * 月度 */ - private String monthly; - + private YearMonth monthly; /** * 数据日期 diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java index e2b7fa1..92f40c4 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java @@ -5,6 +5,7 @@ import cn.fw.common.cache.locker.DistributedLocker; import cn.fw.common.exception.BusinessException; import cn.fw.common.web.auth.LoginAuthBean; import cn.fw.morax.common.config.TodoVal; +import cn.fw.morax.common.constant.Constant; import cn.fw.morax.common.pojo.event.ApprovalResultEvent; import cn.fw.morax.common.utils.DateUtil; import cn.fw.morax.common.utils.PublicUtil; @@ -44,9 +45,11 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.text.DateFormat; import java.text.DecimalFormat; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ThreadPoolExecutor; @@ -169,7 +172,7 @@ public class EvalRewardService { log.error("考评奖惩没有门店:{}", JSON.toJSONString(evalGroup)); return; } -// sendDistRewardTodo(shopRewardDims, evalGroup, evalGroupRank, evalGroupRankStage); + sendDistRewardTodo(shopRewardDims, evalGroup, evalGroupRank, evalGroupRankStage); } /** @@ -181,12 +184,14 @@ public class EvalRewardService { public void sendDistRewardTodo(List shopRewardDims, EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) { String evalGroupRankName = evalGroupRank.getName(); - String evalGroupRankStageName = evalGroupRankStage.getName(); - DecimalFormat decimalFormat = new DecimalFormat("##########.##"); - List itemList = new ArrayList<>(); + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String beginTimeStr = dtf.format(evalGroupRankStage.getBeginTime()); + String endTimeStr = dtf.format(evalGroupRankStage.getOverTime()); + String timeStr = beginTimeStr + Constant.TIME_SEPARATOR + endTimeStr; + String evalGroupRankStageName = (evalGroupRank.getMultiStage()) ? evalGroupRankStage.getName() : "---"; + List itemList = new ArrayList<>(); List distPoolIds = new ArrayList<>(); - final Date expireTime = DateUtil.localDateTime2Date(LocalDateTime.now().plusDays(2L)); for (EvalGroupRewardDim rewardDim : shopRewardDims) { final String roleCode = rewardDim.getDistRoleCode(); List pools = evalShopPoolService.list(Wrappers.lambdaQuery() @@ -219,33 +224,15 @@ public class EvalRewardService { } //奖惩为0不分配 if (BigDecimal.ZERO.compareTo(reward) == 0) { - return; + continue; } - EvalRewardDist rewardDist = transferPo(evalGroup); + EvalRewardDist rewardDist = this.convertRewardDist(evalGroup, evalGroupRank, evalGroupRankStage, poolIds, manageShopIds); rewardDist.setUserId(user.getUserId()); - rewardDist.setEvalShopPoolIds(poolIds); - rewardDist.setShopIds(manageShopIds); - rewardDist.setEvalName(evalGroupRankName); -// rewardDist.setEvalType(evalType); rewardDist.setReward(reward); evalRewardDistService.save(rewardDist); - - BacklogBatchPlanItemReqDTO planItemReq = new BacklogBatchPlanItemReqDTO(); - planItemReq.setDataId(rewardDist.getId().toString()); - planItemReq.setUserId(user.getUserId()); - planItemReq.setPlanTime(new Date()); - planItemReq.setExpireTime(expireTime); - - Map dynamicMap = new HashMap<>(8); - dynamicMap.put("evalGroupName", evalGroupRankName); - dynamicMap.put("evalName", evalGroupRankStageName); -// dynamicMap.put("evalType", evalType.getName()); - dynamicMap.put("amount", decimalFormat.format(rewardDist.getReward())); - planItemReq.setDynamicMap(dynamicMap); - - Map extraData = new HashMap<>(); - planItemReq.setExtraData(extraData); + BacklogBatchPlanItemReqDTO planItemReq = this.createBacklog(rewardDist, user.getUserId()); + planItemReq.setDynamicMap(rewardDistDynamicMap(rewardDist, evalGroupRankName, evalGroupRankStageName, timeStr)); itemList.add(planItemReq); } } @@ -269,11 +256,43 @@ public class EvalRewardService { } } - public EvalRewardDist transferPo(EvalGroup evalGroup) { + + public BacklogBatchPlanItemReqDTO createBacklog(EvalRewardDist rewardDist, Long userId) { + Date expireTime = DateUtil.localDateTime2Date(LocalDateTime.now().plusDays(2L)); + BacklogBatchPlanItemReqDTO planItemReq = new BacklogBatchPlanItemReqDTO(); + planItemReq.setDataId(rewardDist.getId().toString()); + planItemReq.setUserId(userId); + planItemReq.setPlanTime(new Date()); + planItemReq.setExpireTime(expireTime); + planItemReq.setExtraData(new HashMap<>()); + return planItemReq; + } + + public Map rewardDistDynamicMap(EvalRewardDist rewardDist, String evalGroupRankName, String evalGroupRankStageName, String timeStr) { + DecimalFormat decimalFormat = new DecimalFormat("##########.##"); + Map dynamicMap = new HashMap<>(8); + dynamicMap.put("evalGroupRankName", evalGroupRankName); + dynamicMap.put("evalGroupRankStageName", evalGroupRankStageName); + dynamicMap.put("evalGroupRankStageTime", timeStr); + dynamicMap.put("amount", decimalFormat.format(rewardDist.getReward())); + return dynamicMap; + } + + public EvalRewardDist convertRewardDist(EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage, + List poolIds, List manageShopIds) { EvalRewardDist rewardDist = new EvalRewardDist(); - rewardDist.setEvalId(evalGroup.getEvalGroupRankId()); rewardDist.setEvalGroupId(evalGroup.getId()); -// rewardDist.setEvalGroupName(evalGroup.getName()); + rewardDist.setEvalGroupRankId(evalGroupRank.getId()); + rewardDist.setEvalGroupRankStageId(evalGroupRankStage.getId()); + rewardDist.setEvalGroupRankName(evalGroupRank.getName()); + String evalGroupRankStageName = (PublicUtil.isNotEmpty(evalGroupRankStage.getName()) ? evalGroupRankStage.getName() : "---"); + rewardDist.setEvalGroupRankStageName(evalGroupRankStageName); + rewardDist.setBeginTime(evalGroupRankStage.getBeginTime()); + rewardDist.setOverTime(evalGroupRankStage.getOverTime()); + rewardDist.setEvalShopPoolIds(poolIds); + rewardDist.setShopIds(manageShopIds); + + rewardDist.setEvalGroupId(evalGroup.getId()); rewardDist.setStatus(EvalRewardDistStatusEnum.NO_DIST); rewardDist.setGroupId(evalGroup.getGroupId()); rewardDist.setYn(Boolean.TRUE); -- libgit2 0.22.2