Commit 3cbc22e1f91f424944d4ef75eebce7e34dbc5612

Authored by 姜超
1 parent 4964363d

feature(*): 考评排名组修改

考评排名组修改
doc/2023_update.sql
... ... @@ -558,4 +558,5 @@ ALTER TABLE `fw_morax`.`eval_group_user`
558 558 -- eval_group_rank
559 559 -- eval_group
560 560 -- kpi_stage_mq_log
561   --- indicator_user_stage_value
562 561 \ No newline at end of file
  562 +-- indicator_user_stage_value
  563 +-- 同步指标 考评得分率、绩效得分率
563 564 \ No newline at end of file
... ...
fw-morax-common/src/main/java/cn/fw/morax/common/config/SpecialIndicatorCodeVal.java
... ... @@ -34,4 +34,9 @@ public class SpecialIndicatorCodeVal {
34 34 */
35 35 private String kpiRatio;
36 36  
  37 + /**
  38 + * 考评得分率
  39 + */
  40 + private String evalRatio;
  41 +
37 42 }
... ...
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupDao.java
... ... @@ -27,12 +27,6 @@ public interface EvalGroupDao extends BaseMapper<EvalGroup> {
27 27 * @return
28 28 */
29 29 List<EvalGroup> getAllEffectGroups(@Param("day") LocalDate day);
30   - /**
31   - * 查询生效中的考评组
32   - * @param day
33   - * @return
34   - */
35   - List<EvalGroup> getAllEffectGroupByEgcs(@Param("egcs") List<String> egcs, @Param("day") LocalDate day);
36 30  
37 31 /**
38 32 * 查询生效中的考评组
... ... @@ -43,7 +37,7 @@ public interface EvalGroupDao extends BaseMapper&lt;EvalGroup&gt; {
43 37  
44 38 Set<Long> queryCalculableEvalGroupIds(@Param("day") LocalDate localDate);
45 39  
46   - Set<Long> queryDistributionShopReward(@Param("day") LocalDate localDate, @Param("scopeType") Integer scopeType);
  40 + Set<Long> queryDistributionShopReward(@Param("day") LocalDate localDate);
47 41  
48 42 /**
49 43 * 查询生效中的考评组
... ...
fw-morax-dao/src/main/resources/mapper/eval/EvalGroupMapper.xml
... ... @@ -8,9 +8,9 @@
8 8 </sql>
9 9  
10 10 <sql id="left_join_columns">
11   - t1.id,t1.eval_group_rank_id,
12   - t1.eval_group_rank_stage_id,t1.egc,t1.post_ids,t1.post_names,
13   - t1.shop_ids,t1.shop_names,t1.indicator_num,t1.group_id
  11 + t3.id,t3.eval_group_rank_id,
  12 + t3.eval_group_rank_stage_id,t3.egc,t3.post_ids,t3.post_names,
  13 + t3.shop_ids,t3.shop_names,t3.indicator_num,t3.group_id
14 14 </sql>
15 15  
16 16 <!-- 通用查询映射结果 -->
... ... @@ -32,11 +32,15 @@
32 32 <select id="getAllEffectGroups" resultMap="BaseResultMap">
33 33 select
34 34 <include refid="left_join_columns"/>
35   - from eval_group
36   - where yn = 1
37   - and DATE_FORMAT(begin_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{day}, '%Y-%m-%d')
38   - and DATE_FORMAT(over_time, '%Y-%m-%d') >= DATE_FORMAT(#{day}, '%Y-%m-%d')
39   - and eval_id in (select id from eval where `status` in (3,4) and yn = 1)
  35 + FROM
  36 + eval_group_rank t1
  37 + LEFT JOIN eval_group_rank_stage t2 ON t1.id = t2.eval_group_rank_id AND t2.yn = 1
  38 + LEFT JOIN eval_group t3 ON t2.id = t3.eval_group_rank_stage_id AND t3.yn = 1
  39 + WHERE
  40 + t1.yn = 1
  41 + AND t1.`status` IN ( 3, 4 )
  42 + and DATE_FORMAT(t2.begin_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{day}, '%Y-%m-%d')
  43 + and DATE_FORMAT(t2.over_time, '%Y-%m-%d') >= DATE_FORMAT(#{day}, '%Y-%m-%d')
40 44 </select>
41 45  
42 46 <select id="getAllEffectGroupByEgcs" resultMap="BaseResultMap">
... ... @@ -79,13 +83,16 @@
79 83  
80 84 <select id="queryDistributionShopReward" resultType="java.lang.Long">
81 85 select
82   - id
83   - from eval_group
84   - where yn = 1
85   - and DATE_FORMAT(begin_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{day}, '%Y-%m-%d')
86   - and DATE_FORMAT(over_time, '%Y-%m-%d') = DATE_FORMAT(#{day}, '%Y-%m-%d')
87   - and scope_type = #{scopeType}
88   - and eval_id in (select id from eval where `status` IN (3, 4) and yn = 1)
  86 + t3.id
  87 + FROM
  88 + eval_group_rank t1
  89 + LEFT JOIN eval_group_rank_stage t2 ON t1.id = t2.eval_group_rank_id AND t2.yn = 1
  90 + LEFT JOIN eval_group t3 ON t2.id = t3.eval_group_rank_stage_id AND t3.yn = 1
  91 + WHERE
  92 + t1.yn = 1
  93 + AND t1.`status` IN ( 3, 4 )
  94 + and DATE_FORMAT(t2.begin_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{day}, '%Y-%m-%d')
  95 + and DATE_FORMAT(t2.over_time, '%Y-%m-%d') = DATE_FORMAT(#{day}, '%Y-%m-%d')
89 96 </select>
90 97  
91 98 <select id="getEffectsByRankId" resultMap="BaseResultMap">
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/dto/query/ShopsPostsQueryDTO.java 0 → 100644
  1 +package cn.fw.morax.domain.dto.query;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Builder;
  5 +import lombok.Data;
  6 +import lombok.NoArgsConstructor;
  7 +
  8 +import javax.validation.constraints.NotNull;
  9 +import java.util.List;
  10 +
  11 +@Data
  12 +@Builder
  13 +@AllArgsConstructor
  14 +@NoArgsConstructor
  15 +public class ShopsPostsQueryDTO {
  16 +
  17 + /**
  18 + * 门店id
  19 + */
  20 + @NotNull(message = "门店不能为空")
  21 + private List<Long> shopIds;
  22 +
  23 + /**
  24 + * 岗位id
  25 + */
  26 + @NotNull(message = "岗位不能为空")
  27 + private List<Long> postIds;
  28 +
  29 +}
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/controller/app/EvalController.java
... ... @@ -2,25 +2,20 @@ package cn.fw.morax.server.controller.app;
2 2  
3 3  
4 4 import cn.fw.common.exception.BusinessException;
5   -import cn.fw.common.page.AppPage;
6 5 import cn.fw.common.web.annotation.ControllerMethod;
7 6 import cn.fw.common.web.auth.LoginAuthBean;
8 7 import cn.fw.common.web.auth.annotation.CurrentUser;
9 8 import cn.fw.data.base.domain.common.Message;
10 9 import cn.fw.morax.common.utils.PublicUtil;
  10 +import cn.fw.morax.domain.db.eval.EvalGroupRank;
