diff --git a/doc/2023-05-18_update.sql b/doc/2023-05-18_update.sql new file mode 100644 index 0000000..f86f321 --- /dev/null +++ b/doc/2023-05-18_update.sql @@ -0,0 +1,6 @@ +ALTER TABLE `fw_morax`.`eval_shop_pool` + CHANGE COLUMN `eval_group_stage_id` `eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评排名阶段id' AFTER `eval_group_rank_id`; +ALTER TABLE `fw_morax`.`eval_user_pool` + CHANGE COLUMN `eval_group_stage_id` `eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评阶段id' AFTER `eval_group_rank_id`; +ALTER TABLE `fw_morax`.`eval_group_user` + ADD COLUMN `eval_group_rank_stage_id` bigint(20) NOT NULL COMMENT '考评排名组阶段id' AFTER `eval_group_rank_id`; diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupUser.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupUser.java index a3b883b..b5b83ce 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupUser.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalGroupUser.java @@ -24,6 +24,10 @@ public class EvalGroupUser extends BaseAuditableTimeEntity */ private Long evalGroupRankId; /** + * 考评排名组阶段id + */ + private Long evalGroupRankStageId; + /** * 考评组编码 */ private String egc; diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalShopPool.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalShopPool.java index 7ca188c..11eb4c4 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalShopPool.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalShopPool.java @@ -39,6 +39,14 @@ public class EvalShopPool extends BaseAuditableTimeEntity { * 考评组id */ private Long evalGroupId; + /** + * 考评排名组id + */ + private Long evalGroupRankId; + /** + * 考评排名组阶段id + */ + private Long evalGroupRankStageId; // /** // * 用户id diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserPool.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserPool.java index 543a598..2b09fe6 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserPool.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserPool.java @@ -29,12 +29,15 @@ public class EvalUserPool extends BaseAuditableTimeEntity { * 考评组编码 */ private String egc; - /** * 考评排名组id */ private Long evalGroupRankId; /** + * 考评排名组阶段id + */ + private Long evalGroupRankStageId; + /** * 考评组id */ private Long evalGroupId; diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java index c0fcec3..a1a7d93 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/kpi/KpiPoolDetailVO.java @@ -51,9 +51,9 @@ public class KpiPoolDetailVO { */ private String shopName; /** - * 原来总绩效得分 + * 真实总绩效得分 */ - private BigDecimal originKpiScore; + private BigDecimal realKpiScore; /** * 奖励绩效分 */ @@ -67,9 +67,9 @@ public class KpiPoolDetailVO { */ private BigDecimal totalScore; /** - * 绩效得分 + * 原始绩效得分(无奖惩分) */ - private BigDecimal kpiScore; + private BigDecimal originKpiScore; /** * 当月绩效得分率 */ diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java index 283c4ca..0d53285 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupUserTask.java @@ -74,9 +74,9 @@ public class EvalGroupUserTask { } stopWatch.start("考评组人员保存,保存条数:"+ evalGroupUsersForSave.size()); //逻辑删除今天已保存人员,保存人员 - Set kpiGroupIds = evalGroupUsersForSave.stream().map(EvalGroupUser::getEvalGroupId).collect(Collectors.toSet()); + Set evalGroupIds = evalGroupUsersForSave.stream().map(EvalGroupUser::getEvalGroupId).collect(Collectors.toSet()); evalGroupUserService.update(Wrappers.lambdaUpdate() - .in(EvalGroupUser::getEvalGroupId, kpiGroupIds) + .in(EvalGroupUser::getEvalGroupId, evalGroupIds) .eq(EvalGroupUser::getDataDate, yesterday) .eq(EvalGroupUser::getYn, Boolean.TRUE) .set(EvalGroupUser::getYn, Boolean.FALSE) diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java index 7a8af30..cd12f29 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java @@ -192,6 +192,7 @@ public class EvalGroupBizService { */ public EvalGroupRankVO evalGroupRankDetail(Long id) { EvalGroupRank evalGroupRank = evalGroupRankService.getById(id); + BV.notNull(evalGroupRank, "考评排名组为空,请重试"); EvalGroupRankVO evalGroupRankVO = PublicUtil.copy(evalGroupRank, EvalGroupRankVO.class); List stages = evalGroupRankStageService.list(Wrappers.lambdaQuery() diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java index bc9e046..b634500 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java @@ -88,6 +88,7 @@ public class EvalGroupUserBizService { } EvalGroup evalGroup = shopKpiGroupMap.get(user.getShopId()); user.setEvalGroupRankId(evalGroup.getEvalGroupRankId()); + user.setEvalGroupRankStageId(evalGroup.getEvalGroupRankStageId()); user.setEvalGroupId(evalGroup.getId()); user.setEgc(evalGroup.getEgc()); } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java index 89ccf46..c05637f 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java @@ -2,15 +2,15 @@ package cn.fw.morax.service.biz.eval; import cn.fw.ehr.sdk.api.enums.StaffShopTypeEnum; import cn.fw.morax.common.utils.PublicUtil; -import cn.fw.morax.domain.db.eval.EvalGroup; -import cn.fw.morax.domain.db.eval.EvalGroupUser; -import cn.fw.morax.domain.db.eval.EvalShopPool; -import cn.fw.morax.domain.db.eval.EvalUserPool; +import cn.fw.morax.domain.db.eval.*; +import cn.fw.morax.domain.enums.EvalScopeEnum; +import cn.fw.morax.domain.enums.EvalShopPoolStatusEnum; import cn.fw.morax.rpc.ehr.EhrRpcService; import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO; import cn.fw.morax.rpc.ehr.dto.StaffShopInfoDTO; import cn.fw.morax.rpc.oop.OopRpcService; import cn.fw.morax.rpc.oop.dto.ShopDTO; +import cn.fw.morax.service.data.eval.EvalGroupRewardDimService; import cn.fw.morax.service.data.eval.EvalShopPoolService; import cn.fw.morax.service.data.eval.EvalUserPoolService; import cn.fw.morax.service.data.salary.SalaryGroupUserService; @@ -41,6 +41,7 @@ public class EvalPoolCommonService { private SalaryGroupUserService salaryGroupUserService; private EvalUserPoolService evalUserPoolService; + private EvalGroupRewardDimService evalGroupRewardDimService; private EvalShopPoolService evalShopPoolService; private EhrRpcService ehrRpcService; private OopRpcService oopRpcService; @@ -75,7 +76,7 @@ public class EvalPoolCommonService { public Map inspectionShopPools(EvalGroup evalGroup, LocalDate localDate) { Set evalGroupShopIds = new HashSet<>(evalGroup.getShopIds()); List pools = evalShopPoolService.list(Wrappers.lambdaQuery() - .eq(EvalShopPool::getEgc, evalGroup.getEgc()) + .eq(EvalShopPool::getEvalGroupId, evalGroup.getId()) .in(EvalShopPool::getShopId, evalGroupShopIds) .eq(EvalShopPool::getMonthly, YearMonth.from(localDate)) .eq(EvalShopPool::getYn, Boolean.TRUE) @@ -86,9 +87,20 @@ public class EvalPoolCommonService { return v1; })); - for (Long shopId : evalGroupShopIds) { + List rewardDims = evalGroupRewardDimService.list(Wrappers.lambdaQuery() + .eq(EvalGroupRewardDim::getEvalGroupId, evalGroup.getId()) + .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP) + .eq(EvalGroupRewardDim::getYn, Boolean.TRUE) + ); + if (PublicUtil.isEmpty(rewardDims)) { + return new HashMap<>(); + } + Set distRewardShopIds = rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).collect(Collectors.toSet()); + for (Long shopId : distRewardShopIds) { if (! shopPoolMap.containsKey(shopId)) { - EvalShopPool shopPool = this.inspectionShopPool(shopId, evalGroup, localDate); + EvalShopPoolStatusEnum status = (distRewardShopIds.contains(shopId)) + ? EvalShopPoolStatusEnum.CALC_REWARD : EvalShopPoolStatusEnum.NO_REWARD; + EvalShopPool shopPool = this.inspectionShopPool(shopId, evalGroup, localDate, status); shopPoolMap.put(shopId, shopPool); } } @@ -101,9 +113,9 @@ public class EvalPoolCommonService { * @return */ @Transactional(rollbackFor = Exception.class) - public EvalShopPool inspectionShopPool(Long shopId, EvalGroup evalGroup, LocalDate localDate) { + public EvalShopPool inspectionShopPool(Long shopId, EvalGroup evalGroup, LocalDate localDate, EvalShopPoolStatusEnum status) { EvalShopPool evalShopPool = evalShopPoolService.getOne(Wrappers.lambdaQuery() - .eq(EvalShopPool::getEgc, evalGroup.getEgc()) + .eq(EvalShopPool::getId, evalGroup.getId()) .eq(EvalShopPool::getShopId, shopId) .eq(EvalShopPool::getYn, Boolean.TRUE) .eq(EvalShopPool::getMonthly, YearMonth.from(localDate).minusMonths(1)) @@ -117,16 +129,19 @@ public class EvalPoolCommonService { evalShopPool.setMonthly(YearMonth.from(localDate)); return evalShopPool; } - return this.createShopPoolData(shopId, evalGroup, localDate); + return this.createShopPoolData(shopId, evalGroup, localDate, status); } @Transactional(rollbackFor = Exception.class) - public EvalShopPool createShopPoolData(Long shopId, EvalGroup evalGroup, LocalDate localDate) { + public EvalShopPool createShopPoolData(Long shopId, EvalGroup evalGroup, LocalDate localDate, EvalShopPoolStatusEnum status) { ShopDTO shopDTO = oopRpcService.queryShop(shopId); EvalShopPool evalShopPool = new EvalShopPool(); evalShopPool.setEgc(evalGroup.getEgc()); evalShopPool.setEvalGroupId(evalGroup.getId()); + evalShopPool.setEvalGroupRankId(evalGroup.getEvalGroupRankId()); + evalShopPool.setEvalGroupRankStageId(evalGroup.getEvalGroupRankStageId()); // evalShopPool.setEvalId(evalGroup.getEvalId()); + evalShopPool.setStatus(status); evalShopPool.setShopId(shopId); evalShopPool.setShopName(shopDTO.getShortName()); evalShopPool.setScore(BigDecimal.ZERO); @@ -207,6 +222,8 @@ public class EvalPoolCommonService { // evalUserPool.setEvalId(user.getEvalGroupRankId()); evalUserPool.setEgc(user.getEgc()); evalUserPool.setEvalGroupId(user.getEvalGroupId()); + evalUserPool.setEvalGroupRankId(user.getEvalGroupRankId()); + evalUserPool.setEvalGroupRankStageId(user.getEvalGroupRankStageId()); evalUserPool.setUserId(user.getUserId()); evalUserPool.setUserName(user.getUserName()); evalUserPool.setPostId(user.getPostId()); diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/CombineIndicatorBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/CombineIndicatorBizService.java index 8366cce..fff8847 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/CombineIndicatorBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/CombineIndicatorBizService.java @@ -69,7 +69,7 @@ public class CombineIndicatorBizService { public List combineAndEvalIndicators(CombineIndicatorQueryDTO dto) { List combineAndEvalIndicatorVOS = Lists.newArrayListWithCapacity(100); - if (PublicUtil.isEmpty(dto.getCombineIndicator()) || Boolean.TRUE.equals(dto.getCombineIndicator())) { + if (PublicUtil.isEmpty(dto.getCombineIndicator()) || Boolean.FALSE.equals(dto.getCombineIndicator())) { List evalIndicators = evalIndicatorService.list(Wrappers.lambdaQuery() .eq(PublicUtil.isNotEmpty(dto.getSysId()), EvalIndicator::getSysId, dto.getSysId()) .eq(PublicUtil.isNotEmpty(dto.getRoleCode()), EvalIndicator::getRoleCode, dto.getRoleCode()) @@ -100,7 +100,7 @@ public class CombineIndicatorBizService { return combineAndEvalIndicatorVOS; } - if (PublicUtil.isEmpty(dto.getCombineIndicator()) || Boolean.FALSE.equals(dto.getCombineIndicator())) { + if (PublicUtil.isEmpty(dto.getCombineIndicator()) || Boolean.TRUE.equals(dto.getCombineIndicator())) { List combineIndicators = combineIndicatorService.list(Wrappers.lambdaQuery() .eq(CombineIndicator::getGroupId, dto.getGroupId()) .eq(PublicUtil.isNotEmpty(dto.getEnable()), CombineIndicator::getEnable, dto.getEnable()) diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java index 5d4085f..252b3e2 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java @@ -640,9 +640,10 @@ public class KpiPoolBizService { } } //奖励分正数、惩罚分负数,减去奖惩分数,得到原始分数 - BigDecimal originKpiScore = kpiPoolDetailVO.getKpiScore().subtract(rewardScore).subtract(punishScore); + BigDecimal originKpiScore = kpiPoolDetailVO.getOriginKpiScore().subtract(rewardScore).subtract(punishScore); kpiPoolDetailVO.setRewardScore(rewardScore); kpiPoolDetailVO.setPunishScore(punishScore.abs()); + kpiPoolDetailVO.setRealKpiScore(pool.getKpiScore()); kpiPoolDetailVO.setOriginKpiScore(originKpiScore); kpiPoolDetailVO.setRewards(new ArrayList<>()); @@ -713,29 +714,29 @@ public class KpiPoolBizService { * * @param pool */ - public void processRewardPoint(KpiPool pool, KpiPoolDetailVO poolDetailVO) { - List list = kpiRewardPointService.list(Wrappers.lambdaQuery() - .eq(KpiRewardPoint::getUserId, pool.getUserId()) - .eq(KpiRewardPoint::getPostId, pool.getPostId()) - .eq(KpiRewardPoint::getShopId, pool.getShopId()) - .eq(KpiRewardPoint::getMonthly, pool.getMonthly()) - .eq(KpiRewardPoint::getGroupId, pool.getGroupId()) - ); - BigDecimal rewardScore = BigDecimal.ZERO; - BigDecimal punishScore = BigDecimal.ZERO; - for (KpiRewardPoint point : list) { - if (BigDecimal.ZERO.compareTo(point.getScorePoint()) > 0) { - punishScore = punishScore.add(point.getScorePoint()); - } else { - rewardScore = rewardScore.add(point.getScorePoint()); - } - } - //奖励分正数、惩罚分负数,减去奖惩分数,得到原始分数 - BigDecimal originKpiScore = poolDetailVO.getKpiScore().subtract(rewardScore).subtract(punishScore); - poolDetailVO.setRewardScore(rewardScore); - poolDetailVO.setPunishScore(punishScore.abs()); - poolDetailVO.setOriginKpiScore(originKpiScore); - } +// public void processRewardPoint(KpiPool pool, KpiPoolDetailVO poolDetailVO) { +// List list = kpiRewardPointService.list(Wrappers.lambdaQuery() +// .eq(KpiRewardPoint::getUserId, pool.getUserId()) +// .eq(KpiRewardPoint::getPostId, pool.getPostId()) +// .eq(KpiRewardPoint::getShopId, pool.getShopId()) +// .eq(KpiRewardPoint::getMonthly, pool.getMonthly()) +// .eq(KpiRewardPoint::getGroupId, pool.getGroupId()) +// ); +// BigDecimal rewardScore = BigDecimal.ZERO; +// BigDecimal punishScore = BigDecimal.ZERO; +// for (KpiRewardPoint point : list) { +// if (BigDecimal.ZERO.compareTo(point.getScorePoint()) > 0) { +// punishScore = punishScore.add(point.getScorePoint()); +// } else { +// rewardScore = rewardScore.add(point.getScorePoint()); +// } +// } +// //奖励分正数、惩罚分负数,减去奖惩分数,得到原始分数 +// BigDecimal originKpiScore = poolDetailVO.getKpiScore().subtract(rewardScore).subtract(punishScore); +// poolDetailVO.setRewardScore(rewardScore); +// poolDetailVO.setPunishScore(punishScore.abs()); +// poolDetailVO.setOriginKpiScore(originKpiScore); +// } /** * 获取绩效组指标总分