Commit b4782e5be7613ad6e6e77d7667cf9600fabf8781
1 parent
501244c6
feature(*): 考评报表抽取修改
考评报表抽取修改
Showing
2 changed files
with
40 additions
and
41 deletions
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankStageReport.java
... | ... | @@ -25,7 +25,8 @@ import java.util.List; |
25 | 25 | @EqualsAndHashCode(callSuper = false) |
26 | 26 | @Accessors(chain = true) |
27 | 27 | @TableName(autoResultMap = true) |
28 | -public class EvalUserRankStageReport extends BaseEntity<EvalUserRankStageReport, Long> { | |
28 | +public class | |
29 | +EvalUserRankStageReport extends BaseEntity<EvalUserRankStageReport, Long> { | |
29 | 30 | |
30 | 31 | private static final long serialVersionUID = 1L; |
31 | 32 | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java
... | ... | @@ -40,6 +40,7 @@ import org.springframework.transaction.TransactionStatus; |
40 | 40 | import org.springframework.transaction.annotation.Transactional; |
41 | 41 | |
42 | 42 | import java.math.BigDecimal; |
43 | +import java.math.RoundingMode; | |
43 | 44 | import java.time.LocalDate; |
44 | 45 | import java.time.YearMonth; |
45 | 46 | import java.time.temporal.TemporalAdjusters; |
... | ... | @@ -68,8 +69,6 @@ public class EvalUserReportTask { |
68 | 69 | private final EvalUserRankStageReportService evalUserRankStageReportService; |
69 | 70 | private final EvalUserValueReportService evalUserValueReportService; |
70 | 71 | private final EvalGroupIndicatorService evalGroupIndicatorService; |
71 | - private final IndicatorUserValueService indicatorUserValueService; | |
72 | - private final EvalIndicatorValueService evalIndicatorValueService; | |
73 | 72 | private final PlatformTransactionManager platformTransactionManager; |
74 | 73 | private final EvalUserRankReportService evalUserRankReportService; |
75 | 74 | private final EvalGroupRankStageService evalGroupRankStageService; |
... | ... | @@ -185,9 +184,6 @@ public class EvalUserReportTask { |
185 | 184 | List<EvalUserValueReport> reportUserValues = calcUser(userPools, evalGroupIndicators, evalUserReports, dataDate); |
186 | 185 | //门店维度 |
187 | 186 | calcShop(shopPools, evalGroupIndicators, evalShopReports, dataDate); |
188 | - //管理者维度 | |
189 | - //门店维度 | |
190 | - calcShop(shopPools, evalGroupIndicators, evalShopReports, dataDate); | |
191 | 187 | //门店维度 |
192 | 188 | calcManager(userPools, reportUserValues, rankCodes, evalUserReports, rankStageReport, date); |
193 | 189 | } |
... | ... | @@ -323,7 +319,7 @@ public class EvalUserReportTask { |
323 | 319 | if (PublicUtil.isEmpty(pools)) { |
324 | 320 | return; |
325 | 321 | } |
326 | - List<Long> shopIds = pools.stream().map(EvalUserPool::getShopId).collect(Collectors.toList()); | |
322 | + List<Long> shopIds = pools.stream().map(EvalUserPool::getShopId).distinct().collect(Collectors.toList()); | |
327 | 323 | List<ManagerDTO> managerDTOS = ehrRpcService.getRealTimeShopManager(new ArrayList<>(shopIds)); |
328 | 324 | log.info("查询门店实时管理者:{},{}", JSON.toJSONString(shopIds), JSON.toJSONString(managerDTOS)); |
329 | 325 | if (PublicUtil.isEmpty(managerDTOS)) { |
... | ... | @@ -342,7 +338,8 @@ public class EvalUserReportTask { |
342 | 338 | if (PublicUtil.isEmpty(managerStaffDimReportIds)) { |
343 | 339 | continue; |
344 | 340 | } |
345 | - final Long managerEvalUserReportId = this.saveManagerDimDB(manager, rankStageReport, managerMap, manageStaffIds, date); | |
341 | + EvalUserReport evalUserReport = createManager(rankStageReport, date); | |
342 | + final Long managerEvalUserReportId = this.saveManagerDimDB(evalUserReport, manager, pools, managerMap, manageStaffIds); | |
346 | 343 | |
347 | 344 | for (EvalUserRankCodeReport codeReport : rankCodes) { |
348 | 345 | BigDecimal value = calcAverageValue(reportUserValues, managerStaffDimReportIds, codeReport.getCode()); |
... | ... | @@ -428,6 +425,7 @@ public class EvalUserReportTask { |
428 | 425 | report.setScoreRatio(shopPool.getScoreRatio().multiply(Constant.ONE_HUNDRED)); |
429 | 426 | report.setEvalUserRankStageReportId(evalUserRankStageReportId); |
430 | 427 | report.setShopId(shopPool.getShopId()); |
428 | + report.setEvalShopPoolId(shopPool.getId()); | |
431 | 429 | report.setShopName(shopPool.getShopName()); |
432 | 430 | report.setDataDate(date); |
433 | 431 | evalShopReports.add(report); |
... | ... | @@ -436,33 +434,6 @@ public class EvalUserReportTask { |
436 | 434 | return evalShopReports; |
437 | 435 | } |
438 | 436 | |
439 | - public Map<Long, BigDecimal> queryUserOriginValue(EvalGroupIndicatorParam param, List<Long> userIds, LocalDate dataDate) { | |
440 | - final String code = param.getCode(); | |
441 | - final IndicatorCodeTypeEnum codeType = param.getCodeType(); | |
442 | - Map<Long, BigDecimal> referValueMap = Maps.newHashMapWithExpectedSize(userIds.size()); | |
443 | - //无目标 | |
444 | - if (IndicatorCodeTypeEnum.INDICATOR.equals(codeType)) { | |
445 | - List<IndicatorUserValue> indicatorUserValues = indicatorUserValueService.list(Wrappers.<IndicatorUserValue>lambdaQuery() | |
446 | - .eq(IndicatorUserValue::getIndicatorCode, code) | |
447 | - .eq(IndicatorUserValue::getDataDate, dataDate) | |
448 | - .in(IndicatorUserValue::getUserId, userIds) | |
449 | - .eq(IndicatorUserValue::getDimensionType, DimensionTypeEnum.STAFF) | |
450 | - .eq(IndicatorUserValue::getYn, Boolean.TRUE) | |
451 | - ); | |
452 | - for (IndicatorUserValue userValue : indicatorUserValues) { | |
453 | - referValueMap.put(userValue.getUserId(), commonService.queryIndicatorValueVO(code, userValue, | |
454 | - param.getTargetType(), param.getDataType())); | |
455 | - } | |
456 | - return referValueMap; | |
457 | - } | |
458 | - for (Long userId : userIds) { | |
459 | - EvalIndicatorValue evalIndicatorValue = evalIndicatorValueService.queryLastValue(userId, | |
460 | - DimensionTypeEnum.STAFF, code, dataDate); | |
461 | - referValueMap.put(userId, commonService.queryEvalIndicatorValueVO(code, evalIndicatorValue, param.getTargetType(), param.getDataType())); | |
462 | - } | |
463 | - return referValueMap; | |
464 | - } | |
465 | - | |
466 | 437 | public Map<Long, EvalGroupIndicatorTargetHitLog> queryTargetValue(Long referId, List<Long> poolIds, LocalDate dataDate, EvalScopeEnum scopeType) { |
467 | 438 | List<EvalGroupIndicatorTargetHitLog> targetHitLogs = evalGroupIndicatorTargetHitLogService.list(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() |
468 | 439 | .eq(EvalGroupIndicatorTargetHitLog::getReferId, referId) |
... | ... | @@ -611,16 +582,18 @@ public class EvalUserReportTask { |
611 | 582 | return reportRankStage; |
612 | 583 | } |
613 | 584 | |
614 | - public Long saveManagerDimDB(ManagerDTO manager, EvalUserRankStageReport rankStageReport, | |
615 | - Map<Long, StaffBaseInfoDTO> managerMap, | |
616 | - List<Long> manageStaffIds, LocalDate date) { | |
585 | + public EvalUserReport createManager(EvalUserRankStageReport rankStageReport, LocalDate date) { | |
617 | 586 | EvalUserReport evalUserReport = new EvalUserReport(); |
618 | - evalUserReport.setEvalUserRankReportId(rankStageReport.getEvalGroupRankId()); | |
619 | - evalUserReport.setEvalUserRankStageReportId(rankStageReport.getEvalGroupRankStageId()); | |
587 | + evalUserReport.setEvalUserRankReportId(rankStageReport.getEvalUserRankReportId()); | |
588 | + evalUserReport.setEvalUserRankStageReportId(rankStageReport.getId()); | |
620 | 589 | evalUserReport.setDimension(ReportDimensionEnum.MANAGER); |
590 | + evalUserReport.setDataDate(date); | |
591 | + return evalUserReport; | |
592 | + } | |
593 | + | |
594 | + public Long saveManagerDimDB(EvalUserReport evalUserReport, ManagerDTO manager, List<EvalUserPool> pools, Map<Long, StaffBaseInfoDTO> managerMap, List<Long> manageStaffIds) { | |
621 | 595 | evalUserReport.setUserId(manager.getStaffId()); |
622 | 596 | evalUserReport.setUserName(manager.getStaffName()); |
623 | - evalUserReport.setDataDate(date); | |
624 | 597 | if (managerMap.containsKey(manager.getStaffId())) { |
625 | 598 | StaffBaseInfoDTO staffInfo = managerMap.get(manager.getStaffId()); |
626 | 599 | evalUserReport.setShopId(staffInfo.getShopId()); |
... | ... | @@ -645,6 +618,31 @@ public class EvalUserReportTask { |
645 | 618 | .distinct() |
646 | 619 | .collect(Collectors.toList()); |
647 | 620 | |
621 | + Double averageScoreDouble = pools.stream() | |
622 | + .filter(pool -> manageStaffIds.contains(pool.getUserId())) | |
623 | + .mapToDouble(userValue -> Optional.ofNullable(userValue.getScore()).orElse(BigDecimal.ZERO).doubleValue()) | |
624 | + .average() | |
625 | + .orElse(0); | |
626 | + BigDecimal score = new BigDecimal(averageScoreDouble.toString()).divide(BigDecimal.ONE, 4, RoundingMode.HALF_UP); | |
627 | + | |
628 | + Double averageScoreRatioDouble = pools.stream() | |
629 | + .filter(pool -> manageStaffIds.contains(pool.getUserId())) | |
630 | + .mapToDouble(userValue -> Optional.ofNullable(userValue.getScoreRatio()).orElse(BigDecimal.ZERO).doubleValue()) | |
631 | + .average() | |
632 | + .orElse(0); | |
633 | + BigDecimal scoreRatio = new BigDecimal(averageScoreRatioDouble.toString()).divide(BigDecimal.ONE, 4, RoundingMode.HALF_UP); | |
634 | + | |
635 | + Double averageRewardDouble = pools.stream() | |
636 | + .filter(pool -> manageStaffIds.contains(pool.getUserId())) | |
637 | + .mapToDouble(userValue -> Optional.ofNullable(userValue.getScore()).orElse(BigDecimal.ZERO).doubleValue()) | |
638 | + .average() | |
639 | + .orElse(0); | |
640 | + BigDecimal reward = new BigDecimal(averageRewardDouble.toString()).divide(BigDecimal.ONE, 4, RoundingMode.HALF_UP); | |
641 | + | |
642 | + evalUserReport.setScore(score); | |
643 | + evalUserReport.setScoreRatio(scoreRatio.multiply(Constant.ONE_HUNDRED)); | |
644 | + evalUserReport.setReward(reward); | |
645 | + | |
648 | 646 | evalUserReportService.save(evalUserReport); |
649 | 647 | EvalUserExtraReport evalUserExtraReport = EvalUserExtraReport.builder() |
650 | 648 | .evalUserReportId(evalUserReport.getId()) | ... | ... |