11 11 import cn.fw.morax.domain.dto.eval.EvalDTO;
12   -import cn.fw.morax.domain.dto.eval.EvalGroupIndicatorRankDTO;
13 12 import cn.fw.morax.domain.dto.eval.EvalGroupRankQueryDto;
14 13 import cn.fw.morax.domain.dto.eval.EvalRewardDistDTO;
15   -import cn.fw.morax.domain.dto.query.EvalPoolQueryDTO;
16   -import cn.fw.morax.domain.vo.SelectorVO;
17 14 import cn.fw.morax.domain.vo.eval.*;
18   -import cn.fw.morax.domain.vo.kpi.KpiIndicatorRankVO;
19 15 import cn.fw.morax.service.biz.SettingDraftBizService;
20 16 import cn.fw.morax.service.biz.eval.*;
21 17 import cn.fw.security.auth.client.annotation.Authorization;
22 18 import cn.fw.security.auth.client.annotation.IgnoreAuth;
23   -import cn.fw.security.auth.client.annotation.IgnoreUserToken;
24 19 import cn.fw.security.auth.client.enums.AuthType;
25 20 import lombok.RequiredArgsConstructor;
26 21 import lombok.extern.slf4j.Slf4j;
... ... @@ -28,11 +23,7 @@ import org.springframework.validation.annotation.Validated;
28 23 import org.springframework.web.bind.annotation.*;
29 24  
30 25 import javax.validation.constraints.NotNull;
31   -import java.time.LocalDate;
32   -import java.time.YearMonth;
33 26 import java.util.List;
34   -import java.util.Objects;
35   -import java.util.Set;
36 27  
37 28 import static cn.fw.common.web.util.ResultBuilder.success;
38 29  
... ... @@ -51,29 +42,13 @@ import static cn.fw.common.web.util.ResultBuilder.success;
51 42 @RequestMapping("/app/eval")
52 43 public class EvalController {
53 44  
54   - private final EvalPoolService evalPoolService;
55   - private final EvalGroupPoolService evalGroupPoolService;
56   - private final EvalGroupRankBizService evalGroupRankBizService;
  45 + private final EvalRewardService evalRewardService;
57 46 private final EvalGroupBizService evalGroupBizService;
58   - private final EvalGroupDataService evalGroupDataService;
59 47 private final SettingDraftBizService settingDraftBizService;
60   - private final EvalRewardService evalRewardService;
  48 + private final EvalGroupRankBizService evalGroupRankBizService;
61 49 private final EvalIndicatorValueBizService evalIndicatorValueBizService;
62 50  
63 51 /**
64   - * 考评详情
65   - *
66   - * @param id
67   - * @return
68   - */
69   - @GetMapping("/group")
70   - @ControllerMethod("考评详情")
71   - public Message<EvalVO> evalGroupDetail(@NotNull(message = "考评组id不能为空") Long id) {
72   -
73   - return success(evalGroupBizService.evalDetail(id));
74   - }
75   -
76   - /**
77 52 * 考评草稿详情
78 53 *
79 54 * @param id 草稿id
... ... @@ -127,6 +102,17 @@ public class EvalController {
127 102 */
128 103 @GetMapping("/rank-group")
129 104 @ControllerMethod("考评排名组详情")
  105 + public Message<EvalGroupRankVO> evalGroupRankDetail(@NotNull(message = "考评排名组id不能为空") Long id) {
  106 + return success(evalGroupBizService.evalGroupRankDetail(id));
  107 + }
  108 +
  109 + /**
  110 + * 考评排名组详情
  111 + *
  112 + * @return
  113 + */
  114 + @GetMapping("/rank-groups")
  115 + @ControllerMethod("考评排名组详情")
130 116 public Message<List<EvalGroupVO>> rankEvalGroupDetail(@Validated EvalGroupRankQueryDto dto) {
131 117 return success(evalGroupBizService.rankEvalGroupDetail(dto));
132 118 }
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalConfigController.java
... ... @@ -11,14 +11,10 @@ import cn.fw.morax.domain.dto.eval.EvalConfigPostIndicatorsDTO;
11 11 import cn.fw.morax.domain.dto.eval.EvalGroupRankDTO;
12 12 import cn.fw.morax.domain.dto.eval.EvalShopIndicatorsDTO;
13 13 import cn.fw.morax.domain.dto.kpi.IndicatorAbleDTO;
14   -import cn.fw.morax.domain.dto.query.EvalGroupQueryDTO;
15 14 import cn.fw.morax.domain.dto.query.EvalIndicatorQueryDTO;
16 15 import cn.fw.morax.domain.dto.query.QueryConditionEvalIndicatorsListDTO;
17 16 import cn.fw.morax.domain.enums.ApplicableTypeEnum;
18   -import cn.fw.morax.domain.vo.eval.CompositeIndicatorVO;
19   -import cn.fw.morax.domain.vo.eval.EvalIndicatorVO;
20   -import cn.fw.morax.domain.vo.eval.EvalVO;
21   -import cn.fw.morax.domain.vo.eval.QueryConditionEvalIndicatorsListVO;
  17 +import cn.fw.morax.domain.vo.eval.*;
22 18 import cn.fw.morax.service.biz.eval.EvalGroupBizService;
23 19 import cn.fw.morax.service.biz.eval.EvalIndicatorBizService;
24 20 import cn.fw.security.auth.client.annotation.Authorization;
... ... @@ -103,48 +99,6 @@ public class EvalConfigController {
103 99 }
104 100  
105 101 /**
106   - * 保存考评排名组
107   - *
108   - * @param dto 考评
109   - * @return
110   - */
111   - @PostMapping("/group-rank/{submit}")
112   - @ControllerMethod("保存考评排名组")
113   - public Message<Void> saveEvalGroup(@Validated @RequestBody EvalGroupRankDTO dto,
114   - @PathVariable("submit") Integer submit,
115   - @CurrentUser LoginAuthBean user) {
116   - Boolean isSubmit = (submit == 1);
117   - evalGroupBizService.saveEvalGroupRank(dto, user, isSubmit);
118   - return success();
119   - }
120   -
121   - /**
122   - * 考评分页
123   - *
124   - * @param dto
125   - * @return
126   - */
127   - @GetMapping("/page")
128   - @ControllerMethod("考评分页")
129   - public Message<AppPage<EvalVO>> evalPage(@Validated EvalGroupQueryDTO dto) {
130   -
131   - return success(evalGroupBizService.evalPage(dto));
132   - }
133   -
134   - /**
135   - * 考评详情
136   - *
137   - * @param id
138   - * @return
139   - */
140   - @GetMapping("/group")
141   - @ControllerMethod("考评详情")
142   - public Message<EvalVO> evalGroupDetail(@NotNull(message = "考评组id不能为空") Long id) {
143   -
144   - return success(evalGroupBizService.evalDetail(id));
145   - }
146   -
147   - /**
148 102 * 获取岗位下的指标
149 103 *
150 104 * @param dto
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalGroupRankController.java
... ... @@ -10,9 +10,11 @@ import cn.fw.morax.common.utils.PublicUtil;
10 10 import cn.fw.morax.domain.dto.eval.EvalGroupRankDTO;
11 11 import cn.fw.morax.domain.dto.query.EvalGroupRankQueryDTO;
12 12 import cn.fw.morax.domain.dto.query.KpiGroupRankStaffQueryDTO;
  13 +import cn.fw.morax.domain.dto.query.ShopsPostsQueryDTO;
13 14 import cn.fw.morax.domain.vo.eval.EvalGroupRankVO;
14 15 import cn.fw.morax.domain.vo.eval.EvalGroupUserVO;
15 16 import cn.fw.morax.domain.vo.eval.EvalGroupVO;
  17 +import cn.fw.morax.service.biz.eval.EvalGroupBizService;
16 18 import cn.fw.morax.service.biz.eval.EvalGroupRankBizService;
17 19 import cn.fw.morax.service.biz.eval.EvalGroupUserBizService;
18 20 import cn.fw.security.auth.client.annotation.Authorization;
... ... @@ -44,6 +46,7 @@ public class EvalGroupRankController {
44 46  
45 47 private final EvalGroupRankBizService evalGroupRankBizService;
46 48 private final EvalGroupUserBizService evalGroupUserBizService;
  49 + private final EvalGroupBizService evalGroupBizService;
47 50  
48 51 /**
49 52 * 考评排名列表
... ... @@ -57,47 +60,34 @@ public class EvalGroupRankController {
57 60 return success(evalGroupRankBizService.evalGroupRankPage(dto));
58 61 }
59 62  
60   -// /**
61   -// * 未选择考评组列表
62   -// *
63   -// * @param dto
64   -// * @return
65   -// */
66   -// @GetMapping("/eval-group/page")
67   -// @ControllerMethod("未选择考评组列表")
68   -// public Message<AppPage<EvalGroupVO>> restEvalGroupPage(@Validated EvalGroupRankQueryDTO dto) {
69   -// if (PublicUtil.isEmpty(dto.getScopeType())) {
70   -// throw new BusinessException("参数错误");
71   -// }
72   -// return success(evalGroupRankBizService.restEvalGroupPage(dto));
73   -// }
74   -
75   -// /**
76   -// * 考评组排名配置保存
77   -// *
78   -// * @param dto
79   -// * @return
80   -// */
81   -// @PostMapping("/config")
82   -// @ControllerMethod("考评组排名配置保存")
83   -// public Message<Void> saveEvalGroupRank(@RequestBody @Validated EvalGroupRankDTO dto, @CurrentUser LoginAuthBean currentUser) {
84   -// evalGroupRankBizService.saveEvalGroupRank(dto);
85   -// return success();
86   -// }
87   -
  63 + /**
  64 + * 保存考评排名组
  65 + *
  66 + * @param dto 考评
  67 + * @return
  68 + */
  69 + @PostMapping("/group-rank/{submit}")
  70 + @ControllerMethod("保存考评排名组")
  71 + public Message<Void> saveEvalGroupRank(@Validated @RequestBody EvalGroupRankDTO dto,
  72 + @PathVariable("submit") Integer submit,
  73 + @CurrentUser LoginAuthBean user) {
  74 + Boolean isSubmit = (submit == 1);
  75 + evalGroupRankBizService.saveEvalGroupRank(dto, user, isSubmit);
  76 + return success();
  77 + }
88 78  
89 79 /**
90   - * 考评组排名组合详情
  80 + * 考评排名组详情
91 81 *
92   - * @param id
93 82 * @return
94 83 */
95   - @GetMapping("/config")
96   - @ControllerMethod("考评组排名组合详情")
97   - public Message<EvalGroupRankVO> evalGroupRankDetail(@NotNull(message = "考评组排名组合包id不能为空") Long id) {
98   - return success(evalGroupRankBizService.evalGroupRankDetail(id));
  84 + @GetMapping("/rank-group")
  85 + @ControllerMethod("考评排名组详情")
  86 + public Message<EvalGroupRankVO> evalGroupRankDetail(@NotNull(message = "考评排名组id不能为空") Long id) {
  87 + return success(evalGroupBizService.evalGroupRankDetail(id));
99 88 }
100 89  
  90 +
101 91 /**
102 92 * 删除考评组排名组合包
103 93 *
... ... @@ -127,6 +117,21 @@ public class EvalGroupRankController {
127 117 }
128 118  
129 119 /**
  120 + * 查询门店岗位人员
  121 + *
  122 + * @param dto
  123 + * @return
  124 + */
  125 + @GetMapping("/shop-post-staffs")
  126 + @ControllerMethod("查询门店岗位人员")
  127 + public Message<List<EvalGroupUserVO>> queryRankStaffs(@Validated ShopsPostsQueryDTO dto) {
  128 + if (PublicUtil.isEmpty(dto.getPostIds())) {
  129 + throw new BusinessException("参数错误");
  130 + }
  131 + return success(evalGroupUserBizService.queryShopPostStaffs(dto));
  132 + }
  133 +
  134 + /**
130 135 * 查询考评组人员
131 136 *
132 137 * @param evalGroupId
... ...
fw-morax-server/src/main/resources/application.yml
... ... @@ -154,6 +154,7 @@ special-indicator-code:
154 154 work-day-proportion: 'Work_Day_Proportion'
155 155 car-series: 'C660EDC7330a43f9'
156 156 kpi-ratio: '1780584022dA4e15'
  157 + eval-ratio: '20fC9F57CEd1476a'
157 158  
158 159 role-code:
159 160 hr-operation: 'HR'
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/reward/EvalRewardBaseCalculator.java
1 1 package cn.fw.morax.service.biz.calculator.eval.reward;
2 2  
  3 +import cn.fw.morax.common.config.SpecialIndicatorCodeVal;
3 4 import cn.fw.morax.common.utils.DateUtil;
4 5 import cn.fw.morax.common.utils.PublicUtil;
5 6 import cn.fw.morax.domain.bo.eval.EvalGroupUserShop;
6 7 import cn.fw.morax.domain.db.eval.*;
7 8 import cn.fw.morax.domain.db.kpi.IndicatorUserValue;
  9 +import cn.fw.morax.domain.db.kpi.KpiPool;
8 10 import cn.fw.morax.domain.enums.*;
9 11 import cn.fw.morax.service.biz.CommonService;
10 12 import cn.fw.morax.service.biz.calculator.Calculator;
... ... @@ -29,6 +31,7 @@ import java.math.BigDecimal;
29 31 import java.math.RoundingMode;
30 32 import java.time.LocalDate;
31 33 import java.time.LocalDateTime;
  34 +import java.time.YearMonth;
32 35 import java.time.temporal.ChronoUnit;
33 36 import java.util.*;
34 37 import java.util.concurrent.atomic.AtomicInteger;
... ... @@ -71,7 +74,11 @@ public abstract class EvalRewardBaseCalculator implements Calculator&lt;EvalGroupUs
71 74 @Autowired
72 75 protected EvalGroupRewardService evalGroupRewardService;
73 76 @Autowired
74   - private StringRedisTemplate stringRedisTemplate;
  77 + private SpecialIndicatorCodeVal specialIndicatorCodeVal;
  78 + @Autowired
  79 + private EvalUserPoolService evalUserPoolService;
  80 + @Autowired
  81 + private EvalShopPoolService evalShopPoolService;
75 82 @Autowired
76 83 private CommonService commonService;
77 84 @Value("${spring.cache.custom.global-prefix}:eval:reward:cond:rank")
... ... @@ -294,6 +301,16 @@ public abstract class EvalRewardBaseCalculator implements Calculator&lt;EvalGroupUs
294 301 */
295 302 protected Optional<BigDecimal> queryValue(EvalGroupUserShop obj, IndicatorCodeTypeEnum codeType, String indicatorCode) {
296 303 DimensionTypeEnum dimensionType = EvalScopeEnum.STAFF.equals(obj.getScopeType()) ? DimensionTypeEnum.STAFF : DimensionTypeEnum.SHOP;
  304 + if (specialIndicatorCodeVal.getEvalRatio().equals(indicatorCode)) {
  305 + if (DimensionTypeEnum.STAFF.equals(dimensionType)) {
  306 + EvalUserPool evalUserPool = evalUserPoolService.getById(obj.getPoolId());
  307 + return Optional.ofNullable(evalUserPool).map(EvalUserPool::getScoreRatio);
  308 + } else {
  309 + EvalShopPool evalShopPool = evalShopPoolService.getById(obj.getPoolId());
  310 + return Optional.ofNullable(evalShopPool).map(EvalShopPool::getScoreRatio);
  311 + }
  312 + }
  313 +
297 314 if (IndicatorCodeTypeEnum.INDICATOR.equals(codeType)) {
298 315 LambdaQueryWrapper<IndicatorUserValue> queryWrapper = Wrappers.<IndicatorUserValue>lambdaQuery()
299 316 .eq(IndicatorUserValue::getIndicatorCode, indicatorCode)
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupBizService.java
... ... @@ -50,6 +50,7 @@ public class EvalGroupBizService {
50 50 private final EvalGroupRewardLaddersService evalGroupRewardLaddersService;
51 51 private final EvalGroupRewardParamService evalGroupRewardParamService;
52 52 private final EvalGroupIndicatorService evalGroupIndicatorService;
  53 + private final EvalGroupRankStageService evalGroupRankStageService;
53 54 private final EvalGroupRewardService evalGroupRewardService;
54 55 private final EvalGroupDataService evalGroupDataService;
55 56 private final EvalGroupRankService evalGroupRankService;
... ... @@ -60,159 +61,6 @@ public class EvalGroupBizService {
60 61 private final SettingDraftService settingDraftService;
61 62 private final ApprovalBizService approvalBizService;
62 63  
63   - @Value("${spring.cache.custom.global-prefix}:eval:save:")
64   - @Getter
65   - private String saveGroupPrefix;
66   -
67   -
68   - /**
69   - * 考评组保存
70   - *
71   - * @param evalGroupRankDto
72   - * @param user
73   - * @return
74   - */
75   - @Transactional(rollbackFor = Exception.class)
76   - @DisLock(prefix = "#this.getSaveGroupPrefix()", key = "#evalGroupRankDto.getName()", message = "保存中,请勿重复操作")
77   - public void saveEvalGroupRank(EvalGroupRankDTO evalGroupRankDto, LoginAuthBean user, Boolean isSubmit) {
78   - this.checkNameRepetition(evalGroupRankDto);
79   - AtomicInteger evalGroupSize = new AtomicInteger();
80   - LocalDate lastStageOverTime = null;
81   - Boolean multiStage = evalGroupRankDto.getMultiStage();
82   - for (EvalGroupRankStageDTO stage : evalGroupRankDto.getStages()) {
83   - this.checkStageTime(evalGroupRankDto, stage, lastStageOverTime);
84   - for (EvalGroupDTO evalGroupDTO : stage.getEvalGroups()) {
85   - initEvalGroupDTO(evalGroupDTO);
86   - checkIndicator(evalGroupDTO, multiStage);
87   - checkReward(evalGroupDTO);
88   - checkEvalIndicatorLadders(evalGroupDTO.getIndicators());
89   - checkEvalRewardLadders(evalGroupDTO.getRewards());
90   - sortRewardRankLadders(evalGroupDTO.getRewards());
91   - this.setTargetVos(evalGroupDTO);
92   - evalGroupSize.incrementAndGet();
93   - List<Long> postIds = evalGroupDTO.getRewards().stream().flatMap(reward -> reward.getPostIds().stream())
94   - .distinct().collect(Collectors.toList());
95   - List<String> postNames = evalGroupDTO.getRewards().stream().flatMap(reward -> reward.getPostNames().stream())
96   - .distinct().collect(Collectors.toList());
97   - evalGroupDTO.setPostIds(postIds);
98   - evalGroupDTO.setPostNames(postNames);
99   - }
100   - lastStageOverTime = stage.getOverTime();
101   - }
102   -
103   - SettingDraft settingDraft = getSettingDraft(evalGroupRankDto, isSubmit);
104   - settingDraftService.saveOrUpdate(settingDraft);
105   - if (! isSubmit) {
106   - return;
107   - }
108   - approvalBizService.applyApproveEvalDraft(evalGroupRankDto, evalGroupSize.get(), settingDraft, user);
109   - }
110   -
111   - public void checkStageTime(EvalGroupRankDTO eval, EvalGroupRankStageDTO stage, LocalDate lastStageOverTime) {
112   - if (stage.getBeginTime().isBefore(eval.getBeginTime())) {
113   - throw new BusinessException("阶段开始时间不能在考评时间之前");
114   - }
115   - if (stage.getOverTime().isAfter(eval.getOverTime())) {
116   - throw new BusinessException("阶段结束时间不能在考评时间之前");
117   - }
118   - if (PublicUtil.isNotEmpty(lastStageOverTime)) {
119   - if (stage.getBeginTime().isBefore(lastStageOverTime)) {
120   - throw new BusinessException("阶段开始时间不能在上一个阶段结束时间之前");
121   - }
122   - }
123   - }
124   -
125   - /**
126   - * 获取草稿
127   - *
128   - * @param dto
129   - * @return
130   - */
131   - public SettingDraft getSettingDraft(EvalGroupRankDTO dto, Boolean submit) {
132   - SettingDraft settingDraft = null;
133   - if (PublicUtil.isEmpty(dto.getDraftId())) {
134   - settingDraft = new SettingDraft();
135   - settingDraft.setGroupId(dto.getGroupId());
136   - settingDraft.setYn(Boolean.TRUE);
137   - settingDraft.setType(SettingDraftTypeEnum.EVAL_GROUP_RANK);
138   - } else {
139   - settingDraft = settingDraftService.getById(dto.getDraftId());
140   - BV.notNull(settingDraft, "草稿配置不存在,请重试");
141   - }
142   - settingDraft.setStatus(submit ? SettingDraftStatusEnum.RELEASE_APPROVAL : SettingDraftStatusEnum.NO_RELEASE);
143   -// settingDraft.setEvalType(dto.getType());
144   - settingDraft.setName(dto.getName());
145   - settingDraft.setContent(JSONObject.toJSONString(dto));
146   - return settingDraft;
147   - }
148   -
149   - /**
150   - * 装换为目标对象
151   - *
152   - * @return
153   - */
154   - public void setTargetVos(EvalGroupDTO evalGroupDTO) {
155   -
156   - for (EvalGroupIndicatorDTO indicatorDTO : evalGroupDTO.getIndicators()) {
157   - List<EvalGroupIndicatorParamDTO> ladderParams = Optional.ofNullable(indicatorDTO.getLadderParams()).orElse(new ArrayList<>());
158   - List<EvalGroupIndicatorParamDTO> commissionParams = Optional.ofNullable(indicatorDTO.getCommissionParams()).orElse(new ArrayList<>());
159   - List<EvalGroupIndicatorPreconditionDTO> conds = Optional.ofNullable(indicatorDTO.getConds()).orElse(new ArrayList<>());
160   -
161   - List<EvalGroupIndicatorTargetVO> targetVOS = new ArrayList<>();
162   - for (EvalGroupIndicatorParamDTO paramDTO : ladderParams) {
163   - if (PublicUtil.isNotEmpty(paramDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()))) {
164   - EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(paramDTO, EvalGroupIndicatorTargetVO.class);
165   - targetVOS.add(targetVO);
166   - }
167   - }
168   -
169   - for (EvalGroupIndicatorParamDTO paramDTO : commissionParams) {
170   - if (PublicUtil.isNotEmpty(paramDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()))) {
171   - EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(paramDTO, EvalGroupIndicatorTargetVO.class);
172   - targetVOS.add(targetVO);
173   - }
174   - }
175   -
176   - for (EvalGroupIndicatorPreconditionDTO preconditionDTO : conds) {
177   - if (PublicUtil.isNotEmpty(preconditionDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()))) {
178   - EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(preconditionDTO, EvalGroupIndicatorTargetVO.class);
179   - targetVOS.add(targetVO);
180   - }
181   - }
182   -
183   - indicatorDTO.setTargets(targetVOS);
184   - }
185   -
186   - for (EvalGroupRewardDTO rewardDTO : evalGroupDTO.getRewards()) {
187   - List<EvalGroupRewardParamDTO> ladderParams = Optional.ofNullable(rewardDTO.getLadderParams()).orElse(new ArrayList<>());
188   - List<EvalGroupRewardParamDTO> commissionParams = Optional.ofNullable(rewardDTO.getCommissionParams()).orElse(new ArrayList<>());
189   - List<EvalGroupRewardPreconditionDTO> conds = Optional.ofNullable(rewardDTO.getConds()).orElse(new ArrayList<>());
190   -
191   - List<EvalGroupIndicatorTargetVO> targetVOS = new ArrayList<>();
192   - for (EvalGroupRewardParamDTO paramDTO : ladderParams) {
193   - if (PublicUtil.isNotEmpty(paramDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()))) {
194   - EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(paramDTO, EvalGroupIndicatorTargetVO.class);
195   - targetVOS.add(targetVO);
196   - }
197   - }
198   -
199   - for (EvalGroupRewardParamDTO paramDTO : commissionParams) {
200   - if (PublicUtil.isNotEmpty(paramDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()))) {
201   - EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(paramDTO, EvalGroupIndicatorTargetVO.class);
202   - targetVOS.add(targetVO);
203   - }
204   - }
205   -
206   - for (EvalGroupRewardPreconditionDTO preconditionDTO : conds) {
207   - if (PublicUtil.isNotEmpty(preconditionDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()))) {
208   - EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(preconditionDTO, EvalGroupIndicatorTargetVO.class);
209   - targetVOS.add(targetVO);
210   - }
211   - }
212   - rewardDTO.setTargets(targetVOS);
213   - }
214   - }
215   -
216 64 /**
217 65 * 装换为目标对象
218 66 *
... ... @@ -284,47 +132,7 @@ public class EvalGroupBizService {
284 132 }
285 133 }
286 134  
287   - /**
288   - * 检查时间
289   - *
290   - * @param dto
291   - */
292   - public void initEvalGroupDTO(EvalGroupDTO dto) {
293   - if (PublicUtil.isEmpty(dto.getIndicators())) {
294   - dto.setIndicators(new ArrayList<>());
295   - }
296   - if (PublicUtil.isEmpty(dto.getRewards())) {
297   - dto.setRewards(new ArrayList<>());
298   - }
299   - for (EvalGroupIndicatorDTO indicatorDTO : dto.getIndicators()) {
300   - if (PublicUtil.isEmpty(indicatorDTO.getLadderParams())) {
301   - indicatorDTO.setLadderParams(new ArrayList<>());
302   - }
303   - if (PublicUtil.isEmpty(indicatorDTO.getCommissionParams())) {
304   - indicatorDTO.setCommissionParams(new ArrayList<>());
305   - }
306   - if (PublicUtil.isEmpty(indicatorDTO.getLadders())) {
307   - indicatorDTO.setLadders(new ArrayList<>());
308   - }
309   - if (PublicUtil.isEmpty(indicatorDTO.getConds())) {
310   - indicatorDTO.setConds(new ArrayList<>());
311   - }
312   - }
313   - for (EvalGroupRewardDTO rewardDTO : dto.getRewards()) {
314   - if (PublicUtil.isEmpty(rewardDTO.getLadderParams())) {
315   - rewardDTO.setLadderParams(new ArrayList<>());
316   - }
317   - if (PublicUtil.isEmpty(rewardDTO.getCommissionParams())) {
318   - rewardDTO.setCommissionParams(new ArrayList<>());
319   - }
320   - if (PublicUtil.isEmpty(rewardDTO.getLadders())) {
321   - rewardDTO.setLadders(new ArrayList<>());
322   - }
323   - if (PublicUtil.isEmpty(rewardDTO.getConds())) {
324   - rewardDTO.setConds(new ArrayList<>());
325   - }
326   - }
327   - }
  135 +
