Commit 087fa936ec4ac987664bb870a189ba79fbb5697e

Authored by 姜超
1 parent 1278285e

feature(*): 考评时间进度展示

考评时间进度展示
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardParamVO.java
... ... @@ -2,6 +2,8 @@ package cn.fw.morax.domain.vo.eval;
2 2  
3 3 import cn.fw.morax.common.constant.Constant;
4 4 import cn.fw.morax.domain.enums.*;
  5 +import cn.fw.morax.domain.vo.MonthlyTargetValueVO;
  6 +import cn.fw.morax.domain.vo.StageTargetValueVO;
5 7 import com.baomidou.mybatisplus.annotation.TableLogic;
6 8 import lombok.Data;
7 9 import lombok.EqualsAndHashCode;
... ... @@ -127,6 +129,16 @@ public class EvalGroupRewardParamVO {
127 129 private BigDecimal reachValue;
128 130  
129 131 /**
  132 + * 业务系统阶段目标
  133 + */
  134 + private StageTargetValueVO businessStageTargetVo;
  135 +
  136 + /**
  137 + * 业务系统目标
  138 + */
  139 + private MonthlyTargetValueVO businessTargetVo;
  140 +
  141 + /**
130 142 * 转换为百分数展示
131 143 */
132 144 public void convertToPercent(){
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/eval/EvalGroupRewardPreconditionVO.java
... ... @@ -3,6 +3,8 @@ package cn.fw.morax.domain.vo.eval;
3 3 import cn.fw.morax.common.constant.Constant;
4 4 import cn.fw.morax.common.utils.PublicUtil;
5 5 import cn.fw.morax.domain.enums.*;
  6 +import cn.fw.morax.domain.vo.MonthlyTargetValueVO;
  7 +import cn.fw.morax.domain.vo.StageTargetValueVO;
6 8 import com.baomidou.mybatisplus.annotation.TableLogic;
7 9 import com.baomidou.mybatisplus.annotation.TableName;
8 10 import lombok.Data;
... ... @@ -118,6 +120,16 @@ public class EvalGroupRewardPreconditionVO{
118 120 private Boolean hit;
119 121  
120 122 /**
  123 + * 业务系统阶段目标
  124 + */
  125 + private StageTargetValueVO businessStageTargetVo;
  126 +
  127 + /**
  128 + * 业务系统目标
  129 + */
  130 + private MonthlyTargetValueVO businessTargetVo;
  131 +
  132 + /**
121 133 * 转换为百分数展示
122 134 */
123 135 public void convertToPercent(){
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/BusinessSysReportBizService.java
... ... @@ -166,7 +166,7 @@ public class BusinessSysReportBizService {
166 166 continue;
167 167 }
168 168 //计算绩效
169   - kpiCacheService.saveKpiCalcAndCacheAssess(groupId, endTime, Boolean.TRUE, Boolean.FALSE, Boolean.FALSE);
  169 + kpiCacheService.saveKpiCalcAndCacheAssess(groupId, endTime, Boolean.TRUE, Boolean.TRUE, Boolean.FALSE);
170 170 //计算考评
171 171 evalCalculateTaskService.cacheCalcForClosure(endTime, groupId, Boolean.FALSE);
172 172 //更新状态
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/ClosureBizService.java
... ... @@ -242,7 +242,7 @@ public class ClosureBizService {
242 242 if (PublicUtil.isEmpty(indicatorImports)) {
243 243 this.closure(groupId, monthly, MoraxClosureEnum.INDICATOR_IMPORT);
244 244 //计算绩效
245   - kpiCacheService.saveKpiCalcAndCacheAssess(groupId, endTime, Boolean.TRUE, Boolean.FALSE, Boolean.TRUE);
  245 + kpiCacheService.saveKpiCalcAndCacheAssess(groupId, endTime, Boolean.TRUE, Boolean.TRUE, Boolean.TRUE);
246 246 //计算考评
247 247 evalCalculateTaskService.cacheCalcForClosure(endTime, groupId, Boolean.TRUE);
248 248 //兜底 修改状态
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupPoolService.java
... ... @@ -15,6 +15,7 @@ import cn.fw.morax.domain.dto.eval.ManagerEvalPoolDTO;
15 15 import cn.fw.morax.domain.enums.*;
16 16 import cn.fw.morax.domain.vo.EvalPoolVO;
17 17 import cn.fw.morax.domain.vo.EvalSelectorVO;
  18 +import cn.fw.morax.domain.vo.StageTargetValueVO;
18 19 import cn.fw.morax.domain.vo.eval.*;
19 20 import cn.fw.morax.domain.vo.kpi.IndicatorUserValueVO;
20 21 import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankStaffVO;
... ... @@ -23,6 +24,7 @@ import cn.fw.morax.rpc.ehr.dto.StaffBaseInfoDTO;
23 24 import cn.fw.morax.service.biz.CommonService;
24 25 import cn.fw.morax.service.data.eval.*;
25 26 import cn.fw.morax.service.data.kpi.IndicatorUserStageTargetValueService;
  27 +import cn.fw.morax.service.data.kpi.IndicatorUserTargetValueService;
26 28 import cn.fw.morax.service.data.kpi.IndicatorUserValueService;
27 29 import cn.fw.morax.service.data.kpi.IndicatorsService;
28 30 import com.alibaba.fastjson.JSON;
... ... @@ -64,6 +66,7 @@ public class EvalGroupPoolService {
64 66 private final EvalGroupRewardTargetHitLogService evalGroupRewardTargetHitLogService;
65 67 private final EvalGroupRewardPreconditionService evalGroupRewardPreconditionService;
66 68 private final EvalGroupIndicatorLaddersService evalGroupIndicatorLaddersService;
  69 + private final IndicatorUserTargetValueService indicatorUserTargetValueService;
67 70 private final EvalGroupIndicatorHitLogService evalGroupIndicatorHitLogService;
68 71 private final EvalPoolIndicatorDetailService evalPoolIndicatorDetailService;
69 72 private final EvalGroupIndicatorParamService evalGroupIndicatorParamService;
... ... @@ -932,11 +935,52 @@ public class EvalGroupPoolService {
932 935 reward.setExemptionPunishCondValue(hitLog.map(EvalGroupRewardHitLog::getExemptionPunishCondValue).orElse(BigDecimal.ZERO));
933 936 reward.setExemptionPunishCondReachValue(hitLog.map(EvalGroupRewardHitLog::getExemptionPunishCondReachValue).orElse(BigDecimal.ZERO));
934 937  
  938 + //设置指标业务系统目标
  939 + this.setIndicatorBusinessTarget(referId, scopeType, dataDate, reward);
  940 +
935 941 //处理百分数
936 942 processRewardPercent(reward);
937 943 return reward;
938 944 }
939 945  
  946 + public void setIndicatorBusinessTarget(Long referId, EvalScopeEnum scopeType, LocalDate dataDate, EvalPoolRewardDetailVO reward) {
  947 + EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getByIdAndSetCalcTime(reward.getEvalGroupRankStageId(), dataDate);
  948 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroupRankStage.getEvalGroupRankId());
  949 + if (Boolean.TRUE.equals(evalGroupRank.getMultiStage())) {
  950 + for (EvalGroupRewardParamVO paramVO : reward.getLadderParams()) {
  951 + StageTargetValueVO stageTargetValueVO = indicatorUserStageTargetValueService.queryIndicatorTarget(referId, scopeType,
  952 + paramVO.getCode(), evalGroupRankStage.getBeginTime(), evalGroupRankStage.getOverTime());
  953 + paramVO.setBusinessStageTargetVo(stageTargetValueVO);
  954 + }
  955 + for (EvalGroupRewardParamVO paramVO : reward.getCommissionParams()) {
  956 + StageTargetValueVO stageTargetValueVO = indicatorUserStageTargetValueService.queryIndicatorTarget(referId, scopeType,
  957 + paramVO.getCode(), evalGroupRankStage.getBeginTime(), evalGroupRankStage.getOverTime());
  958 + paramVO.setBusinessStageTargetVo(stageTargetValueVO);
  959 + }
  960 + for (EvalGroupRewardParamVO paramVO : reward.getExemptionPunishCondParams()) {
  961 + StageTargetValueVO stageTargetValueVO = indicatorUserStageTargetValueService.queryIndicatorTarget(referId, scopeType,
  962 + paramVO.getCode(), evalGroupRankStage.getBeginTime(), evalGroupRankStage.getOverTime());
  963 + paramVO.setBusinessStageTargetVo(stageTargetValueVO);
  964 + }
  965 + for (EvalGroupRewardPreconditionVO preconditionVO : reward.getConds()) {
  966 + preconditionVO.setBusinessTargetVo(indicatorUserTargetValueService.queryIndicatorTarget(referId, scopeType, preconditionVO.getCode(), dataDate));
  967 + }
  968 + } else {
  969 + for (EvalGroupRewardParamVO paramVO : reward.getLadderParams()) {
  970 + paramVO.setBusinessTargetVo(indicatorUserTargetValueService.queryIndicatorTarget(referId, scopeType, paramVO.getCode(), dataDate));
  971 + }
  972 + for (EvalGroupRewardParamVO paramVO : reward.getCommissionParams()) {
  973 + paramVO.setBusinessTargetVo(indicatorUserTargetValueService.queryIndicatorTarget(referId, scopeType, paramVO.getCode(), dataDate));
  974 + }
  975 + for (EvalGroupRewardParamVO paramVO : reward.getExemptionPunishCondParams()) {
  976 + paramVO.setBusinessTargetVo(indicatorUserTargetValueService.queryIndicatorTarget(referId, scopeType, paramVO.getCode(), dataDate));
  977 + }
  978 + for (EvalGroupRewardPreconditionVO preconditionVO : reward.getConds()) {
  979 + preconditionVO.setBusinessTargetVo(indicatorUserTargetValueService.queryIndicatorTarget(referId, scopeType, preconditionVO.getCode(), dataDate));
  980 + }
  981 + }
  982 + }
  983 +
940 984 public EvalPoolRewardDetailVO getHitRewardDetailForSalary(Long userId, String dataId, LocalDate dataDate) {
941 985 String[] dataArr = dataId.split(Constant.EVAL_REWARD_DATA_ID_SEPARATOR);
942 986 if (PublicUtil.isEmpty(dataArr[0]) || PublicUtil.isEmpty(dataArr[1]) ||
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalGroupRankStageService.java
... ... @@ -24,6 +24,12 @@ public interface EvalGroupRankStageService extends IService<EvalGroupRankStage>
24 24 EvalGroupRankStage getByIdAndSetTime(Long id, LocalDate date);
25 25  
26 26 /**
  27 + * @param
  28 + * @return
  29 + */
  30 + EvalGroupRankStage getByIdAndSetCalcTime(Long id, LocalDate calcDate);
  31 +
  32 + /**
27 33 * 获取排名组开始的阶段
28 34 * @param rankId
29 35 * @return
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupRankStageServiceImpl.java
... ... @@ -34,6 +34,24 @@ public class EvalGroupRankStageServiceImpl extends ServiceImpl<EvalGroupRankStag
34 34 return rankStage;
35 35 }
36 36  
  37 + /**
  38 + * 计算时间 大于 阶段结束时间 返回阶段结束时间(计算时间15号, 阶段结束时间10号,返回10号)
  39 + * 计算时间 小于 阶段结束时间 返回计算时间 (计算时间15号, 阶段结束时间20号,返回15号)
  40 + */
  41 + @Override
  42 + public EvalGroupRankStage getByIdAndSetCalcTime(Long id, LocalDate calcDate) {
  43 + EvalGroupRankStage rankStage = this.getById(id);
  44 + if (PublicUtil.isEmpty(rankStage)) {
  45 + return null;
  46 + }
  47 + this.setPeriodStageTime(rankStage, calcDate);
  48 + //阶段结束时间 大于 计算时间 返回计算时间 (计算时间15号, 阶段结束时间20号,返回15号)
  49 + if (rankStage.getOverTime().isAfter(calcDate)) {
  50 + rankStage.setOverTime(calcDate);
  51 + }
  52 + return rankStage;
  53 + }
  54 +
37 55 @Override
38 56 public List<EvalGroupRankStage> getAllEffectStagesAndSetTime(Long rankId, LocalDate dataDate) {
39 57 //加上结束时间会排除已过期考评阶段
... ... @@ -114,6 +132,8 @@ public class EvalGroupRankStageServiceImpl extends ServiceImpl&lt;EvalGroupRankStag
114 132 */
115 133 @Override
116 134 public LocalDate getCalcDate(LocalDate calcDate, EvalGroupRankStage stage) {
  135 + //设置阶段时间
  136 + this.setPeriodStageTime(stage, calcDate);
117 137 //计算时间 大于 阶段结束时间 返回阶段结束时间
118 138 if (calcDate.isAfter(stage.getOverTime())) {
119 139 return stage.getOverTime();
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/IndicatorUserStageTargetValueService.java
... ... @@ -3,6 +3,7 @@ package cn.fw.morax.service.data.kpi;
3 3 import cn.fw.morax.dao.orm.ILocalService;
4 4 import cn.fw.morax.domain.db.kpi.IndicatorUserStageTargetValue;
5 5 import cn.fw.morax.domain.db.kpi.IndicatorUserStageValue;
  6 +import cn.fw.morax.domain.enums.EvalScopeEnum;
6 7 import cn.fw.morax.domain.vo.MonthlyTargetValueVO;
7 8 import cn.fw.morax.domain.vo.StageTargetValueVO;
8 9 import cn.fw.morax.domain.vo.kpi.IndicatorUserStageValueVO;
... ... @@ -36,4 +37,9 @@ public interface IndicatorUserStageTargetValueService extends ILocalService&lt;Indi
36 37 */
37 38 StageTargetValueVO queryShopIndicatorTarget(Long userId, String indicatorCode, LocalDate startDate, LocalDate endDate);
38 39  
  40 + /**
  41 + * 查询指标目标
  42 + */
  43 + StageTargetValueVO queryIndicatorTarget(Long referId, EvalScopeEnum scopeType, String indicatorCode, LocalDate startDate, LocalDate endDate);
  44 +
39 45 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/IndicatorUserTargetValueService.java
... ... @@ -2,6 +2,7 @@ package cn.fw.morax.service.data.kpi;
2 2  
3 3 import cn.fw.morax.dao.orm.ILocalService;
4 4 import cn.fw.morax.domain.db.kpi.IndicatorUserTargetValue;
  5 +import cn.fw.morax.domain.enums.EvalScopeEnum;
5 6 import cn.fw.morax.domain.vo.MonthlyTargetValueVO;
6 7 import com.baomidou.mybatisplus.extension.service.IService;
7 8  
... ... @@ -28,4 +29,9 @@ public interface IndicatorUserTargetValueService extends ILocalService&lt;Indicator
28 29 */
29 30 MonthlyTargetValueVO queryShopIndicatorTarget(Long shopId, String indicatorCode, LocalDate dataDate);
30 31  
  32 + /**
  33 + * 查询门店指标目标
  34 + */
  35 + MonthlyTargetValueVO queryIndicatorTarget(Long referId, EvalScopeEnum scopeType, String indicatorCode, LocalDate dataDate);
  36 +
31 37 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/impl/IndicatorUserStageTargetValueServiceImpl.java
... ... @@ -7,11 +7,13 @@ import cn.fw.morax.domain.db.kpi.IndicatorUserStageTargetValue;
7 7 import cn.fw.morax.domain.db.kpi.IndicatorUserStageValue;
8 8 import cn.fw.morax.domain.db.kpi.IndicatorUserTargetValue;
9 9 import cn.fw.morax.domain.enums.DimensionTypeEnum;
  10 +import cn.fw.morax.domain.enums.EvalScopeEnum;
10 11 import cn.fw.morax.domain.vo.MonthlyTargetValueVO;
11 12 import cn.fw.morax.domain.vo.StageTargetValueVO;
12 13 import cn.fw.morax.domain.vo.kpi.IndicatorUserStageValueVO;
13 14 import cn.fw.morax.service.data.kpi.IndicatorUserStageTargetValueService;
14 15 import cn.fw.morax.service.data.kpi.IndicatorUserStageValueService;
  16 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
15 17 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
16 18 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
17 19 import lombok.extern.slf4j.Slf4j;
... ... @@ -84,4 +86,31 @@ public class IndicatorUserStageTargetValueServiceImpl extends ServiceImpl&lt;Indica
84 86 StageTargetValueVO stageTargetValueVO = PublicUtil.copy(stageTargetValue, StageTargetValueVO.class);
85 87 return stageTargetValueVO;
86 88 }
  89 +
  90 + @Override
  91 + public StageTargetValueVO queryIndicatorTarget(Long referId, EvalScopeEnum scopeType, String indicatorCode, LocalDate startDate, LocalDate endDate) {
  92 + if (PublicUtil.isEmpty(referId) || PublicUtil.isEmpty(scopeType) || PublicUtil.isEmpty(indicatorCode) || PublicUtil.isEmpty(startDate) || PublicUtil.isEmpty(endDate)) {
  93 + log.error("查询门店阶段指标目标信息,参数错误");
  94 + return null;
  95 + }
  96 + LambdaQueryWrapper<IndicatorUserStageTargetValue> queryWrapper = Wrappers.<IndicatorUserStageTargetValue>lambdaQuery();
  97 + if (EvalScopeEnum.STAFF.equals(scopeType)) {
  98 + queryWrapper.eq(IndicatorUserStageTargetValue::getUserId, referId)
  99 + .eq(IndicatorUserStageTargetValue::getShopId, -1L);
  100 + } else {
  101 + queryWrapper.eq(IndicatorUserStageTargetValue::getUserId, -1L)
  102 + .eq(IndicatorUserStageTargetValue::getShopId, referId);
  103 + }
  104 + IndicatorUserStageTargetValue stageTargetValue = this.getOne(queryWrapper
  105 + .eq(IndicatorUserStageTargetValue::getIndicatorCode, indicatorCode)
  106 + .eq(IndicatorUserStageTargetValue::getBeginDate, startDate)
  107 + .eq(IndicatorUserStageTargetValue::getEndDate, endDate)
  108 + .eq(IndicatorUserStageTargetValue::getYn, Boolean.TRUE)
  109 + , Boolean.FALSE);
  110 + if (PublicUtil.isEmpty(stageTargetValue)) {
  111 + return null;
  112 + }
  113 + StageTargetValueVO stageTargetValueVO = PublicUtil.copy(stageTargetValue, StageTargetValueVO.class);
  114 + return stageTargetValueVO;
  115 + }
87 116 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/impl/IndicatorUserTargetValueServiceImpl.java
... ... @@ -3,10 +3,13 @@ package cn.fw.morax.service.data.kpi.impl;
3 3 import cn.fw.morax.common.utils.PublicUtil;
4 4 import cn.fw.morax.dao.kpi.IndicatorUserTargetValueDao;
5 5 import cn.fw.morax.domain.db.eval.EvalIndicatorImportExtra;
  6 +import cn.fw.morax.domain.db.kpi.IndicatorUserStageTargetValue;
6 7 import cn.fw.morax.domain.db.kpi.IndicatorUserTargetValue;
7 8 import cn.fw.morax.domain.enums.DimensionTypeEnum;
  9 +import cn.fw.morax.domain.enums.EvalScopeEnum;
8 10 import cn.fw.morax.domain.vo.MonthlyTargetValueVO;
9 11 import cn.fw.morax.service.data.kpi.IndicatorUserTargetValueService;
  12 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
10 13 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
11 14 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
12 15 import lombok.extern.slf4j.Slf4j;
... ... @@ -69,4 +72,31 @@ public class IndicatorUserTargetValueServiceImpl extends ServiceImpl&lt;IndicatorUs
69 72 MonthlyTargetValueVO monthlyTargetValueVO = PublicUtil.copy(indicatorUserTargetValue, MonthlyTargetValueVO.class);
70 73 return monthlyTargetValueVO;
71 74 }
  75 +
  76 + @Override
  77 + public MonthlyTargetValueVO queryIndicatorTarget(Long referId, EvalScopeEnum scopeType, String indicatorCode, LocalDate dataDate) {
  78 + if (PublicUtil.isEmpty(referId) || PublicUtil.isEmpty(scopeType) || PublicUtil.isEmpty(indicatorCode) || PublicUtil.isEmpty(dataDate)) {
  79 + log.error("查询门店阶段指标目标信息,参数错误");
  80 + return null;
  81 + }
  82 + LambdaQueryWrapper<IndicatorUserTargetValue> queryWrapper = Wrappers.<IndicatorUserTargetValue>lambdaQuery();
  83 + if (EvalScopeEnum.STAFF.equals(scopeType)) {
  84 + queryWrapper.eq(IndicatorUserTargetValue::getUserId, referId)
  85 + .eq(IndicatorUserTargetValue::getShopId, -1L);
  86 + } else {
  87 + queryWrapper.eq(IndicatorUserTargetValue::getUserId, -1L)
  88 + .eq(IndicatorUserTargetValue::getShopId, referId);
  89 + }
  90 + IndicatorUserTargetValue indicatorUserTargetValue = this.getOne(queryWrapper
  91 + .eq(IndicatorUserTargetValue::getDimensionType, DimensionTypeEnum.SHOP)
  92 + .eq(IndicatorUserTargetValue::getIndicatorCode, indicatorCode)
  93 + .eq(IndicatorUserTargetValue::getDataDate, dataDate)
  94 + .eq(IndicatorUserTargetValue::getYn, Boolean.TRUE)
  95 + , Boolean.FALSE);
  96 + if (PublicUtil.isEmpty(indicatorUserTargetValue)) {
  97 + return new MonthlyTargetValueVO();
  98 + }
  99 + MonthlyTargetValueVO monthlyTargetValueVO = PublicUtil.copy(indicatorUserTargetValue, MonthlyTargetValueVO.class);
  100 + return monthlyTargetValueVO;
  101 + }
72 102 }
... ...