Commit 13d02b329a52f922329cb024c87f2ef592c4e827

Authored by 姜超
1 parent 67f6a578

feature(*): 考评计算修改

考评计算修改
fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupRankConfigBO.java 0 → 100644
  1 +package cn.fw.morax.domain.bo.eval;
  2 +
  3 +import cn.fw.morax.domain.db.eval.EvalGroup;
  4 +import cn.fw.morax.domain.db.eval.EvalGroupRank;
  5 +import cn.fw.morax.domain.db.eval.EvalGroupRankStage;
  6 +import lombok.AllArgsConstructor;
  7 +import lombok.Data;
  8 +import lombok.NoArgsConstructor;
  9 +
  10 +import java.time.LocalDate;
  11 +import java.util.Set;
  12 +
  13 +/**
  14 + * @author : kurisu
  15 + * @version : 1.0
  16 + * @className : KpiGroupCalculableBO
  17 + * @description : 需要计算绩效的考评组
  18 + * @date : 2022-04-16 11:31
  19 + */
  20 +@Data
  21 +@NoArgsConstructor
  22 +@AllArgsConstructor
  23 +public class EvalGroupRankConfigBO {
  24 +
  25 + private EvalGroupRank evalGroupRank;
  26 +
  27 + private EvalGroupRankStage evalGroupRankStage;
  28 +
  29 + private EvalGroup evalGroup;
  30 +}
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/bo/eval/EvalGroupUserShop.java
... ... @@ -133,7 +133,12 @@ public class EvalGroupUserShop {
133 133 /**
134 134 * 是否计不入考评考核
135 135 */
136   - private Boolean ignored;
  136 +// private Boolean ignored;
  137 +
  138 + /**
  139 + * 是否参与考评考核
  140 + */
  141 + private Boolean inclusion;
137 142  
138 143 /**
139 144 * 考评得分率排名
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java
... ... @@ -9,7 +9,6 @@ import cn.fw.morax.common.utils.ThreadPoolUtil;
9 9 import cn.fw.morax.domain.bo.eval.*;
10 10 import cn.fw.morax.domain.bo.kpi.EvalGroupCalculableRankBO;
11 11 import cn.fw.morax.domain.db.eval.*;
12   -import cn.fw.morax.domain.dto.salary.SalaryExtraDTO;
13 12 import cn.fw.morax.domain.enums.*;
14 13 import cn.fw.morax.service.biz.CommonService;
15 14 import cn.fw.morax.service.biz.calculator.eval.kpi.EvalKpiBaseCalculator;
... ... @@ -40,7 +39,6 @@ import java.time.YearMonth;
40 39 import java.util.*;
41 40 import java.util.concurrent.*;
42 41 import java.util.concurrent.atomic.AtomicReference;
43   -import java.util.function.Consumer;
44 42 import java.util.stream.Collectors;
45 43  
46 44 /**
... ... @@ -169,20 +167,22 @@ public class EvalCalculateService {
169 167 Map<Long, List<EvalGroup>> stageEvalGroupMap = evalGroups.stream().collect(Collectors.groupingBy(EvalGroup::getEvalGroupRankStageId));
170 168 //计算考评得分
171 169 CompletableFuture<Void>[] futuresArr = evalGroups.stream().map(evalGroup -> CompletableFuture.runAsync(() -> {
172   - Long start = System.currentTimeMillis();
  170 + if (Boolean.FALSE.equals(this.checkEvalConfigValid(evalGroup, dataDate))){
  171 + return;
  172 + }
  173 + final EvalGroupRankConfigBO calcConfigBo = this.getEvalCalcConfig(evalGroup, dataDate);
  174 + final Long start = System.currentTimeMillis();
173 175 log.info(" 考评组计算:考评组进行计算:{}", evalGroup.getId());
174 176 TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
175   - final Long evalGroupRankStageId = evalGroup.getEvalGroupRankStageId();
176   - final Long evalGroupId = evalGroup.getId();
177 177 try {
178   - EvalGroupCalcParamsBO calcDateParam = this.getCalcDate(evalGroupRankStageId, dataDate, EvalCalStageDimEnum.STAGE_STAGE);
179   - calculateEvalGroup(evalGroupId, calcDateParam, EvalScopeEnum.STAFF);
180   - calculateEvalGroup(evalGroupId, calcDateParam, EvalScopeEnum.SHOP);
  178 + EvalGroupCalcParamsBO calcDateParam = this.getCalcDate(calcConfigBo, dataDate, EvalCalStageDimEnum.STAGE_STAGE);
  179 + calculateEvalGroup(calcConfigBo, calcDateParam, EvalScopeEnum.STAFF);
  180 + calculateEvalGroup(calcConfigBo, calcDateParam, EvalScopeEnum.SHOP);
181 181 //多阶段才需要计算-阶段累计
182 182 if (calcDateParam.getMultiStage()) {
183   - EvalGroupCalcParamsBO calcDateParamM = this.getCalcDate(evalGroupRankStageId, dataDate, EvalCalStageDimEnum.STAGE_MONTH);
184   - calculateEvalGroup(evalGroupId, calcDateParamM, EvalScopeEnum.STAFF);
185   - calculateEvalGroup(evalGroupId, calcDateParamM, EvalScopeEnum.SHOP);
  183 + EvalGroupCalcParamsBO calcDateParamM = this.getCalcDate(calcConfigBo, dataDate, EvalCalStageDimEnum.STAGE_MONTH);
  184 + calculateEvalGroup(calcConfigBo, calcDateParamM, EvalScopeEnum.STAFF);
  185 + calculateEvalGroup(calcConfigBo, calcDateParamM, EvalScopeEnum.SHOP);
186 186 }
187 187 platformTransactionManager.commit(transactionStatus);
188 188 log.info(" 考评组计算:考评组计算完成:{},耗时:{} s", evalGroup.getId(), TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - start));
... ... @@ -197,19 +197,24 @@ public class EvalCalculateService {
197 197 this.calcEvalRank(evalGroupRankId, dataDate);
198 198 //计算考评奖惩
199 199 CompletableFuture<List<EvalRewardPushSalaryBO>>[] futuresRewardArr = stageEvalGroupMap.entrySet().stream().map(stage -> CompletableFuture.supplyAsync(() -> {
200   - Long start = System.currentTimeMillis();
201   - log.info("考评奖惩计算:考评奖惩开始进行计算,考评排名组:{}", evalGroupRankId);
  200 + final Long evalGroupRankStageId = stage.getKey();
  201 + if (Boolean.FALSE.equals(this.checkEvalRewardConfigValid(evalGroupRankStageId, dataDate))){
  202 + return new ArrayList<>();
  203 + }
  204 + final EvalGroupRankConfigBO calcConfigBo = this.getEvalRewardCalcConfig(evalGroupRankStageId, dataDate);
  205 + final Long start = System.currentTimeMillis();
  206 + log.info("考评奖惩计算:考评奖惩开始进行计算,考评阶段:{}", evalGroupRankStageId);
202 207 List<EvalRewardPushSalaryBO> res = new ArrayList<>();
203 208 TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
204 209 try {
205   - res = calculateEvalStageReward(evalGroupRankId, stage, dataDate);
  210 + res = calculateEvalStageReward(calcConfigBo, stage, dataDate);
206 211 platformTransactionManager.commit(transactionStatus);
207 212 } catch (Exception ex) {
208 213 platformTransactionManager.rollback(transactionStatus);
209 214 log.error("计算考评奖惩数据失败:{}", bo, ex);
210 215 success.set(Boolean.FALSE);
211 216 }
212   - log.info("考评奖惩计算:考评奖惩计算完成,考评排名组:{},耗时:{} s", evalGroupRankId, TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - start));
  217 + log.info("考评奖惩计算:考评奖惩计算完成,考评阶段:{},耗时:{} s", evalGroupRankStageId, TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - start));
213 218 return res;
214 219 }, threadPool)).<CompletableFuture<List<EvalRewardPushSalaryBO>>>toArray(CompletableFuture[]::new);
215 220 CompletableFuture.allOf(futuresRewardArr).join();
... ... @@ -218,14 +223,14 @@ public class EvalCalculateService {
218 223 overflowsList.add(str);
219 224 } else {
220 225 //计算排名、报表数据抽取
221   - //考评奖惩
  226 + //考评奖惩推送薪酬
222 227 this.cacheEvalRewardPushSalary(futuresRewardArr);
223 228 //考评门店角色奖惩
224 229 this.cacheEvalShopRoleRewardPushSalary(evalGroupRankId, dataDate);
225 230 //保存计算结果
226 231 this.cacheSaveCalcResult(evalCalcId, bo.getEvalGroupRankId(), dataDate, evalGroups);
227 232 evalCalcService.modifyStatus(evalCalcId, EvalCalcStatusEnum.SAVE_CALC_RESULT);
228   - //是否分配奖惩
  233 + //是否分配门店奖惩
229 234 this.cacheDistShopReward(evalCalcId, evalGroupRankId, dataDate);
230 235 }
231 236 } catch (Exception re) {
... ... @@ -251,6 +256,62 @@ public class EvalCalculateService {
251 256 stringRedisTemplate.opsForSet().add(evalCalculationVal.getCacheSaveCalcResult(), json);
252 257 }
253 258  
  259 + public Boolean checkEvalConfigValid(EvalGroup evalGroup, LocalDate calcDate) {
  260 + if (PublicUtil.isEmpty(evalGroup)) {
  261 + return Boolean.FALSE;
  262 + }
  263 + EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getByIdAndSetTime(evalGroup.getEvalGroupRankStageId(), calcDate);
  264 + if (PublicUtil.isEmpty(evalGroupRankStage)) {
  265 + log.error("考评排名组阶段[{}]不存在,终止计算!", JSON.toJSONString(evalGroup));
  266 + return Boolean.FALSE;
  267 + }
  268 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroup.getEvalGroupRankId());
  269 + if (PublicUtil.isEmpty(evalGroupRank)) {
  270 + log.error("考评组[{}]排名组不存在,终止计算!", evalGroup.getEvalGroupRankId());
  271 + return Boolean.FALSE;
  272 + }
  273 + return Boolean.TRUE;
  274 + }
  275 +
  276 + public EvalGroupRankConfigBO getEvalCalcConfig(EvalGroup evalGroup, LocalDate calcDate) {
  277 + EvalGroupRankConfigBO rankConfigBO = new EvalGroupRankConfigBO();
  278 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroup.getEvalGroupRankId());
  279 + EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getByIdAndSetTime(evalGroup.getEvalGroupRankStageId(), calcDate);
  280 +
  281 + rankConfigBO.setEvalGroupRank(evalGroupRank);
  282 + rankConfigBO.setEvalGroupRankStage(evalGroupRankStage);
  283 + rankConfigBO.setEvalGroup(evalGroup);
  284 + return rankConfigBO;
  285 + }
  286 +
  287 + public Boolean checkEvalRewardConfigValid(Long evalGroupRankStageId, LocalDate calcDate) {
  288 + if (PublicUtil.isEmpty(evalGroupRankStageId)) {
  289 + return Boolean.FALSE;
  290 + }
  291 + EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getByIdAndSetTime(evalGroupRankStageId, calcDate);
  292 + if (PublicUtil.isEmpty(evalGroupRankStage)) {
  293 + log.error("考评排名组阶段[{}]不存在,终止计算!", JSON.toJSONString(evalGroupRankStageId));
  294 + return Boolean.FALSE;
  295 + }
  296 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroupRankStage.getEvalGroupRankId());
  297 + if (PublicUtil.isEmpty(evalGroupRank)) {
  298 + log.error("考评组[{}]排名组不存在,终止计算!", evalGroupRankStage.getEvalGroupRankId());
  299 + return Boolean.FALSE;
  300 + }
  301 + return Boolean.TRUE;
  302 + }
  303 +
  304 + public EvalGroupRankConfigBO getEvalRewardCalcConfig(Long evalGroupRankStageId, LocalDate calcDate) {
  305 + EvalGroupRankConfigBO rankConfigBO = new EvalGroupRankConfigBO();
  306 + EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getByIdAndSetTime(evalGroupRankStageId, calcDate);
  307 + EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroupRankStage.getEvalGroupRankId());
  308 +
  309 + rankConfigBO.setEvalGroupRank(evalGroupRank);
  310 + rankConfigBO.setEvalGroupRankStage(evalGroupRankStage);
  311 + return rankConfigBO;
  312 + }
  313 +
  314 +
254 315 private void cacheEvalRewardPushSalary(CompletableFuture<List<EvalRewardPushSalaryBO>>[] futuresRewardArr) {
255 316 List<EvalRewardPushSalaryBO> evalRewardPushSalaryBOS = new ArrayList<>();
256 317 Arrays.stream(futuresRewardArr).forEach(future -> {
... ... @@ -298,17 +359,9 @@ public class EvalCalculateService {
298 359 * @param localDate
299 360 * @return
300 361 */
301   - public EvalGroupCalcParamsBO getCalcDate(Long evalGroupRankStageId, final LocalDate localDate,EvalCalStageDimEnum stageDimEnum) {
302   - EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getByIdAndSetTime(evalGroupRankStageId, localDate);
303   - if (Objects.isNull(evalGroupRankStage)) {
304   - log.error("考评排名组阶段[{}]不存在,终止计算!", evalGroupRankStageId);
305   - return null;
306   - }
307   - EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroupRankStage.getEvalGroupRankId());
308   - if (Objects.isNull(evalGroupRank)) {
309   - log.error("考评排名组[{}]不存在,终止计算!", evalGroupRankStage.getEvalGroupRankId());
310   - return null;
311   - }
  362 + public EvalGroupCalcParamsBO getCalcDate(EvalGroupRankConfigBO calcConfigBo, final LocalDate localDate,EvalCalStageDimEnum stageDimEnum) {
  363 + EvalGroupRankStage evalGroupRankStage = calcConfigBo.getEvalGroupRankStage();
  364 + EvalGroupRank evalGroupRank = calcConfigBo.getEvalGroupRank();
312 365 EvalGroupCalcParamsBO paramsBO = new EvalGroupCalcParamsBO();
313 366 LocalDate firstStageStartTime = evalGroupRankStageService.getRankStartTime(evalGroupRank.getId(), evalGroupRank.getPeriod(), localDate);
314 367 paramsBO.setCalcMonthBeginDate(firstStageStartTime);
... ... @@ -330,12 +383,11 @@ public class EvalCalculateService {
330 383 return paramsBO;
331 384 }
332 385  
333   - public void calculateEvalGroup(final Long evalGroupId, final EvalGroupCalcParamsBO calcDateParam, EvalScopeEnum scopeType) {
334   - if (Objects.isNull(calcDateParam)){
335   - log.error("参数不够,终止计算!");
336   - return;
337   - }
338   - List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(evalGroupId, calcDateParam, scopeType);
  386 + public void calculateEvalGroup(EvalGroupRankConfigBO calcConfigBo, final EvalGroupCalcParamsBO calcDateParam, EvalScopeEnum scopeType) {
  387 + EvalGroup evalGroup = calcConfigBo.getEvalGroup();
  388 +
  389 + final Long evalGroupId = evalGroup.getId();
  390 + List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(calcConfigBo, calcDateParam, scopeType);
339 391 if (PublicUtil.isEmpty(userShops)) {
340 392 log.error("考评组[{}]人员为空,终止计算!", evalGroupId);
341 393 return;
... ... @@ -356,28 +408,22 @@ public class EvalCalculateService {
356 408 }
357 409 }
358 410  
359   - public List<EvalRewardPushSalaryBO> calculateEvalStageReward(final Long evalGroupRankId,
  411 + public List<EvalRewardPushSalaryBO> calculateEvalStageReward(EvalGroupRankConfigBO calcConfigBo,
360 412 Map.Entry<Long, List<EvalGroup>> stageEvalGroupEntry,
361 413 LocalDate dataDate) {
362 414 final Long evalGroupRankStageId = stageEvalGroupEntry.getKey();
363 415 final List<EvalGroup> evalGroups = stageEvalGroupEntry.getValue();
364   - EvalGroupCalcParamsBO calcDateParam = this.getCalcDate(evalGroupRankStageId, dataDate, EvalCalStageDimEnum.STAGE_STAGE);
365   - if (Objects.isNull(calcDateParam)){
366   - log.error("参数不够,终止计算!");
367   - return new ArrayList<>();
368   - }
  416 + EvalGroupCalcParamsBO calcDateParam = this.getCalcDate(calcConfigBo, dataDate, EvalCalStageDimEnum.STAGE_STAGE);
369 417 final LocalDate calcEndDate = calcDateParam.getCalcEndDate();
370 418 final Date date = DateUtil.localDateTime2Date(calcDateParam.getCalcEndDate().atTime(23, 23, 59));
371   - EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getByIdAndSetTime(evalGroupRankStageId, calcEndDate);
372   - if (Objects.isNull(evalGroupRankStage)) {
373   - log.error("考评排名组阶段[{}]不存在,终止计算!", evalGroupRankStageId);
374   - return new ArrayList<>();
375   - }
  419 + EvalGroupRank evalGroupRank = calcConfigBo.getEvalGroupRank();
  420 + EvalGroupRankStage evalGroupRankStage = calcConfigBo.getEvalGroupRankStage();
  421 + final Long evalGroupRankId = evalGroupRank.getId();
376 422  
377 423 List<EvalRewardPushSalaryBO> evalRewards = new ArrayList<>();
378 424 for (EvalScopeEnum scopeType : EvalScopeEnum.values()) {
379 425 List<EvalGroupRewardDimBO> rewardDims = this.getRewardBOS(evalGroupRankStageId, scopeType);
380   - List<EvalGroupUserShop> userShops = this.getRewardObjs(calcDateParam, evalGroupRankStageId , evalGroups, scopeType);
  426 + List<EvalGroupUserShop> userShops = this.getRewardObjs(calcConfigBo, calcDateParam, evalGroupRankStageId , evalGroups, scopeType);
381 427 if (PublicUtil.isEmpty(userShops)) {
382 428 log.error("考评阶段[{}]人员为空,终止计算!", evalGroupRankStageId);
383 429 continue;
... ... @@ -697,64 +743,25 @@ public class EvalCalculateService {
697 743 }
698 744  
699 745 /**
700   - * @param evalGroupId
701 746 * @param calcDateParam .getCalcEndDate() <=阶段的截止时间的一个计算时间
702 747 * @param scopeType
703 748 * @return
704 749 */
705   - public List<EvalGroupUserShop> buildEvalGroupObj(Long evalGroupId, EvalGroupCalcParamsBO calcDateParam, EvalScopeEnum scopeType) {
706   - EvalGroup evalGroup = evalGroupService.getById(evalGroupId);
707   - if (Objects.isNull(evalGroup)) {
708   - log.error("考评组[{}]不存在,终止计算!", evalGroupId);
709   - return new ArrayList<>();
710   - }
  750 + public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroupRankConfigBO calcConfigBo, EvalGroupCalcParamsBO calcDateParam, EvalScopeEnum scopeType) {
  751 + final EvalGroupRank evalGroupRank = calcConfigBo.getEvalGroupRank();
  752 + final EvalGroupRankStage evalGroupRankStage = calcConfigBo.getEvalGroupRankStage();
  753 + final EvalGroup evalGroup = calcConfigBo.getEvalGroup();
711 754 final Long groupId = evalGroup.getGroupId();
712   - EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getByIdAndSetTime(evalGroup.getEvalGroupRankStageId(), calcDateParam.getCalcEndDate());
713   - if (Objects.isNull(evalGroupRankStage)) {
714   - log.error("考评排名组阶段[{}]不存在,终止计算!", JSON.toJSONString(evalGroup));
715   - return new ArrayList<>();
716   - }
717   - EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroup.getEvalGroupRankId());
718   - if (Objects.isNull(evalGroupRank)) {
719   - log.error("考评组[{}]排名组不存在,终止计算!", evalGroup.getEvalGroupRankId());
720   - return new ArrayList<>();
721   - }
722 755  
723 756 List<EvalGroupUserShop> userShops = new ArrayList<>();
724 757 if (EvalScopeEnum.STAFF.equals(scopeType)) {
725   -// //考评不计算保护期员工
726   -// List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery()
727   -// .eq(EvalGroupUser::getEvalGroupId, evalGroup.getId())
728   -// .eq(EvalGroupUser::getDataDate, calcDateParam.getCalcEndDate())
729   -// .eq(EvalGroupUser::getYn, Boolean.TRUE)
730   -// .eq(EvalGroupUser::getIgnored, Boolean.FALSE)
731   -// );
732   -// //转正员工要计算
733   -// List<EvalGroupUser> turnPositiveUsers = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery()
734   -// .eq(EvalGroupUser::getEvalGroupId, evalGroup.getId())
735   -// .eq(EvalGroupUser::getDataDate, calcDateParam.getCalcEndDate())
736   -// .eq(EvalGroupUser::getYn, Boolean.TRUE)
737   -// .eq(EvalGroupUser::getIgnored, Boolean.TRUE)
738   -// .eq(EvalGroupUser::getIgnoreCause, KpiIgnoreCauseEnum.TURN_POSITIVE_AFTER)
739   -// );
740   -// if (PublicUtil.isNotEmpty(turnPositiveUsers)) {
741   -// users.addAll(turnPositiveUsers);
742   -// }
743   - List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery()
744   - .eq(EvalGroupUser::getEvalGroupId, evalGroup.getId())
745   - .eq(EvalGroupUser::getDataDate, calcDateParam.getCalcEndDate())
746   - .eq(EvalGroupUser::getYn, Boolean.TRUE)
  758 + List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery()
  759 + .eq(EvalUserPool::getEvalGroupRankStageId, evalGroupRankStage.getId())
  760 + .eq(EvalUserPool::getMonthly, YearMonth.from(calcDateParam.getCalcEndDate()))
  761 + .eq(EvalUserPool::getYn, Boolean.TRUE)
747 762 );
748   - Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroupRankStage, users, calcDateParam.getCalcEndDate(), scopeType);
749   - for (EvalGroupUser user : users) {
750   - EvalUserPool userPool = userPoolMap.get(user.getUserId());
751   - userPool.setDataDate(user.getDataDate());
752   - //试用期员工不计算绩效
753   - if (Boolean.TRUE.equals(user.getIgnored()) && PublicUtil.isNotEmpty(user.getStaffStatus()) && SalaryStaffStatusEnum.PROBATION.equals(user.getStaffStatus())) {
754   - evalUserPoolService.updateById(userPool);
755   - continue;
756   - }
757   - userShops.add(convertBO(user, userPool, evalGroupRank, evalGroupRankStage,calcDateParam, scopeType));
  763 + for (EvalUserPool userPool : pools) {
  764 + userShops.add(this.convertBO(userPool, evalGroupRank, evalGroupRankStage,calcDateParam, scopeType));
758 765 }
759 766 return userShops;
760 767 }
... ... @@ -764,8 +771,7 @@ public class EvalCalculateService {
764 771 List<Long> calcShopIds = commonService.filterInvalidShop(groupId, calcDateParam.getCalcEndDate(), evalGroup.getShopIds());
765 772 for (Long shopId : calcShopIds) {
766 773 EvalShopPool shopPool = shopPoolBOMap.get(shopId);
767   -// Boolean ignored = ! distShopIds.contains(shopId);
768   - userShops.add(this.convertBO(shopPool, evalGroup, evalGroupRank, evalGroupRankStage, calcDateParam));
  774 + userShops.add(this.convertShopBO(shopPool, evalGroup, evalGroupRank, evalGroupRankStage, calcDateParam));
769 775 }
770 776 return userShops;
771 777 }
... ... @@ -810,25 +816,26 @@ public class EvalCalculateService {
810 816 Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroupRankStage, users, calcDateParam.getCalcEndDate(), scopeType);
811 817 for (EvalGroupUser user : users) {
812 818 EvalUserPool userPool = userPoolMap.get(user.getUserId());
813   - userShops.add(convertBO(user, userPool, evalGroupRank, evalGroupRankStage,calcDateParam, EvalScopeEnum.MANAGEMENT));
  819 + userShops.add(convertBO(userPool, evalGroupRank, evalGroupRankStage,calcDateParam, EvalScopeEnum.MANAGEMENT));
814 820 }
815 821 return userShops;
816 822 }
817 823  
818   - public List<EvalGroupUserShop> getRewardObjs(EvalGroupCalcParamsBO calcDateParam, Long evalGroupRankStageId , List<EvalGroup> evalGroups, EvalScopeEnum scopeType) {
  824 + public List<EvalGroupUserShop> getRewardObjs(EvalGroupRankConfigBO calcConfigBo, EvalGroupCalcParamsBO calcDateParam, Long evalGroupRankStageId , List<EvalGroup> evalGroups, EvalScopeEnum scopeType) {
819 825 List<EvalGroupUserShop> userShops = Lists.newArrayListWithCapacity(80);
820 826 if (EvalScopeEnum.MANAGEMENT.equals(scopeType)) {
821 827 userShops = this.buildManagerEvalGroupObj(evalGroupRankStageId, calcDateParam, scopeType);
822   - return userShops.stream().filter(userShop -> Boolean.FALSE.equals(userShop.getIgnored()))
  828 + return userShops.stream().filter(userShop -> Boolean.TRUE.equals(userShop.getInclusion()))
823 829 .collect(Collectors.toList());
824 830 }
825 831  
826   - final List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList());
827   - for (Long evalGroupId : evalGroupIds) {
828   - List<EvalGroupUserShop> evalGroupUserShops = this.buildEvalGroupObj(evalGroupId, calcDateParam, scopeType);
  832 + //普通岗位、门店 奖惩对象
  833 + for (EvalGroup evalGroup : evalGroups) {
  834 + calcConfigBo.setEvalGroup(evalGroup);
  835 + List<EvalGroupUserShop> evalGroupUserShops = this.buildEvalGroupObj(calcConfigBo, calcDateParam, scopeType);
829 836 if (PublicUtil.isNotEmpty(evalGroupUserShops)) {
830 837 List<EvalGroupUserShop> calcKpiEvalGroupUserShops = evalGroupUserShops.stream()
831   - .filter(userShop -> Boolean.FALSE.equals(userShop.getIgnored()))
  838 + .filter(userShop -> Boolean.TRUE.equals(userShop.getInclusion()))
832 839 .collect(Collectors.toList());
833 840 if (PublicUtil.isNotEmpty(calcKpiEvalGroupUserShops)) {
834 841 userShops.addAll(calcKpiEvalGroupUserShops);
... ... @@ -1013,21 +1020,21 @@ public class EvalCalculateService {
1013 1020 }
1014 1021 }
1015 1022  
1016   - public List<EvalGroupUserShop> filterUserShops(EvalGroupRewardDimBO dim, EvalScopeEnum scopeType, List<EvalGroupUserShop> userShops) {
1017   - if (EvalScopeEnum.STAFF.equals(scopeType)) {
1018   - return userShops.stream().filter(userShop -> Boolean.FALSE.equals(userShop.getIgnored())).collect(Collectors.toList());
1019   - }
1020   - List<EvalGroupUserShop> filterUserShops = new ArrayList<>();
  1023 +// public List<EvalGroupUserShop> filterUserShops(EvalGroupRewardDimBO dim, EvalScopeEnum scopeType, List<EvalGroupUserShop> userShops) {
1021 1024 // if (EvalScopeEnum.STAFF.equals(scopeType)) {
1022   -// filterUserShops = userShops.stream().filter(userShop -> dim.getPostIds().contains(userShop.getPostId())).collect(Collectors.toList());
1023   -// } else {
  1025 +// return userShops.stream().filter(userShop -> Boolean.FALSE.equals(userShop.getIgnored())).collect(Collectors.toList());
  1026 +// }
  1027 +// List<EvalGroupUserShop> filterUserShops = new ArrayList<>();
  1028 +//// if (EvalScopeEnum.STAFF.equals(scopeType)) {
  1029 +//// filterUserShops = userShops.stream().filter(userShop -> dim.getPostIds().contains(userShop.getPostId())).collect(Collectors.toList());
  1030 +//// } else {
  1031 +//// filterUserShops = userShops.stream().filter(userShop -> dim.getShopIds().contains(userShop.getShopId())).collect(Collectors.toList());
  1032 +//// }
  1033 +// if (EvalScopeEnum.SHOP.equals(scopeType)) {
1024 1034 // filterUserShops = userShops.stream().filter(userShop -> dim.getShopIds().contains(userShop.getShopId())).collect(Collectors.toList());
1025 1035 // }
1026   - if (EvalScopeEnum.SHOP.equals(scopeType)) {
1027   - filterUserShops = userShops.stream().filter(userShop -> dim.getShopIds().contains(userShop.getShopId())).collect(Collectors.toList());
1028   - }
1029   - return filterUserShops;
1030   - }
  1036 +// return filterUserShops;
  1037 +// }
1031 1038  
1032 1039 /**
1033 1040 * 计算绩效金额
... ... @@ -1365,16 +1372,15 @@ public class EvalCalculateService {
1365 1372 return poolDetail;
1366 1373 }
1367 1374  
1368   - public EvalGroupUserShop convertBO(EvalGroupUser user,
1369   - EvalUserPool userPool,
  1375 + public EvalGroupUserShop convertBO(EvalUserPool userPool,
1370 1376 EvalGroupRank evalGroupRank,
1371 1377 EvalGroupRankStage evalGroupRankStage,
1372 1378 EvalGroupCalcParamsBO calcDateParam,
1373 1379 EvalScopeEnum evalScopeType) {
1374 1380 EvalGroupUserShop userShop = new EvalGroupUserShop();
1375   - userShop.setName(user.getUserName());
  1381 + userShop.setName(userPool.getUserName());
1376 1382 userShop.setScopeType(evalScopeType);
1377   - userShop.setEvalGroupId(user.getEvalGroupId());
  1383 + userShop.setEvalGroupId(userPool.getEvalGroupId());
1378 1384 userShop.setEvalGroupRankId(evalGroupRankStage.getEvalGroupRankId());
1379 1385 userShop.setEvalGroupRankStageId(evalGroupRankStage.getId());
1380 1386 userShop.setPoolId(userPool.getId());
... ... @@ -1383,14 +1389,14 @@ public class EvalCalculateService {
1383 1389 userShop.setShopId(userPool.getShopId());
1384 1390 userShop.setScoreRatio(Optional.ofNullable(userPool.getScoreRatio()).orElse(BigDecimal.ZERO));
1385 1391 userShop.setStageAccumulationScoreRatio(Optional.ofNullable(userPool.getStageAccumulationScoreRatio()).orElse(BigDecimal.ZERO));
1386   - userShop.setReferId(user.getUserId());
  1392 + userShop.setReferId(userPool.getUserId());
1387 1393 userShop.setBeginDate(calcDateParam.getCalcBeginDate());
1388   - userShop.setDataDate(user.getDataDate());
  1394 + userShop.setDataDate(userPool.getDataDate());
1389 1395 userShop.setMultiStage(evalGroupRank.getMultiStage());
1390   - userShop.setGroupId(user.getGroupId());
  1396 + userShop.setGroupId(userPool.getGroupId());
1391 1397 userShop.setScore(BigDecimal.ZERO);
1392 1398 // userShop.setReward(BigDecimal.ZERO);
1393   - userShop.setIgnored(user.getIgnored());
  1399 + userShop.setInclusion(userPool.getInclusion());
1394 1400 userShop.setStageDimEnum(calcDateParam.getStageDimEnum());
1395 1401 if (PublicUtil.isNotEmpty(calcDateParam.getCalcMonthBeginDate())) {
1396 1402 userShop.setCalcMonthBeginDate(calcDateParam.getCalcMonthBeginDate());
... ... @@ -1423,7 +1429,7 @@ public class EvalCalculateService {
1423 1429 // return userShop;
1424 1430 // }
1425 1431  
1426   - public EvalGroupUserShop convertBO(EvalShopPool shopPool,
  1432 + public EvalGroupUserShop convertShopBO(EvalShopPool shopPool,
1427 1433 EvalGroup evalGroup,
1428 1434 EvalGroupRank evalGroupRank,
1429 1435 EvalGroupRankStage evalGroupRankStage,
... ... @@ -1449,7 +1455,7 @@ public class EvalCalculateService {
1449 1455 userShop.setMultiStage(evalGroupRank.getMultiStage());
1450 1456 userShop.setGroupId(evalGroup.getGroupId());
1451 1457 // userShop.setIgnored(ignored);
1452   - userShop.setIgnored(Boolean.FALSE);
  1458 + userShop.setInclusion(Boolean.TRUE);
1453 1459 userShop.setScore(BigDecimal.ZERO);
1454 1460 userShop.setStageDimEnum(calcDateParam.getStageDimEnum());
1455 1461 if (PublicUtil.isNotEmpty(calcDateParam.getCalcMonthBeginDate())) {
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateTaskService.java
... ... @@ -323,22 +323,19 @@ public class EvalCalculateTaskService {
323 323 }
324 324 }
325 325 //去重
326   - List<EvalGroupUser> repeatUsers = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery()
327   - .eq(EvalGroupUser::getEvalGroupRankStageId, evalGroupRankStageId)
328   - .eq(EvalGroupUser::getDataDate, dataDate)
329   - .eq(EvalGroupUser::getYn, Boolean.TRUE)
330   - .select(EvalGroupUser::getId)
331   - );
332   - if (PublicUtil.isNotEmpty(repeatUsers)) {
333   - evalGroupUserService.removeByIds(repeatUsers.stream().map(EvalGroupUser::getId).collect(Collectors.toSet()));
  326 + Set<Long> repeatUserIds = this.queryRepeatUserEvalIds(evalGroupRankStageId, dataDate);
  327 + if (PublicUtil.isNotEmpty(repeatUserIds)) {
  328 + evalGroupUserService.removeByIds(repeatUserIds);
334 329 }
335 330 if (PublicUtil.isNotEmpty(evalGroupUsersForSave)) {
336 331 evalGroupUserService.insertBatchSomeColumn(evalGroupUsersForSave);
337   - this.updatePoolOtherInfo(evalGroupUsersForSave, EvalScopeEnum.STAFF);
  332 + evalPoolCommonService.createUserPools(evalGroupUsersForSave, EvalScopeEnum.STAFF);
  333 +// this.updatePoolOtherInfo(evalGroupUsersForSave, EvalScopeEnum.STAFF);
338 334 }
339 335 if (PublicUtil.isNotEmpty(managerEvalGroupUsersForSave)) {
340 336 evalGroupUserService.insertBatchSomeColumn(managerEvalGroupUsersForSave);
341   - this.updatePoolOtherInfo(managerEvalGroupUsersForSave, EvalScopeEnum.MANAGEMENT);
  337 + evalPoolCommonService.createUserPools(managerEvalGroupUsersForSave, EvalScopeEnum.MANAGEMENT);
  338 +// this.updatePoolOtherInfo(managerEvalGroupUsersForSave, EvalScopeEnum.MANAGEMENT);
342 339 }
343 340 }
344 341 evalCalcService.modifyStatus(evalCalcId, EvalCalcStatusEnum.COLLECT_STAGE_DATA);
... ... @@ -357,7 +354,6 @@ public class EvalCalculateTaskService {
357 354 }
358 355  
359 356 public void extractStageEveryDateEvalUser(EvalExtractUserBO bo) {
360   - final Long evalCalcId = bo.getEvalCalcId();
361 357 final Long evalGroupRankId = bo.getEvalGroupRankId();
362 358 final Boolean realTimeCalc = bo.getRealTimeCalc();
363 359 final LocalDate yesterday = bo.getLocalDate();
... ... @@ -387,9 +383,7 @@ public class EvalCalculateTaskService {
387 383 for (EvalGroup evalGroup : evalGroups) {
388 384 for (Long postId : Optional.ofNullable(evalGroup.getPostIds()).orElse(new ArrayList<>())) {
389 385 List<EvalGroupUser> evalGroupUsers = evalGroupUserBizService.fetchBuildKpiUser(groupId, postId, evalGroup, stageEveryDataTime);
390   - for (EvalGroupUser evalGroupUser : evalGroupUsers) {
391   - evalPoolCommonService.createUserPool(evalGroupUser, EvalScopeEnum.STAFF);
392   - }
  386 + evalPoolCommonService.createUserPools(evalGroupUsers, EvalScopeEnum.STAFF);
393 387 }
394 388 }
395 389 //管理层人员
... ... @@ -398,9 +392,7 @@ public class EvalCalculateTaskService {
398 392 for (Long postId : rewardDim.getPostIds()) {
399 393 List<EvalGroupUser> manageEvalGroupUsers = evalGroupUserBizService.fetchPostUsers(groupId, postId, rewardDim.getShopIds(), stageEveryDataTime);
400 394 this.initManageEvalUser(manageEvalGroupUsers, evalGroupRankId, evalGroupRankStageId);
401   - for (EvalGroupUser evalGroupUser : manageEvalGroupUsers) {
402   - evalPoolCommonService.createUserPool(evalGroupUser, EvalScopeEnum.MANAGEMENT);
403   - }
  395 + evalPoolCommonService.createUserPools(manageEvalGroupUsers, EvalScopeEnum.MANAGEMENT);
404 396 }
405 397 }
406 398 repeatUserIds.addAll(this.queryRepeatUserEvalIds(evalGroupRankStageId, stageEveryDataTime));
... ... @@ -490,6 +482,7 @@ public class EvalCalculateTaskService {
490 482  
491 483 public void extractStageIndicator(EvalExtractStageIndicatorBO stageIndicatorBO) {
492 484 final Long evalGroupRankId = stageIndicatorBO.getEvalGroupRankId();
  485 + final Long evalCalcId = stageIndicatorBO.getEvalCalcId();
493 486 final LocalDate dataDate = stageIndicatorBO.getLocalDate();
494 487 final Boolean realTimeCalc = stageIndicatorBO.getRealTimeCalc();
495 488  
... ... @@ -511,7 +504,7 @@ public class EvalCalculateTaskService {
511 504 if (PublicUtil.isEmpty(sysIndicatorCodes)) {
512 505 evalCalc.setStatus(EvalCalcStatusEnum.CALC_EVAL);
513 506 evalCalcService.updateById(evalCalc);
514   - cacheCalcGroupIds(evalCalc.getId(), evalCalc.getEvalGroupRankId(), new HashSet<>(evalCalc.getEvalGroupIds()), evalCalc.getCalcDate());
  507 + cacheCalcGroupIds(evalCalcId, evalCalc.getEvalGroupRankId(), new HashSet<>(evalCalc.getEvalGroupIds()), evalCalc.getCalcDate());
515 508 platformTransactionManager.commit(status);
516 509 return;
517 510 }
... ... @@ -521,14 +514,15 @@ public class EvalCalculateTaskService {
521 514 //保存发送记录,构建发送mq
522 515 EvalRankReportBO evalRankReportBO = this.getReportObj(evalGroupRank, dataDate, evalGroupRankStages);
523 516 for (String sysIndicatorCode : sysIndicatorCodes) {
524   - stageReportNoticeMQS.addAll(this.sendNotice(evalRankReportBO, evalGroupRankStages, sysIndicatorCode, dataDate, evalCalc.getId()));
  517 + stageReportNoticeMQS.addAll(this.sendNotice(evalRankReportBO, evalGroupRankStages, sysIndicatorCode, dataDate, evalCalcId));
  518 + stageReportNoticeMQS.addAll(this.sendLeaveStaffNotice(evalRankReportBO, evalGroupRankStages, sysIndicatorCode, dataDate, evalCalcId));
525 519  
526 520 //关联指标也发MQ
527 521 Indicators indicators = indicatorsService.queryByCode(sysIndicatorCode, Boolean.FALSE);
528 522 if (PublicUtil.isNotEmpty(indicators) && PublicUtil.isNotEmpty(indicators.getOriginIndicatorCode())) {
529 523 final String originIndicatorCode = indicators.getOriginIndicatorCode();
530   - stageReportNoticeMQS.addAll(this.sendNotice(evalRankReportBO, evalGroupRankStages,
531   - originIndicatorCode, dataDate, evalCalc.getId()));
  524 + stageReportNoticeMQS.addAll(this.sendNotice(evalRankReportBO, evalGroupRankStages, originIndicatorCode, dataDate, evalCalcId));
  525 + stageReportNoticeMQS.addAll(this.sendLeaveStaffNotice(evalRankReportBO, evalGroupRankStages, originIndicatorCode, dataDate, evalCalcId));
532 526 }
533 527 }
534 528 platformTransactionManager.commit(status);
... ... @@ -605,6 +599,82 @@ public class EvalCalculateTaskService {
605 599 return reportNoticeMQS;
606 600 }
607 601  
  602 + /**
  603 + * 发送绩效数据上报mq
  604 + *
  605 + * @param dataDate
  606 + */
  607 + public List<KpiStageReportNoticeMQ> sendLeaveStaffNotice(EvalRankReportBO evalRankReportBO, List<EffectEvalStageBO> stages, String indicatorCode, final LocalDate dataDate, final Long evalCalcId) {
  608 + final Date monthlyEndTime = DateUtil.localDateTime2Date(YearMonth.from(dataDate).atEndOfMonth().atTime(23, 59, 59));
  609 + final Date monthlyStartTime = DateUtil.localDateTime2Date(evalRankReportBO.getWholeBeginTime().atTime(0, 0, 1));
  610 + List<KpiStageReportNoticeMQ> reportNoticeMQS = new ArrayList<>();
  611 +
  612 + for (EffectEvalStageBO evalStageBO : stages) {
  613 + final LocalDate stageEndTime = evalStageBO.getStageEndTime().isAfter(dataDate)
  614 + ? dataDate : evalStageBO.getStageEndTime();
  615 +
  616 + final Long evalGroupRankStageId = evalStageBO.getEvalGroupRankStageId();
  617 + List<EvalUserPool> userPools = evalUserPoolService.getLeaveOrChangePostPools(evalGroupRankStageId, stageEndTime);
  618 + if (PublicUtil.isEmpty(userPools)) {
  619 + log.info("阶段没有离职调岗员工:{}", JSON.toJSONString(evalStageBO));
  620 + continue;
  621 + }
  622 +
  623 + for (EvalUserPool userPool : userPools) {
  624 + final LocalDate staffLastDate = userPool.getDataDate();
  625 + //阶段时间、阶段累计时间
  626 + //员工离岗时间 与 阶段结束时间判断
  627 + final LocalDate staffStageEndTime = staffLastDate.compareTo(stageEndTime) > 0
  628 + ? stageEndTime : staffLastDate;
  629 + final Date staffStageEndDateTime = DateUtil.localDateTime2Date(staffStageEndTime.atTime(23, 59, 59));
  630 +
  631 + KpiStageMqLog mqLog = this.createLeaveStaffMqLog(userPool, evalRankReportBO, evalStageBO, indicatorCode, evalCalcId, staffStageEndTime);
  632 + KpiStageReportNoticeMQ noticeMQ = KpiStageReportNoticeMQ.builder()
  633 + .indicatorCode(mqLog.getIndicatorCode())
  634 + .shopIds(new ArrayList<Long>(){{add(userPool.getShopId());}})
  635 + .userIds(new ArrayList<Long>(){{add(userPool.getUserId());}})
  636 + .groupId(mqLog.getGroupId())
  637 + .build();
  638 + List<KpiStageReportNoticeMQ.ReportDate> reportStages = new ArrayList<>();
  639 + KpiStageReportNoticeMQ.ReportDate reportStage = noticeMQ.new ReportDate(IndicatorReportTypeEnum.STAGE.getValue(),
  640 + DateUtil.localDateTime2Date(evalStageBO.getStageBeginTime().atTime(0, 0, 1)),
  641 + staffStageEndDateTime,
  642 + DateUtil.localDateTime2Date(evalStageBO.getStageEndTime().atTime(23, 59, 59))
  643 + );
  644 + reportStages.add(reportStage);
  645 + mqLog.setStatus(KpiStageMqLogStatusEnum.WAIT_REPORT);
  646 + mqLog.setStageTimeStr(JSON.toJSONString(reportStages));
  647 + kpiStageMqLogService.save(mqLog);
  648 + KpiStageReportNoticeMQ.ReportDate monthly = noticeMQ.new ReportDate(IndicatorReportTypeEnum.WHOLE.getValue(),
  649 + monthlyStartTime,
  650 + staffStageEndDateTime,
  651 + monthlyEndTime
  652 + );
  653 + noticeMQ.setWhole(monthly);
  654 + noticeMQ.setStages(reportStages);
  655 + noticeMQ.setUid(mqLog.getId().toString());
  656 +
  657 + reportNoticeMQS.add(noticeMQ);
  658 + //1. 初始状态放入
  659 + stringRedisTemplate.opsForHash().put(
  660 + evalCalculationVal.getMqCodeLogStatusKey(mqLog.getEvalCalcId()),
  661 + mqLog.getIndicatorCode(),
  662 + String.valueOf(mqLog.getStatus().getValue())
  663 + );
  664 + //设置过期
  665 + stringRedisTemplate.expire(
  666 + evalCalculationVal.getMqCodeLogStatusKey(mqLog.getEvalCalcId()),
  667 + 6L, TimeUnit.HOURS);
  668 + log.info("1. 初始状态放入 redis K: {},HK: {},HV: {},24H后过期",
  669 + evalCalculationVal.getMqCodeLogStatusKey(mqLog.getEvalCalcId()),
  670 + mqLog.getIndicatorCode(),
  671 + mqLog.getStatus().getValue()
  672 + );
  673 + }
  674 + }
  675 + return reportNoticeMQS;
  676 + }
  677 +
608 678 public KpiStageMqLog createMqLog(EvalRankReportBO evalRankReportBO, EffectEvalStageBO stageBO, String indicatorCode, Long evalCalcId, LocalDate dataDate) {
609 679 final LocalDate wholeBeginTime = evalRankReportBO.getWholeBeginTime();
610 680 final Long groupId = stageBO.getGroupId();
... ... @@ -621,6 +691,22 @@ public class EvalCalculateTaskService {
621 691 return mqLog;
622 692 }
623 693  
  694 + public KpiStageMqLog createLeaveStaffMqLog(EvalUserPool evalUserPool, EvalRankReportBO evalRankReportBO, EffectEvalStageBO stageBO, String indicatorCode, Long evalCalcId, LocalDate dataDate) {
  695 + final LocalDate wholeBeginTime = evalRankReportBO.getWholeBeginTime();
  696 + final Long groupId = stageBO.getGroupId();
  697 +
  698 + KpiStageMqLog mqLog = new KpiStageMqLog();
  699 + mqLog.setIndicatorCode(indicatorCode);
  700 + mqLog.setWholeBeginTime(wholeBeginTime);
  701 + mqLog.setWholeEndTime(dataDate);
  702 + mqLog.setEvalCalcId(evalCalcId);
  703 + mqLog.setDataDate(dataDate);
  704 + mqLog.setGroupId(groupId);
  705 + mqLog.setUserIds(new ArrayList<Long>(){{add(evalUserPool.getShopId());}});
  706 + mqLog.setShopIds(new ArrayList<Long>(){{add(evalUserPool.getShopId());}});
  707 + return mqLog;
  708 + }
  709 +
624 710 public void checkExtractStageIndicatorTimeOut() {
625 711 Lock lock = distributedLocker.lock(evalCalculationVal.getCheckExtractStageTimeOutKey());
626 712 if (!((RLock) lock).isLocked()) {
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java
... ... @@ -180,6 +180,13 @@ public class EvalPoolCommonService {
180 180 return userPool;
181 181 }
182 182  
  183 + @Transactional(rollbackFor = Exception.class)
  184 + public void createUserPools(List<EvalGroupUser> users, EvalScopeEnum scopeType) {
  185 + for (EvalGroupUser user : Optional.ofNullable(users).orElse(new ArrayList<>())) {
  186 + this.createUserPool(user, scopeType);
  187 + }
  188 + }
  189 +
183 190 /**
184 191 * 查询薪酬池
185 192 *
... ... @@ -207,6 +214,7 @@ public class EvalPoolCommonService {
207 214 if (Boolean.FALSE.equals(inclusion)) {
208 215 evalUserPool.setReward(BigDecimal.ZERO);
209 216 }
  217 + evalUserPool.setDataDate(user.getDataDate());
210 218 evalUserPoolService.updateById(evalUserPool);
211 219 }
212 220 //同一个考评组的 调岗员工 修改调岗数据(调岗同岗位,合并数据,不同岗位,两条数据)
... ...