328 136 /**
329 137 * 检查时间
330 138 *
... ... @@ -347,258 +155,7 @@ public class EvalGroupBizService {
347 155 // }
348 156 }
349 157  
350   - /**
351   - * 检查绩效组排名名称是否重复
352   - *
353   - * @param evalGroupRankDto
354   - */
355   - public void checkNameRepetition(EvalGroupRankDTO evalGroupRankDto) {
356   - int count = evalGroupRankService.count(Wrappers.<EvalGroupRank>lambdaQuery()
357   - .eq(EvalGroupRank::getName, evalGroupRankDto.getName())
358   - .ne(PublicUtil.isNotEmpty(evalGroupRankDto.getId()), EvalGroupRank::getId, evalGroupRankDto.getId())
359   - .eq(EvalGroupRank::getYn, Boolean.TRUE)
360   - );
361   - BV.isTrue(count <= 0, "考评排名组名称重复,请重新输入");
362   - }
363   -
364   - /**
365   - * 检查阶梯分值
366   - * @param indicators
367   - */
368   - private void checkEvalIndicatorLadders(List<EvalGroupIndicatorDTO> indicators) {
369   - Integer baseScore = null;
370   - for (EvalGroupIndicatorDTO indicatorDto : indicators) {
371   - if (ScoreWayEnum.NORMAL.equals(indicatorDto.getScoreWay())) {
372   - continue;
373   - }
374   -
375   - baseScore = indicatorDto.getBaseScore();
376   - List<EvalGroupIndicatorLaddersDTO> ladders = indicatorDto.getLadders();
377   - Collections.sort(ladders);
378 158  
379   - //阶梯值校验 标准分不能超过指标基础分,阶梯值必须连续
380   - for (EvalGroupIndicatorLaddersDTO laddersDto : ladders) {
381   - BV.isTrue(PublicUtil.isNotEmpty(laddersDto.getLower()), "阶梯下限不能为空");
382   - BV.isTrue(PublicUtil.isNotEmpty(laddersDto.getUpper()), "阶梯上限不能为空");
383   -
384   - //阶梯标准分不能超过绩效分值
385   - if (laddersDto.getStandardScore().compareTo(baseScore) > 0) {
386   - throw new BusinessException("【" + indicatorDto.getName() + "】的阶梯标准分不能超过绩效分值");
387   - }
388   - }
389   - //校验阶梯
390   - CommonService.checkLadders(ladders, indicatorDto.getName());
391   -
392   - //校验条件
393   - for (EvalGroupIndicatorPreconditionDTO condDTO : indicatorDto.getConds()) {
394   - CommonService.checkLadders(condDTO.getLadders(), indicatorDto.getName());
395   - }
396   - }
397   - }
398   -
399   - /**
400   - * 检查阶梯分值
401   - * @param rewards
402   - */
403   - private void checkEvalRewardLadders(List<EvalGroupRewardDTO> rewards) {
404   - for (EvalGroupRewardDTO reward : rewards) {
405   -
406   - String rewardName = reward.getName();
407   - List<EvalGroupRewardLaddersDTO> ladders = reward.getLadders();
408   - if (EvalRewardCalMethodEnum.RANK.equals(reward.getCalMethod()) ||
409   - EvalRewardCalMethodEnum.LADDER.equals(reward.getCalMethod()) ||
410   - EvalRewardCalMethodEnum.LADDER_DOUBLE.equals(reward.getCalMethod())) {
411   - BV.isTrue(PublicUtil.isNotEmpty(ladders), "阶梯不能为空");
412   - Collections.sort(ladders);
413   - }
414   -
415   - for (EvalGroupRewardLaddersDTO ladder : ladders) {
416   - BV.isTrue(PublicUtil.isNotEmpty(ladder.getLower()), "阶梯下限不能为空");
417   - BV.isTrue(PublicUtil.isNotEmpty(ladder.getUpper()), "阶梯上限不能为空");
418   - }
419   -
420   - switch (reward.getCalMethod()) {
421   - case TOTAL_PROPORTION: case FIXATION:{
422   - if (PublicUtil.isNotEmpty(ladders)) {
423   - throw new BusinessException("计算方式【" + reward.getCalMethod().getName() + "】不能配置阶梯");
424   - }
425   - break;
426   - }
427   -// case RANK:
428   - case LADDER:
429   - case LADDER_DOUBLE:
430   - {
431   - CommonService.checkLadders(ladders, rewardName);
432   - break;
433   - }
434   - }
435   -
436   - }
437   - }
438   -
439   - /**
440   - * 检查阶梯分值
441   - * @param rewards
442   - */
443   - private void sortRewardRankLadders(List<EvalGroupRewardDTO> rewards) {
444   - for (EvalGroupRewardDTO reward : rewards) {
445   - if (! EvalRewardCalMethodEnum.RANK.equals(reward.getCalMethod())) {
446   - continue;
447   - }
448   -
449   - List<EvalGroupRewardLaddersDTO> ladders = reward.getLadders();
450   - Collections.sort(ladders, new Comparator<EvalGroupRewardLaddersDTO>() {
451   - @Override
452   - public int compare(EvalGroupRewardLaddersDTO o1, EvalGroupRewardLaddersDTO o2) {
453   - if (PublicUtil.isEmpty(o1.getRankOrderType())) {
454   - return -1;
455   - }
456   - if (PublicUtil.isEmpty(o2.getRankOrderType())) {
457   - return 1;
458   - }
459   - //正数在前 负数在后
460   - Integer order = o1.getRankOrderType().compareTo(o2.getRankOrderType());
461   - if (order == 0) {
462   - //大的在后
463   - return o1.getLower().subtract(o2.getLower()).intValue();
464   - }
465   - return order;
466   - }
467   - });
468   -
469   - }
470   - }
471   -
472   - /**
473   - * 检查考评组指标
474   - *
475   - * @param evalGroupDTO
476   - */
477   - public void checkIndicator(EvalGroupDTO evalGroupDTO, Boolean multiStage) {
478   - for (EvalGroupIndicatorDTO indicator : evalGroupDTO.getIndicators()) {
479   - String indicatorName = indicator.getName();
480   -
481   - if (ScoreWayEnum.LADDER.equals(indicator.getScoreWay())) {
482   - BV.notNull(indicator.getLaddersType(), indicatorName + " 台阶数据类型不能为空");
483   - }
484   -
485   - if (PublicUtil.isNotEmpty(indicator.getLadderParams())) {
486   - BigDecimal proportion = indicator.getLadderParams().stream()
487   - .map(EvalGroupIndicatorParamDTO::getProportion)
488   - .reduce(BigDecimal.ZERO, BigDecimal::add);
489   - BV.isTrue(Constant.ONE_HUNDRED.compareTo(proportion) == 0, "【" + indicator.getName() + "】台阶占比总和必须为100");
490   -
491   - for (EvalGroupIndicatorParamDTO paramDTO : indicator.getLadderParams()) {
492   - if (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()) &&
493   - (PublicUtil.isEmpty(paramDTO.getTargetType()) || PublicUtil.isEmpty(paramDTO.getTargetValue()))) {
494   - paramDTO.setTargetType(TargetTypeEnum.NO);
495   - }
496   - if (PublicUtil.isNotEmpty(paramDTO.getTargetCalcType())) {
497   - if (multiStage) {
498   - if (TargetCalcTypeEnum.STAGE_TARGET.equals(paramDTO.getTargetCalcType()) ||
499   - TargetCalcTypeEnum.TIME_SCHEDULE.equals(paramDTO.getTargetCalcType())) {
500   - throw new BusinessException("多阶段目标只能选择阶段目标或时间进度");
501   - }
502   - } else if (TargetCalcTypeEnum.TARGET_VALUE.equals(paramDTO.getTargetCalcType()) ||
503   - TargetCalcTypeEnum.MINIMUM.equals(paramDTO.getTargetCalcType())) {
504   - throw new BusinessException("非多阶段目标只能选择百分比或数量");
505   - }
506   - }
507   - }
508   - }
509   -
510   - if (PublicUtil.isNotEmpty(indicator.getCommissionParams())) {
511   - BigDecimal proportion = indicator.getCommissionParams().stream()
512   - .map(EvalGroupIndicatorParamDTO::getProportion)
513   - .reduce(BigDecimal.ZERO, BigDecimal::add);
514   - BV.isTrue(Constant.ONE_HUNDRED.compareTo(proportion) == 0, "【" + indicator.getName() + "】提成占比总和必须为100");
515   -
516   - for (EvalGroupIndicatorParamDTO paramDTO : indicator.getCommissionParams()) {
517   - if (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()) &&
518   - (PublicUtil.isEmpty(paramDTO.getTargetType()) || PublicUtil.isEmpty(paramDTO.getTargetValue()))) {
519   - paramDTO.setTargetType(TargetTypeEnum.NO);
520   - continue;
521   - }
522   - if (PublicUtil.isNotEmpty(paramDTO.getTargetCalcType())) {
523   - if (multiStage) {
524   - if (TargetCalcTypeEnum.STAGE_TARGET.equals(paramDTO.getTargetCalcType()) ||
525   - TargetCalcTypeEnum.TIME_SCHEDULE.equals(paramDTO.getTargetCalcType())) {
526   - throw new BusinessException("多阶段目标只能选择阶段目标或时间进度");
527   - }
528   - } else if (TargetCalcTypeEnum.TARGET_VALUE.equals(paramDTO.getTargetCalcType()) ||
529   - TargetCalcTypeEnum.MINIMUM.equals(paramDTO.getTargetCalcType())) {
530   - throw new BusinessException("非多阶段目标只能选择百分比或数量");
531   - }
532   - }
533   - }
534   - }
535   -
536   - if (PublicUtil.isNotEmpty(indicator.getConds())) {
537   - for (EvalGroupIndicatorPreconditionDTO preconditionDTO : indicator.getConds()) {
538   - if (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()) &&
539   - (PublicUtil.isEmpty(preconditionDTO.getTargetType()) || PublicUtil.isEmpty(preconditionDTO.getTargetValue()))) {
540   - preconditionDTO.setTargetType(TargetTypeEnum.NO);
541   - continue;
542   - }
543   - }
544   - }
545   -
546   - }
547   - }
548   -
549   - /**
550   - * 检查考评组指标
551   - *
552   - * @param evalGroupDTO
553   - */
554   - public void checkReward(EvalGroupDTO evalGroupDTO) {
555   - for (EvalGroupRewardDTO reward : evalGroupDTO.getRewards()) {
556   - String rewardName = reward.getName();
557   -
558   - if (EvalRewardCalMethodEnum.LADDER.equals(reward.getCalMethod()) ||
559   - EvalRewardCalMethodEnum.LADDER_DOUBLE.equals(reward.getCalMethod()) ||
560   - EvalRewardCalMethodEnum.RANK.equals(reward.getCalMethod())) {
561   - BV.notNull(reward.getLaddersType(), rewardName + " 台阶数据类型不能为空");
562   - }
563   -
564   - if (PublicUtil.isNotEmpty(reward.getCommissionParams())) {
565   - BigDecimal proportion = reward.getCommissionParams().stream()
566   - .map(EvalGroupRewardParamDTO::getProportion)
567   - .reduce(BigDecimal.ZERO, BigDecimal::add);
568   - BV.isTrue(Constant.ONE_HUNDRED.compareTo(proportion) == 0, "【" + rewardName + "】台阶占比总和必须为100");
569   -
570   - for (EvalGroupRewardParamDTO commissionParam : reward.getCommissionParams()) {
571   - if (! TargetTypeEnum.NO.equals(commissionParam.getTargetType()) &&
572   - (PublicUtil.isEmpty(commissionParam.getTargetType()) || PublicUtil.isEmpty(commissionParam.getTargetValue()))) {
573   - commissionParam.setTargetType(TargetTypeEnum.NO);
574   - }
575   - }
576   - }
577   -
578   - if (PublicUtil.isNotEmpty(reward.getLadderParams())) {
579   - BigDecimal proportion = reward.getLadderParams().stream()
580   - .map(EvalGroupRewardParamDTO::getProportion)
581   - .reduce(BigDecimal.ZERO, BigDecimal::add);
582   - BV.isTrue(Constant.ONE_HUNDRED.compareTo(proportion) == 0, "【" + rewardName + "】提成占比总和必须为100");
583   -
584   - for (EvalGroupRewardParamDTO commissionParam : reward.getLadderParams()) {
585   - if (! TargetTypeEnum.NO.equals(commissionParam.getTargetType()) &&
586   - (PublicUtil.isEmpty(commissionParam.getTargetType()) || PublicUtil.isEmpty(commissionParam.getTargetValue()))) {
587   - commissionParam.setTargetType(TargetTypeEnum.NO);
588   - }
589   - }
590   - }
591   -
592   - if (PublicUtil.isNotEmpty(reward.getConds())) {
593   - for (EvalGroupRewardPreconditionDTO preconditionDTO : reward.getConds()) {
594   - if (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()) &&
595   - (PublicUtil.isEmpty(preconditionDTO.getTargetType()) || PublicUtil.isEmpty(preconditionDTO.getTargetValue()))) {
596   - preconditionDTO.setTargetType(TargetTypeEnum.NO);
597   - }
598   - }
599   - }
600   - }
601   - }
602 159  
603 160 /**
604 161 * 分页查询
... ... @@ -634,32 +191,38 @@ public class EvalGroupBizService {
634 191 });
635 192 }
636 193  
  194 +
637 195 /**
638   - * 考评组详情
  196 + * 考评组排名组合详情
639 197 *
640   - * @param evalId
  198 + * @param id
641 199 * @return
642 200 */
643   - public EvalVO evalDetail(Long evalId) {
644   - Eval eval = evalService.getById(evalId);
645   - BV.notNull(eval, "考评配置不存在,请重试");
646   - EvalVO evalVO = PublicUtil.copy(eval, EvalVO.class);
  201 + public EvalGroupRankVO evalGroupRankDetail(Long id) {
  202 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(id);
  203 + EvalGroupRankVO evalGroupRankVO = PublicUtil.copy(evalGroupRank, EvalGroupRankVO.class);
647 204  
648   - List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery()
649   -// .in(EvalGroup::getEvalId, evalId)
650   - .in(EvalGroup::getYn, Boolean.TRUE)
  205 + List<EvalGroupRankStage> stages = evalGroupRankStageService.list(Wrappers.<EvalGroupRankStage>lambdaQuery()
  206 + .in(EvalGroupRankStage::getEvalGroupRankId, evalGroupRankVO.getId())
  207 + .eq(EvalGroupRankStage::getYn, Boolean.TRUE)
651 208 );
652   - List<EvalGroupVO> evalGroupVOs = PublicUtil.copyList(evalGroups, EvalGroupVO.class);
653   - for (EvalGroupVO evalGroupVO : evalGroupVOs) {
654   - this.setEvalGroupIndicator(evalGroupVO);
655   - this.setEvalGroupReward(evalGroupVO);
656   - this.setTargetVos(evalGroupVO);
657   - }
658   - evalVO.setEvalGroups(evalGroupVOs);
  209 + List<EvalGroupRankStageVO> stageVOS = PublicUtil.copyList(stages, EvalGroupRankStageVO.class);
  210 + evalGroupRankVO.setStages(stageVOS);
659 211  
660   - return evalVO;
661   - }
  212 + List<EvalGroup> evalGroups = evalGroupService.getEvalGroups(evalGroupRankVO.getId());
  213 + List<EvalGroupVO> evalGroupVOS = PublicUtil.copyList(evalGroups, EvalGroupVO.class);
  214 + Map<Long, List<EvalGroupVO>> evalGroupStageMap = evalGroupVOS.stream().collect(Collectors.groupingBy(EvalGroupVO::getEvalGroupRankStageId));
  215 + for (EvalGroupRankStageVO stageVO : stageVOS) {
  216 + stageVO.setEvalGroups(evalGroupStageMap.getOrDefault(stageVO.getId(), new ArrayList<>()));
  217 + for (EvalGroupVO evalGroupVO : stageVO.getEvalGroups()) {
  218 + this.setEvalGroupIndicator(evalGroupVO);
  219 + this.setEvalGroupReward(evalGroupVO);
  220 + this.setTargetVos(evalGroupVO);
  221 + }
662 222  
  223 + }
  224 + return evalGroupRankVO;
  225 + }
663 226 /**
664 227 * 考评排名组详情
665 228 *
... ... @@ -1059,4 +622,5 @@ public class EvalGroupBizService {
1059 622 }
1060 623  
1061 624 }
  625 +
1062 626 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupRankBizService.java
1 1 package cn.fw.morax.service.biz.eval;
2 2  
  3 +import cn.fw.common.exception.BusinessException;
3 4 import cn.fw.common.page.AppPage;
  5 +import cn.fw.common.web.annotation.DisLock;
  6 +import cn.fw.common.web.auth.LoginAuthBean;
4 7 import cn.fw.morax.common.constant.Constant;
5 8 import cn.fw.morax.common.utils.PublicUtil;
  9 +import cn.fw.morax.domain.db.SettingDraft;
6 10 import cn.fw.morax.domain.db.eval.*;
7   -import cn.fw.morax.domain.dto.eval.EvalGroupRankDTO;
8   -import cn.fw.morax.domain.dto.eval.EvalGroupRankQueryDto;
  11 +import cn.fw.morax.domain.dto.eval.*;
9 12 import cn.fw.morax.domain.dto.query.EvalGroupRankQueryDTO;
10   -import cn.fw.morax.domain.enums.EvalScopeEnum;
11   -import cn.fw.morax.domain.enums.SettingStatusEnum;
  13 +import cn.fw.morax.domain.enums.*;
12 14 import cn.fw.morax.domain.vo.eval.*;
  15 +import cn.fw.morax.service.biz.ApprovalBizService;
  16 +import cn.fw.morax.service.biz.CommonService;
  17 +import cn.fw.morax.service.data.SettingDraftService;
13 18 import cn.fw.morax.service.data.eval.*;
  19 +import com.alibaba.fastjson.JSONObject;
14 20 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
15 21 import lombok.Getter;
16 22 import lombok.RequiredArgsConstructor;
... ... @@ -19,11 +25,10 @@ import org.springframework.beans.factory.annotation.Value;
19 25 import org.springframework.stereotype.Service;
20 26 import org.springframework.transaction.annotation.Transactional;
21 27  
  28 +import java.math.BigDecimal;
22 29 import java.time.LocalDate;
23   -import java.util.ArrayList;
24   -import java.util.HashSet;
25   -import java.util.List;
26   -import java.util.Map;
  30 +import java.util.*;
  31 +import java.util.concurrent.atomic.AtomicInteger;
27 32 import java.util.stream.Collectors;
28 33  
29 34 import static cn.fw.common.businessvalidator.Validator.BV;
... ... @@ -35,15 +40,16 @@ public class EvalGroupRankBizService {
35 40  
36 41 private final EvalGroupRankStageService evalGroupRankStageService;
37 42 private final EvalGroupRankService evalGroupRankService;
  43 + private final SettingDraftService settingDraftService;
  44 + private final ApprovalBizService approvalBizService;
38 45 private final EvalUserPoolService evalUserPoolService;
39 46 private final EvalShopPoolService evalShopPoolService;
40 47 private final EvalGroupService evalGroupService;
41 48 private final EvalService evalService;
42 49  
43   - @Value("${spring.cache.custom.global-prefix}:kpi:group:save:")
  50 + @Value("${spring.cache.custom.global-prefix}:eval:rank:save:")
44 51 @Getter
45   - private String savePrefix;
46   -
  52 + private String saveGroupPrefix;
47 53 /**
48 54 * 考评排名列表
49 55 *
... ... @@ -109,209 +115,499 @@ public class EvalGroupRankBizService {
109 115 return evalIds;
110 116 }
111 117  
112   -
113 118 /**
114   - * 未选择考评组列表
115   - *
116   - * @param dto
117   - * @return
  119 + * 根据id删除考评组排名包
  120 + * @param id
118 121 */
119   - public AppPage<EvalGroupVO> restEvalGroupPage(EvalGroupRankQueryDTO dto) {
120   -// EvalScopeEnum scopeType = EvalScopeEnum.ofValue(dto.getScopeType());
121   -// List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery()
122   -// .eq(EvalGroupRank::getScopeType, scopeType)
123   -// .eq(EvalGroupRank::getGroupId, dto.getGroupId())
124   -// .eq(EvalGroupRank::getYn, Boolean.TRUE)
125   -// );
126   -// Set<String> excludeEgcs = evalGroupRanks.stream().flatMap(evalGroupRank -> evalGroupRank.getEgcs().stream()).collect(Collectors.toSet());
127   -// List<Long> evalIds = getEffectEvalIds(dto.getGroupId());
128   -// //只有有指标的考评组才能配置到考评排名组
129   -// PageData<EvalGroup> pageData = evalGroupService.page(new PageData<>(dto.getCurrent(), dto.getPageSize()),
130   -// Wrappers.<EvalGroup>lambdaQuery()
131   -// .gt(EvalGroup::getIndicatorNum, BigDecimal.ZERO.intValue())
132   -// .in(PublicUtil.isNotEmpty(evalIds), EvalGroup::getEvalId, evalIds)
133   -// .eq(EvalGroup::getGroupId, dto.getGroupId())
134   -// .eq(PublicUtil.isNotEmpty(dto.getPostId()), EvalGroup::getPostId, dto.getPostId())
135   -// .notIn(PublicUtil.isNotEmpty(excludeEgcs), EvalGroup::getEgc, excludeEgcs)
136   -// .eq(EvalGroup::getYn, Boolean.TRUE)
137   -// .eq(EvalGroup::getScopeType, scopeType)
138   -// );
139   -// return PublicUtil.toPage(pageData, EvalGroup -> {
140   -// EvalGroupVO EvalGroupVo = PublicUtil.copy(EvalGroup, EvalGroupVO.class);
141   -// EvalGroupVo.setBeginTime(EvalGroup.getBeginTime());
142   -// EvalGroupVo.setOverTime(EvalGroup.getOverTime());
143   -// return EvalGroupVo;
144   -// });
145   - return null;
  122 + public void removeById(Long id) {
  123 + evalGroupRankService.removeById(id);
  124 + evalGroupRankStageService.remove(Wrappers.<EvalGroupRankStage>lambdaUpdate()
  125 + .eq(EvalGroupRankStage::getEvalGroupRankId, id)
  126 + );
  127 + evalGroupService.remove(Wrappers.<EvalGroup>lambdaUpdate()
  128 + .eq(EvalGroup::getEvalGroupRankId, id)
  129 + );
  130 + evalUserPoolService.remove(Wrappers.<EvalUserPool>lambdaUpdate()
  131 + .eq(EvalUserPool::getEvalGroupRankId, id)
  132 + );
  133 + }
  134 +
  135 + public List<EvalUserPoolVO> staffRank(EvalGroupRankQueryDto dto) {
  136 + List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery()
  137 + .in(EvalUserPool::getEvalGroupId, dto.getEvalGroupIds())
  138 + .eq(EvalUserPool::getYn, Boolean.TRUE)
  139 + .eq(EvalUserPool::getMonthly, dto.getMonthly())
  140 + .last("ORDER BY ISNULL(rank), rank ASC")
  141 + );
  142 + if (PublicUtil.isEmpty(pools)) {
  143 + return new ArrayList<>();
  144 + }
  145 + List<EvalUserPoolVO> poolVOS = PublicUtil.copyList(pools, EvalUserPoolVO.class);
  146 + for (EvalUserPoolVO pool : poolVOS) {
  147 + pool.setScoreRatio(pool.getScoreRatio().multiply(Constant.ONE_HUNDRED));
  148 + }
  149 + return poolVOS;
146 150 }
147 151  
  152 + public List<EvalShopPoolVO> shopRank(EvalGroupRankQueryDto dto) {
  153 + List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
  154 + .in(EvalShopPool::getEvalGroupId, dto.getEvalGroupIds())
  155 + .eq(EvalShopPool::getYn, Boolean.TRUE)
  156 + .eq(EvalShopPool::getMonthly, dto.getMonthly())
  157 + .last("ORDER BY ISNULL(rank), rank ASC")
  158 + );
  159 + if (PublicUtil.isEmpty(pools)) {
  160 + return new ArrayList<>();
  161 + }
  162 + List<EvalShopPoolVO> poolVOS = PublicUtil.copyList(pools, EvalShopPoolVO.class);
  163 + for (EvalShopPoolVO pool : poolVOS) {
  164 + pool.setScoreRatio(pool.getScoreRatio().multiply(Constant.ONE_HUNDRED));
  165 + }
  166 + return poolVOS;
  167 + }
148 168  
149 169 /**
150   - * 考评组排名组合详情
  170 + * 考评组保存
151 171 *
152   - * @param id
  172 + * @param evalGroupRankDto
  173 + * @param user
153 174 * @return
154 175 */
155   - public EvalGroupRankVO evalGroupRankDetail(Long id) {
156   - EvalGroupRank evalGroupRank = evalGroupRankService.getById(id);
157   - EvalGroupRankVO evalGroupRankVO = PublicUtil.copy(evalGroupRank, EvalGroupRankVO.class);
  176 + @Transactional(rollbackFor = Exception.class)
  177 + @DisLock(prefix = "#this.getSaveGroupPrefix()", key = "#evalGroupRankDto.getName()", message = "保存中,请勿重复操作")
  178 + public void saveEvalGroupRank(EvalGroupRankDTO evalGroupRankDto, LoginAuthBean user, Boolean isSubmit) {
  179 + this.checkNameRepetition(evalGroupRankDto);
  180 + AtomicInteger evalGroupSize = new AtomicInteger();
  181 + LocalDate lastStageOverTime = null;
  182 + Boolean multiStage = evalGroupRankDto.getMultiStage();
  183 + for (EvalGroupRankStageDTO stage : evalGroupRankDto.getStages()) {
  184 + this.checkStageTime(evalGroupRankDto, stage, lastStageOverTime);
  185 + for (EvalGroupDTO evalGroupDTO : stage.getEvalGroups()) {
  186 + initEvalGroupDTO(evalGroupDTO);
  187 + checkIndicator(evalGroupDTO, multiStage);
  188 + checkReward(evalGroupDTO);
  189 + checkEvalIndicatorLadders(evalGroupDTO.getIndicators());
  190 + checkEvalRewardLadders(evalGroupDTO.getRewards());
  191 + sortRewardRankLadders(evalGroupDTO.getRewards());
  192 + this.setTargetVos(evalGroupDTO);
  193 + evalGroupSize.incrementAndGet();
  194 + List<Long> postIds = evalGroupDTO.getRewards().stream().flatMap(reward -> reward.getPostIds().stream())
  195 + .distinct().collect(Collectors.toList());
  196 + List<String> postNames = evalGroupDTO.getRewards().stream().flatMap(reward -> reward.getPostNames().stream())
  197 + .distinct().collect(Collectors.toList());
  198 + evalGroupDTO.setPostIds(postIds);
  199 + evalGroupDTO.setPostNames(postNames);
  200 + }
  201 + lastStageOverTime = stage.getOverTime();
  202 + }
158 203  
159   - List<EvalGroupRankStage> stages = evalGroupRankStageService.list(Wrappers.<EvalGroupRankStage>lambdaQuery()
160   - .in(EvalGroupRankStage::getEvalGroupRankId, evalGroupRankVO.getId())
161   - .eq(EvalGroupRankStage::getYn, Boolean.TRUE)
162   - );
163   - List<EvalGroupRankStageVO> stageVOS = PublicUtil.copyList(stages, EvalGroupRankStageVO.class);
164   - evalGroupRankVO.setStages(stageVOS);
165   -
166   - List<EvalGroup> evalGroups = evalGroupService.getEvalGroups(evalGroupRankVO.getId());
167   - List<EvalGroupVO> evalGroupVOS = PublicUtil.copyList(evalGroups, EvalGroupVO.class);
168   - Map<Long, List<EvalGroupVO>> evalGroupStageMap = evalGroupVOS.stream().collect(Collectors.groupingBy(EvalGroupVO::getEvalGroupRankStageId));
169   - for (EvalGroupRankStageVO stageVO : stageVOS) {
170   - stageVO.setEvalGroups(evalGroupStageMap.getOrDefault(stageVO.getId(), new ArrayList<>()));
  204 + SettingDraft settingDraft = getSettingDraft(evalGroupRankDto, isSubmit);
  205 + settingDraftService.saveOrUpdate(settingDraft);
  206 + if (! isSubmit) {
  207 + return;
171 208 }
172   - return evalGroupRankVO;
  209 + approvalBizService.applyApproveEvalDraft(evalGroupRankDto, evalGroupSize.get(), settingDraft, user);
173 210 }
174 211  
  212 + public void checkStageTime(EvalGroupRankDTO eval, EvalGroupRankStageDTO stage, LocalDate lastStageOverTime) {
  213 + if (stage.getBeginTime().isBefore(eval.getBeginTime())) {
  214 + throw new BusinessException("阶段开始时间不能在考评时间之前");
  215 + }
  216 + if (stage.getOverTime().isAfter(eval.getOverTime())) {
  217 + throw new BusinessException("阶段结束时间不能在考评时间之前");
  218 + }
  219 + if (PublicUtil.isNotEmpty(lastStageOverTime)) {
  220 + if (stage.getBeginTime().isBefore(lastStageOverTime)) {
  221 + throw new BusinessException("阶段开始时间不能在上一个阶段结束时间之前");
  222 + }
  223 + }
  224 + }
175 225  
176 226 /**
177   - * 考评组排名配置保存
  227 + * 检查绩效组排名名称是否重复
178 228 *
179   - * @param dto
  229 + * @param evalGroupRankDto
180 230 */
181   - @Transactional(rollbackFor = Exception.class)
182   - public void saveEvalGroupRank(EvalGroupRankDTO dto) {
183   -// checkRank(dto);
184   -// checkEgcRepetition(dto.getId(), dto.getEgcs());
185   -// checkNameRepetition(dto.getId(), dto.getName());
186   -//
187   -// EvalGroupRank evalGroupRank = this.convertPO(dto);
188   -// evalGroupRankService.saveOrUpdate(evalGroupRank);
  231 + public void checkNameRepetition(EvalGroupRankDTO evalGroupRankDto) {
  232 + int count = evalGroupRankService.count(Wrappers.<EvalGroupRank>lambdaQuery()
  233 + .eq(EvalGroupRank::getName, evalGroupRankDto.getName())
  234 + .ne(PublicUtil.isNotEmpty(evalGroupRankDto.getId()), EvalGroupRank::getId, evalGroupRankDto.getId())
  235 + .eq(EvalGroupRank::getYn, Boolean.TRUE)
  236 + );
  237 + BV.isTrue(count <= 0, "考评排名组名称重复,请重新输入");
189 238 }
190 239  
191 240 /**
192   - * 转换对象
193   - *
194   - * @param dto
195   - * @return
  241 + * 检查阶梯分值
  242 + * @param indicators
196 243 */
197   - public EvalGroupRank convertPO(EvalGroupRankDTO dto) {
198   - EvalGroupRank evalGroupRank = null;
199   - if (PublicUtil.isNotEmpty(dto.getId())) {
200   - evalGroupRank = evalGroupRankService.getById(dto.getId());
201   - BV.notNull(evalGroupRank, "考评组排名不存在");
202   - evalGroupRank.setId(dto.getId());
203   - } else {
204   - evalGroupRank = new EvalGroupRank();
  244 + private void checkEvalIndicatorLadders(List<EvalGroupIndicatorDTO> indicators) {
  245 + Integer baseScore = null;
  246 + for (EvalGroupIndicatorDTO indicatorDto : indicators) {
  247 + if (ScoreWayEnum.NORMAL.equals(indicatorDto.getScoreWay())) {
  248 + continue;
  249 + }
  250 +
  251 + baseScore = indicatorDto.getBaseScore();
  252 + List<EvalGroupIndicatorLaddersDTO> ladders = indicatorDto.getLadders();
  253 + Collections.sort(ladders);
  254 +
  255 + //阶梯值校验 标准分不能超过指标基础分,阶梯值必须连续
  256 + for (EvalGroupIndicatorLaddersDTO laddersDto : ladders) {
  257 + BV.isTrue(PublicUtil.isNotEmpty(laddersDto.getLower()), "阶梯下限不能为空");
  258 + BV.isTrue(PublicUtil.isNotEmpty(laddersDto.getUpper()), "阶梯上限不能为空");
  259 +
  260 + //阶梯标准分不能超过绩效分值
  261 + if (laddersDto.getStandardScore().compareTo(baseScore) > 0) {
  262 + throw new BusinessException("【" + indicatorDto.getName() + "】的阶梯标准分不能超过绩效分值");
  263 + }
  264 + }
  265 + //校验阶梯
  266 + CommonService.checkLadders(ladders, indicatorDto.getName());
  267 +
  268 + //校验条件
  269 + for (EvalGroupIndicatorPreconditionDTO condDTO : indicatorDto.getConds()) {
  270 + CommonService.checkLadders(condDTO.getLadders(), indicatorDto.getName());
  271 + }
205 272 }
206   -// evalGroupRank.setScopeType(dto.getScopeType());
207   -// evalGroupRank.setGroupId(dto.getGroupId());
208   -// evalGroupRank.setYn(Boolean.TRUE);
209   -// evalGroupRank.setName(dto.getName());
210   -// evalGroupRank.setEgcs(dto.getEgcs());
211   -// List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery()
212   -// .in(EvalGroup::getEgc, dto.getEgcs())
213   -// .eq(EvalGroup::getYn, Boolean.TRUE)
214   -// );
215   -// LocalDate overTime = evalGroups.stream().map(EvalGroup::getOverTime).max(LocalDate::compareTo).get();
216   -// evalGroupRank.setOverTime(overTime);
217   - evalGroupRank.setStatus(SettingStatusEnum.EFFECTIVE);
218   - return evalGroupRank;
219 273 }
220 274  
221 275 /**
222   - * 检查考评组排名名称是否重复
223   - *
224   - * @param id
225   - * @param name
  276 + * 检查阶梯分值
  277 + * @param rewards
226 278 */
227   - public void checkNameRepetition(Long id, String name) {
228   - int count = evalGroupRankService.count(Wrappers.<EvalGroupRank>lambdaQuery()
229   - .eq(EvalGroupRank::getName, name)
230   - .ne(PublicUtil.isNotEmpty(id), EvalGroupRank::getId, id)
231   - .eq(EvalGroupRank::getYn, Boolean.TRUE)
232   - );
233   - BV.isTrue(count <= 0, "考评组排名名称重复,请重新输入");
  279 + private void checkEvalRewardLadders(List<EvalGroupRewardDTO> rewards) {
  280 + for (EvalGroupRewardDTO reward : rewards) {
  281 +
  282 + String rewardName = reward.getName();
  283 + List<EvalGroupRewardLaddersDTO> ladders = reward.getLadders();
  284 + if (EvalRewardCalMethodEnum.RANK.equals(reward.getCalMethod()) ||
  285 + EvalRewardCalMethodEnum.LADDER.equals(reward.getCalMethod()) ||
  286 + EvalRewardCalMethodEnum.LADDER_DOUBLE.equals(reward.getCalMethod())) {
  287 + BV.isTrue(PublicUtil.isNotEmpty(ladders), "阶梯不能为空");
  288 + Collections.sort(ladders);
  289 + }
  290 +
  291 + for (EvalGroupRewardLaddersDTO ladder : ladders) {
  292 + BV.isTrue(PublicUtil.isNotEmpty(ladder.getLower()), "阶梯下限不能为空");
  293 + BV.isTrue(PublicUtil.isNotEmpty(ladder.getUpper()), "阶梯上限不能为空");
  294 + }
  295 +
  296 + switch (reward.getCalMethod()) {
  297 + case TOTAL_PROPORTION: case FIXATION:{
  298 + if (PublicUtil.isNotEmpty(ladders)) {
  299 + throw new BusinessException("计算方式【" + reward.getCalMethod().getName() + "】不能配置阶梯");
  300 + }
  301 + break;
  302 + }
  303 +// case RANK:
  304 + case LADDER:
  305 + case LADDER_DOUBLE:
  306 + {
  307 + CommonService.checkLadders(ladders, rewardName);
  308 + break;
  309 + }
  310 + }
  311 +
  312 + }
234 313 }
235 314  
236 315 /**
237   - * 检查考评组排名名称是否重复
238   - *
239   - * @param egcs
  316 + * 检查阶梯分值
  317 + * @param rewards
240 318 */
241   - public void checkEgc(EvalScopeEnum scopeType, List<String> egcs) {
242   - List<EvalGroup> evalGroups = evalGroupService.list(Wrappers.<EvalGroup>lambdaQuery()
243   - .eq(EvalGroup::getYn, Boolean.TRUE)
244   - .in(EvalGroup::getEgc, egcs)
245   - );
  319 + private void sortRewardRankLadders(List<EvalGroupRewardDTO> rewards) {
  320 + for (EvalGroupRewardDTO reward : rewards) {
  321 + if (! EvalRewardCalMethodEnum.RANK.equals(reward.getCalMethod())) {
  322 + continue;
  323 + }
246 324  
247   - if (EvalScopeEnum.SHOP.equals(scopeType)) {
  325 + List<EvalGroupRewardLaddersDTO> ladders = reward.getLadders();
  326 + Collections.sort(ladders, new Comparator<EvalGroupRewardLaddersDTO>() {
  327 + @Override
  328 + public int compare(EvalGroupRewardLaddersDTO o1, EvalGroupRewardLaddersDTO o2) {
  329 + if (PublicUtil.isEmpty(o1.getRankOrderType())) {
  330 + return -1;
  331 + }
  332 + if (PublicUtil.isEmpty(o2.getRankOrderType())) {
  333 + return 1;
  334 + }
  335 + //正数在前 负数在后
  336 + Integer order = o1.getRankOrderType().compareTo(o2.getRankOrderType());
  337 + if (order == 0) {
  338 + //大的在后
  339 + return o1.getLower().subtract(o2.getLower()).intValue();
  340 + }
  341 + return order;
  342 + }
  343 + });
248 344  
249 345 }
250   -
251 346 }
252 347  
253 348 /**
254   - * 检查考考评排名组
  349 + * 检查考评组指标
255 350 *
  351 + * @param evalGroupDTO
256 352 */
257   - public void checkRank(EvalGroupRankDTO dto) {
258   - if (PublicUtil.isNotEmpty(dto.getId())) {
259   - EvalGroupRank evalGroupRank = evalGroupRankService.getById(dto.getId());
260   - BV.notNull(evalGroupRank, "考评排名组不存在,请重试");
261   - BV.isFalse(SettingStatusEnum.INEFFECTIVE.equals(evalGroupRank.getStatus()), "考评排名组已失效不能编辑");
  353 + public void checkIndicator(EvalGroupDTO evalGroupDTO, Boolean multiStage) {
  354 + for (EvalGroupIndicatorDTO indicator : evalGroupDTO.getIndicators()) {
  355 + String indicatorName = indicator.getName();
  356 +
  357 + if (ScoreWayEnum.LADDER.equals(indicator.getScoreWay())) {
  358 + BV.notNull(indicator.getLaddersType(), indicatorName + " 台阶数据类型不能为空");
  359 + }
  360 +
  361 + if (PublicUtil.isNotEmpty(indicator.getLadderParams())) {
  362 + BigDecimal proportion = indicator.getLadderParams().stream()
  363 + .map(EvalGroupIndicatorParamDTO::getProportion)
  364 + .reduce(BigDecimal.ZERO, BigDecimal::add);
  365 + BV.isTrue(Constant.ONE_HUNDRED.compareTo(proportion) == 0, "【" + indicator.getName() + "】台阶占比总和必须为100");
  366 +
  367 + for (EvalGroupIndicatorParamDTO paramDTO : indicator.getLadderParams()) {
  368 + if (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()) &&
  369 + (PublicUtil.isEmpty(paramDTO.getTargetType()) || PublicUtil.isEmpty(paramDTO.getTargetValue()))) {
  370 + paramDTO.setTargetType(TargetTypeEnum.NO);
  371 + }
  372 + if (PublicUtil.isNotEmpty(paramDTO.getTargetCalcType())) {
  373 + if (multiStage) {
  374 + if (TargetCalcTypeEnum.STAGE_TARGET.equals(paramDTO.getTargetCalcType()) ||
  375 + TargetCalcTypeEnum.TIME_SCHEDULE.equals(paramDTO.getTargetCalcType())) {
  376 + throw new BusinessException("多阶段目标只能选择阶段目标或时间进度");
  377 + }
  378 + } else if (TargetCalcTypeEnum.TARGET_VALUE.equals(paramDTO.getTargetCalcType()) ||
  379 + TargetCalcTypeEnum.MINIMUM.equals(paramDTO.getTargetCalcType())) {
  380 + throw new BusinessException("非多阶段目标只能选择百分比或数量");
  381 + }
  382 + }
  383 + }
  384 + }
  385 +
  386 + if (PublicUtil.isNotEmpty(indicator.getCommissionParams())) {
  387 + BigDecimal proportion = indicator.getCommissionParams().stream()
  388 + .map(EvalGroupIndicatorParamDTO::getProportion)
  389 + .reduce(BigDecimal.ZERO, BigDecimal::add);
  390 + BV.isTrue(Constant.ONE_HUNDRED.compareTo(proportion) == 0, "【" + indicator.getName() + "】提成占比总和必须为100");
  391 +
  392 + for (EvalGroupIndicatorParamDTO paramDTO : indicator.getCommissionParams()) {
  393 + if (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()) &&
  394 + (PublicUtil.isEmpty(paramDTO.getTargetType()) || PublicUtil.isEmpty(paramDTO.getTargetValue()))) {
  395 + paramDTO.setTargetType(TargetTypeEnum.NO);
  396 + continue;
  397 + }
  398 + if (PublicUtil.isNotEmpty(paramDTO.getTargetCalcType())) {
  399 + if (multiStage) {
  400 + if (TargetCalcTypeEnum.STAGE_TARGET.equals(paramDTO.getTargetCalcType()) ||
  401 + TargetCalcTypeEnum.TIME_SCHEDULE.equals(paramDTO.getTargetCalcType())) {
  402 + throw new BusinessException("多阶段目标只能选择阶段目标或时间进度");
  403 + }
  404 + } else if (TargetCalcTypeEnum.TARGET_VALUE.equals(paramDTO.getTargetCalcType()) ||
  405 + TargetCalcTypeEnum.MINIMUM.equals(paramDTO.getTargetCalcType())) {
  406 + throw new BusinessException("非多阶段目标只能选择百分比或数量");
  407 + }
  408 + }
  409 + }
  410 + }
  411 +
  412 + if (PublicUtil.isNotEmpty(indicator.getConds())) {
  413 + for (EvalGroupIndicatorPreconditionDTO preconditionDTO : indicator.getConds()) {
  414 + if (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()) &&
  415 + (PublicUtil.isEmpty(preconditionDTO.getTargetType()) || PublicUtil.isEmpty(preconditionDTO.getTargetValue()))) {
  416 + preconditionDTO.setTargetType(TargetTypeEnum.NO);
  417 + continue;
  418 + }
  419 + }
  420 + }
  421 +
262 422 }
263 423 }
264 424  
265   -
266 425 /**
267   - * 根据id删除考评组排名包
268   - * @param id
  426 + * 检查考评组指标
  427 + *
  428 + * @param evalGroupDTO
269 429 */
270   - public void removeById(Long id) {
271   - evalGroupRankService.removeById(id);
272   - evalGroupRankStageService.remove(Wrappers.<EvalGroupRankStage>lambdaUpdate()
273   - .eq(EvalGroupRankStage::getEvalGroupRankId, id)
274   - );
275   - evalGroupService.remove(Wrappers.<EvalGroup>lambdaUpdate()
276   - .eq(EvalGroup::getEvalGroupRankId, id)
277   - );
278   - evalUserPoolService.remove(Wrappers.<EvalUserPool>lambdaUpdate()
279   - .eq(EvalUserPool::getEvalGroupRankId, id)
280   - );
  430 + public void checkReward(EvalGroupDTO evalGroupDTO) {
  431 + for (EvalGroupRewardDTO reward : evalGroupDTO.getRewards()) {
  432 + String rewardName = reward.getName();
  433 +
  434 + if (EvalRewardCalMethodEnum.LADDER.equals(reward.getCalMethod()) ||
  435 + EvalRewardCalMethodEnum.LADDER_DOUBLE.equals(reward.getCalMethod()) ||
  436 + EvalRewardCalMethodEnum.RANK.equals(reward.getCalMethod())) {
  437 + BV.notNull(reward.getLaddersType(), rewardName + " 台阶数据类型不能为空");
  438 + }
  439 +
  440 + if (PublicUtil.isNotEmpty(reward.getCommissionParams())) {
  441 + BigDecimal proportion = reward.getCommissionParams().stream()
  442 + .map(EvalGroupRewardParamDTO::getProportion)
  443 + .reduce(BigDecimal.ZERO, BigDecimal::add);
  444 + BV.isTrue(Constant.ONE_HUNDRED.compareTo(proportion) == 0, "【" + rewardName + "】台阶占比总和必须为100");
  445 +
  446 + for (EvalGroupRewardParamDTO commissionParam : reward.getCommissionParams()) {
  447 + if (! TargetTypeEnum.NO.equals(commissionParam.getTargetType()) &&
  448 + (PublicUtil.isEmpty(commissionParam.getTargetType()) || PublicUtil.isEmpty(commissionParam.getTargetValue()))) {
  449 + commissionParam.setTargetType(TargetTypeEnum.NO);
  450 + }
  451 + }
  452 + }
  453 +
  454 + if (PublicUtil.isNotEmpty(reward.getLadderParams())) {
  455 + BigDecimal proportion = reward.getLadderParams().stream()
  456 + .map(EvalGroupRewardParamDTO::getProportion)
  457 + .reduce(BigDecimal.ZERO, BigDecimal::add);
  458 + BV.isTrue(Constant.ONE_HUNDRED.compareTo(proportion) == 0, "【" + rewardName + "】提成占比总和必须为100");
  459 +
  460 + for (EvalGroupRewardParamDTO commissionParam : reward.getLadderParams()) {
  461 + if (! TargetTypeEnum.NO.equals(commissionParam.getTargetType()) &&
  462 + (PublicUtil.isEmpty(commissionParam.getTargetType()) || PublicUtil.isEmpty(commissionParam.getTargetValue()))) {
  463 + commissionParam.setTargetType(TargetTypeEnum.NO);
  464 + }
  465 + }
  466 + }
  467 +
  468 + if (PublicUtil.isNotEmpty(reward.getConds())) {
  469 + for (EvalGroupRewardPreconditionDTO preconditionDTO : reward.getConds()) {
  470 + if (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()) &&
  471 + (PublicUtil.isEmpty(preconditionDTO.getTargetType()) || PublicUtil.isEmpty(preconditionDTO.getTargetValue()))) {
  472 + preconditionDTO.setTargetType(TargetTypeEnum.NO);
  473 + }
  474 + }
  475 + }
  476 + }
281 477 }
282 478  
283   - public List<EvalUserPoolVO> staffRank(EvalGroupRankQueryDto dto) {
284   - List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery()
285   - .in(EvalUserPool::getEvalGroupId, dto.getEvalGroupIds())
286   - .eq(EvalUserPool::getYn, Boolean.TRUE)
287   - .eq(EvalUserPool::getMonthly, dto.getMonthly())
288   - .last("ORDER BY ISNULL(rank), rank ASC")
289   - );
290   - if (PublicUtil.isEmpty(pools)) {
291   - return new ArrayList<>();
  479 + /**
  480 + * 检查时间
  481 + *
  482 + * @param dto
  483 + */
  484 + public void initEvalGroupDTO(EvalGroupDTO dto) {
  485 + if (PublicUtil.isEmpty(dto.getIndicators())) {
  486 + dto.setIndicators(new ArrayList<>());
292 487 }
293   - List<EvalUserPoolVO> poolVOS = PublicUtil.copyList(pools, EvalUserPoolVO.class);
294   - for (EvalUserPoolVO pool : poolVOS) {
295   - pool.setScoreRatio(pool.getScoreRatio().multiply(Constant.ONE_HUNDRED));
  488 + if (PublicUtil.isEmpty(dto.getRewards())) {
  489 + dto.setRewards(new ArrayList<>());
  490 + }
  491 + for (EvalGroupIndicatorDTO indicatorDTO : dto.getIndicators()) {
  492 + if (PublicUtil.isEmpty(indicatorDTO.getLadderParams())) {
  493 + indicatorDTO.setLadderParams(new ArrayList<>());
  494 + }
  495 + if (PublicUtil.isEmpty(indicatorDTO.getCommissionParams())) {
  496 + indicatorDTO.setCommissionParams(new ArrayList<>());
  497 + }
  498 + if (PublicUtil.isEmpty(indicatorDTO.getLadders())) {
  499 + indicatorDTO.setLadders(new ArrayList<>());
  500 + }
  501 + if (PublicUtil.isEmpty(indicatorDTO.getConds())) {
  502 + indicatorDTO.setConds(new ArrayList<>());
  503 + }
  504 + }
  505 + for (EvalGroupRewardDTO rewardDTO : dto.getRewards()) {
  506 + if (PublicUtil.isEmpty(rewardDTO.getLadderParams())) {
  507 + rewardDTO.setLadderParams(new ArrayList<>());
  508 + }
  509 + if (PublicUtil.isEmpty(rewardDTO.getCommissionParams())) {
  510 + rewardDTO.setCommissionParams(new ArrayList<>());
  511 + }
  512 + if (PublicUtil.isEmpty(rewardDTO.getLadders())) {
  513 + rewardDTO.setLadders(new ArrayList<>());
  514 + }
  515 + if (PublicUtil.isEmpty(rewardDTO.getConds())) {
  516 + rewardDTO.setConds(new ArrayList<>());
  517 + }
296 518 }
297   - return poolVOS;
298 519 }
299 520  
300   - public List<EvalShopPoolVO> shopRank(EvalGroupRankQueryDto dto) {
301   - List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery()
302   - .in(EvalShopPool::getEvalGroupId, dto.getEvalGroupIds())
303   - .eq(EvalShopPool::getYn, Boolean.TRUE)
304   - .eq(EvalShopPool::getMonthly, dto.getMonthly())
305   - .last("ORDER BY ISNULL(rank), rank ASC")
306   - );
307   - if (PublicUtil.isEmpty(pools)) {
308   - return new ArrayList<>();
  521 + /**
  522 + * 装换为目标对象
  523 + *
  524 + * @return
  525 + */
  526 + public void setTargetVos(EvalGroupDTO evalGroupDTO) {
  527 +
  528 + for (EvalGroupIndicatorDTO indicatorDTO : evalGroupDTO.getIndicators()) {
  529 + List<EvalGroupIndicatorParamDTO> ladderParams = Optional.ofNullable(indicatorDTO.getLadderParams()).orElse(new ArrayList<>());
  530 + List<EvalGroupIndicatorParamDTO> commissionParams = Optional.ofNullable(indicatorDTO.getCommissionParams()).orElse(new ArrayList<>());
  531 + List<EvalGroupIndicatorPreconditionDTO> conds = Optional.ofNullable(indicatorDTO.getConds()).orElse(new ArrayList<>());
  532 +
  533 + List<EvalGroupIndicatorTargetVO> targetVOS = new ArrayList<>();
  534 + for (EvalGroupIndicatorParamDTO paramDTO : ladderParams) {
  535 + if (PublicUtil.isNotEmpty(paramDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()))) {
  536 + EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(paramDTO, EvalGroupIndicatorTargetVO.class);
  537 + targetVOS.add(targetVO);
  538 + }
  539 + }
  540 +
  541 + for (EvalGroupIndicatorParamDTO paramDTO : commissionParams) {
  542 + if (PublicUtil.isNotEmpty(paramDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()))) {
  543 + EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(paramDTO, EvalGroupIndicatorTargetVO.class);
  544 + targetVOS.add(targetVO);
  545 + }
  546 + }
  547 +
  548 + for (EvalGroupIndicatorPreconditionDTO preconditionDTO : conds) {
  549 + if (PublicUtil.isNotEmpty(preconditionDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()))) {
  550 + EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(preconditionDTO, EvalGroupIndicatorTargetVO.class);
  551 + targetVOS.add(targetVO);
  552 + }
  553 + }
  554 +
  555 + indicatorDTO.setTargets(targetVOS);
309 556 }
310   - List<EvalShopPoolVO> poolVOS = PublicUtil.copyList(pools, EvalShopPoolVO.class);
311   - for (EvalShopPoolVO pool : poolVOS) {
312   - pool.setScoreRatio(pool.getScoreRatio().multiply(Constant.ONE_HUNDRED));
  557 +
  558 + for (EvalGroupRewardDTO rewardDTO : evalGroupDTO.getRewards()) {
  559 + List<EvalGroupRewardParamDTO> ladderParams = Optional.ofNullable(rewardDTO.getLadderParams()).orElse(new ArrayList<>());
  560 + List<EvalGroupRewardParamDTO> commissionParams = Optional.ofNullable(rewardDTO.getCommissionParams()).orElse(new ArrayList<>());
  561 + List<EvalGroupRewardPreconditionDTO> conds = Optional.ofNullable(rewardDTO.getConds()).orElse(new ArrayList<>());
  562 +
  563 + List<EvalGroupIndicatorTargetVO> targetVOS = new ArrayList<>();
  564 + for (EvalGroupRewardParamDTO paramDTO : ladderParams) {
  565 + if (PublicUtil.isNotEmpty(paramDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()))) {
  566 + EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(paramDTO, EvalGroupIndicatorTargetVO.class);
  567 + targetVOS.add(targetVO);
  568 + }
  569 + }
  570 +
  571 + for (EvalGroupRewardParamDTO paramDTO : commissionParams) {
  572 + if (PublicUtil.isNotEmpty(paramDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(paramDTO.getTargetType()))) {
  573 + EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(paramDTO, EvalGroupIndicatorTargetVO.class);
  574 + targetVOS.add(targetVO);
  575 + }
  576 + }
  577 +
  578 + for (EvalGroupRewardPreconditionDTO preconditionDTO : conds) {
  579 + if (PublicUtil.isNotEmpty(preconditionDTO.getTargetType()) && (! TargetTypeEnum.NO.equals(preconditionDTO.getTargetType()))) {
  580 + EvalGroupIndicatorTargetVO targetVO = PublicUtil.copy(preconditionDTO, EvalGroupIndicatorTargetVO.class);
  581 + targetVOS.add(targetVO);
  582 + }
  583 + }
  584 + rewardDTO.setTargets(targetVOS);
313 585 }
314   - return poolVOS;
315 586 }
316 587  
  588 + /**
  589 + * 获取草稿
  590 + *
  591 + * @param dto
  592 + * @return
  593 + */
  594 + public SettingDraft getSettingDraft(EvalGroupRankDTO dto, Boolean submit) {
  595 + SettingDraft settingDraft = null;
  596 + if (PublicUtil.isEmpty(dto.getDraftId())) {
  597 + settingDraft = new SettingDraft();
  598 + settingDraft.setGroupId(dto.getGroupId());
  599 + settingDraft.setYn(Boolean.TRUE);
  600 + settingDraft.setType(SettingDraftTypeEnum.EVAL_GROUP_RANK);
  601 + } else {
  602 + settingDraft = settingDraftService.getById(dto.getDraftId());
  603 + BV.notNull(settingDraft, "草稿配置不存在,请重试");
  604 + }
  605 + settingDraft.setStatus(submit ? SettingDraftStatusEnum.RELEASE_APPROVAL : SettingDraftStatusEnum.NO_RELEASE);
  606 +// settingDraft.setEvalType(dto.getType());
  607 + settingDraft.setName(dto.getName());
  608 + settingDraft.setContent(JSONObject.toJSONString(dto));
  609 + return settingDraft;
  610 + }
  611 +
  612 +
317 613 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupUserBizService.java
... ... @@ -4,6 +4,7 @@ import cn.fw.ehr.sdk.api.enums.StaffStatusEnum;
4 4 import cn.fw.morax.common.utils.PublicUtil;
5 5 import cn.fw.morax.domain.db.eval.EvalGroup;
6 6 import cn.fw.morax.domain.db.eval.EvalGroupUser;
  7 +import cn.fw.morax.domain.dto.query.ShopsPostsQueryDTO;
7 8 import cn.fw.morax.domain.enums.EvalScopeEnum;
8 9 import cn.fw.morax.domain.enums.KpiIgnoreCauseEnum;
9 10 import cn.fw.morax.domain.vo.eval.EvalGroupUserVO;
... ... @@ -373,4 +374,16 @@ public class EvalGroupUserBizService {
373 374 return evalGroupUserVOS;
374 375 }
375 376  
  377 + /**
  378 + * 查询考评组排名人员
  379 + *
  380 + * @param dto
  381 + * @return
  382 + */
  383 + public List<EvalGroupUserVO> queryShopPostStaffs(ShopsPostsQueryDTO dto) {
  384 + List<EvalGroupUser> evalGroupUsers = this.fetchPostUsers(dto.getPostIds(), dto.getShopIds(), null);
  385 + List<EvalGroupUserVO> evalGroupUserVOS = PublicUtil.copyList(evalGroupUsers, EvalGroupUserVO.class);
  386 + return evalGroupUserVOS;
  387 + }
  388 +
376 389 }
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalRewardService.java
1 1 package cn.fw.morax.service.biz.eval;
2 2  
3   -import cn.fw.backlog.sdk.api.result.FailBacklogItem;
4 3 import cn.fw.common.cache.locker.DistributedLocker;
5 4 import cn.fw.common.exception.BusinessException;
6 5 import cn.fw.common.web.auth.LoginAuthBean;
7 6 import cn.fw.morax.common.config.TodoVal;
8 7 import cn.fw.morax.common.pojo.event.ApprovalResultEvent;
9   -import cn.fw.morax.common.utils.DateUtil;
10 8 import cn.fw.morax.common.utils.PublicUtil;
11 9 import cn.fw.morax.common.utils.ThreadPoolUtil;
12 10 import cn.fw.morax.domain.bo.eval.EvalGroupRewardDistributionBO;
13 11 import cn.fw.morax.domain.db.ApprovalRecord;
14   -import cn.fw.morax.domain.db.eval.*;
  12 +import cn.fw.morax.domain.db.eval.EvalGroup;
  13 +import cn.fw.morax.domain.db.eval.EvalRewardDist;
  14 +import cn.fw.morax.domain.db.eval.EvalRewardDistDetail;
  15 +import cn.fw.morax.domain.db.eval.EvalShopPool;
15 16 import cn.fw.morax.domain.dto.eval.EvalRewardDistDTO;
16 17 import cn.fw.morax.domain.dto.eval.EvalRewardDistDetailDTO;
17   -import cn.fw.morax.domain.enums.*;
  18 +import cn.fw.morax.domain.enums.ApprovalTypeEnum;
  19 +import cn.fw.morax.domain.enums.EvalRewardDistStatusEnum;
  20 +import cn.fw.morax.domain.enums.EvalRewardPushStatusEnum;
18 21 import cn.fw.morax.domain.vo.eval.EvalRewardDistDetailVO;
19 22 import cn.fw.morax.domain.vo.eval.EvalRewardDistVO;
20 23 import cn.fw.morax.domain.vo.eval.EvalShopPoolVO;
21 24 import cn.fw.morax.rpc.backlog.TodoRpcService;
22 25 import cn.fw.morax.rpc.backlog.dto.BackLogItemDTO;
23   -import cn.fw.morax.rpc.backlog.dto.BacklogBatchPlanItemReqDTO;
24   -import cn.fw.morax.rpc.backlog.dto.BacklogBatchPlanReqDTO;
25 26 import cn.fw.morax.rpc.erp.ErpRpcService;
26 27 import cn.fw.morax.rpc.erp.dto.RpcUserRoleInfoDTO;
27   -import cn.fw.morax.rpc.erp.dto.RpcUserRoleShopDTO;
28 28 import cn.fw.morax.service.biz.ApprovalBizService;
29 29 import cn.fw.morax.service.data.ApprovalRecordService;
30   -import cn.fw.morax.service.data.eval.*;
  30 +import cn.fw.morax.service.data.eval.EvalGroupService;
  31 +import cn.fw.morax.service.data.eval.EvalRewardDistDetailService;
  32 +import cn.fw.morax.service.data.eval.EvalRewardDistService;
  33 +import cn.fw.morax.service.data.eval.EvalShopPoolService;
31 34 import com.alibaba.fastjson.JSON;
32 35 import com.alibaba.fastjson.JSONObject;
33 36 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
... ... @@ -44,14 +47,11 @@ import org.springframework.stereotype.Service;
44 47 import org.springframework.transaction.annotation.Transactional;
45 48  
46 49 import java.math.BigDecimal;
47   -import java.text.DecimalFormat;
48 50 import java.time.LocalDate;
49   -import java.time.LocalDateTime;
50 51 import java.util.*;
51 52 import java.util.concurrent.RejectedExecutionException;
52 53 import java.util.concurrent.ThreadPoolExecutor;
53 54 import java.util.concurrent.locks.Lock;
54   -import java.util.stream.Collectors;
55 55  
56 56 import static cn.fw.common.businessvalidator.Validator.BV;
57 57  
... ... @@ -66,7 +66,6 @@ import static cn.fw.common.businessvalidator.Validator.BV;
66 66 public class EvalRewardService {
67 67  
68 68 private final TodoVal todoVal;
69   - private final EvalService evalService;
70 69 private final ErpRpcService erpRpcService;
71 70 private final TodoRpcService todoRpcService;
72 71 private final EvalGroupService evalGroupService;
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalGroupService.java
... ... @@ -2,14 +2,11 @@ package cn.fw.morax.service.data.eval;
2 2  
3 3  
4 4 import cn.fw.morax.domain.db.eval.EvalGroup;
5   -import cn.fw.morax.domain.db.kpi.KpiGroup;
6   -import cn.fw.morax.domain.enums.EvalScopeEnum;
7 5 import com.baomidou.mybatisplus.extension.service.IService;
8 6 import org.springframework.lang.NonNull;
9 7 import org.springframework.lang.Nullable;
10 8  
11 9 import java.time.LocalDate;
12   -import java.util.Date;
13 10 import java.util.List;
14 11 import java.util.Set;
15 12  
... ... @@ -56,13 +53,6 @@ public interface EvalGroupService extends IService&lt;EvalGroup&gt; {
56 53 Set<Long> queryDistributionShopReward(@NonNull final LocalDate localDate);
57 54  
58 55 /**
59   - * 获取所有生效中考评组数据
60   - *
61   - * @return
62   - */
63   - List<EvalGroup> getAllEffectGroupByEgcs(@NonNull final List<String> egcs, @NonNull final LocalDate localDate);
64   -
65   - /**
66 56 * 获取考评排名组的考评组
67 57 *
68 58 * @return
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupServiceImpl.java
... ... @@ -3,8 +3,6 @@ package cn.fw.morax.service.data.eval.impl;
3 3  
4 4 import cn.fw.morax.dao.eval.EvalGroupDao;
5 5 import cn.fw.morax.domain.db.eval.EvalGroup;
6   -import cn.fw.morax.domain.db.kpi.KpiGroup;
7   -import cn.fw.morax.domain.enums.EvalScopeEnum;
8 6 import cn.fw.morax.service.data.eval.EvalGroupService;
9 7 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
10 8 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
... ... @@ -12,7 +10,6 @@ import org.springframework.lang.NonNull;
12 10 import org.springframework.stereotype.Service;
13 11  
14 12 import java.time.LocalDate;
15   -import java.util.Date;
16 13 import java.util.List;
17 14 import java.util.Set;
18 15  
... ... @@ -32,10 +29,6 @@ public class EvalGroupServiceImpl extends ServiceImpl&lt;EvalGroupDao, EvalGroup&gt; i
32 29 return this.getBaseMapper().getAllEffectGroups(localDate);
33 30 }
34 31 @Override
35   - public List<EvalGroup> getAllEffectGroupByEgcs(@NonNull final List<String> egcs, @NonNull final LocalDate localDate) {
36   - return this.getBaseMapper().getAllEffectGroupByEgcs(egcs, localDate);
37   - }
38   - @Override
39 32 public List<EvalGroup> getEffectGroups(@NonNull final Long groupId, LocalDate localDate) {
40 33 return this.getBaseMapper().getEffectGroups(groupId, localDate);
41 34 }
... ... @@ -47,7 +40,7 @@ public class EvalGroupServiceImpl extends ServiceImpl&lt;EvalGroupDao, EvalGroup&gt; i
47 40  
48 41 @Override
49 42 public Set<Long> queryDistributionShopReward(LocalDate localDate) {
50   - return this.baseMapper.queryDistributionShopReward(localDate, EvalScopeEnum.SHOP.getValue());
  43 + return this.baseMapper.queryDistributionShopReward(localDate);
51 44 }
52 45  
53 46 @Override
... ...