From 56b2e55f67a230c417bad4515ab15f16e87fd7e5 Mon Sep 17 00:00:00 2001 From: jiangchao Date: Fri, 26 May 2023 17:09:49 +0800 Subject: [PATCH] feature(*): 考评报表抽取修改 --- fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankReport.java | 4 ++++ fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserReport.java | 18 ++++++++++++++---- fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java | 42 ++++++++++++++++++++++++++++++------------ 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankReport.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankReport.java index 025e920..027edbd 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankReport.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankReport.java @@ -44,6 +44,10 @@ public class EvalUserRankReport extends BaseEntity { private Boolean multiStage; /** + * 门店 + */ + private List shopIds; + /** * 集团id */ private Long groupId; diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserReport.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserReport.java index 96ae2a9..c75f036 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserReport.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserReport.java @@ -83,10 +83,20 @@ public class EvalUserReport extends BaseEntity { */ private LocalDate dataDate; -// /** -// * 月份 -// */ -// private YearMonth monthly; + /** + * 考评奖惩 + */ + private BigDecimal reward; + + /** + * 考评得分 + */ + private BigDecimal score; + + /** + * 考评得分率 + */ + private BigDecimal scoreRatio; /** * 绩效池id diff --git a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java index 400a366..de236a1 100644 --- a/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java +++ b/fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java @@ -144,14 +144,16 @@ public class EvalUserReportTask { if (PublicUtil.isEmpty(stages)) { return; } + List evalGroups = evalGroupService.getEvalGroups(rank.getId()); + Map> stageEvalGroupMap = evalGroups.stream().collect(Collectors.groupingBy(EvalGroup::getEvalGroupRankStageId)); //排名组 - EvalUserRankReport reportRank = this.saveRankReport(rank, date, groupId); + EvalUserRankReport reportRank = this.saveRankReport(rank, evalGroups, date, groupId); final Long evalUserRankReportId = reportRank.getId(); for (EvalGroupRankStage rankStage : stages) { //如果当前时间 大于 考评阶段结束时间,使用考评结束时间进行查询 LocalDate dataDate = (date.compareTo(rankStage.getOverTime()) > 0) ? rankStage.getOverTime() : date; - List evalGroups = evalGroupService.getEvalGroups(rank.getId()); - List evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); + List stageEvalGroups = stageEvalGroupMap.get(rankStage.getId()); + List evalGroupIds = stageEvalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); if (PublicUtil.isEmpty(evalGroupIds)) { continue; } @@ -172,7 +174,7 @@ public class EvalUserReportTask { ); //排名组阶段 - EvalUserRankStageReport rankStageReport = this.saveRankStageReport(reportRank, rank, rankStage, evalGroups); + EvalUserRankStageReport rankStageReport = this.saveRankStageReport(reportRank, rank, rankStage, stageEvalGroups); final Long evalUserRankStageReportId = rankStageReport.getId(); //排名组指标编码、人员、门店 List rankCodes = this.saveRankCodeReports(evalGroupIndicators, evalUserRankReportId, evalUserRankStageReportId, dataDate); @@ -182,7 +184,7 @@ public class EvalUserReportTask { List reportUserValues = calcUser(userPools, evalGroupIndicators, evalUserReports, dataDate); //门店维度 calcShop(shopPools, evalGroupIndicators, evalShopReports, dataDate); - //门店维度 + //管理者维度 calcManager(userPools, reportUserValues, rankCodes, evalUserReports, rankStageReport, dataDate); } @@ -196,7 +198,6 @@ public class EvalUserReportTask { return new ArrayList<>(); } List reportUserValues = new ArrayList<>(); - List userIds = pools.stream().map(EvalUserPool::getUserId).distinct().collect(Collectors.toList()); List poolIds = pools.stream().map(EvalUserPool::getId).collect(Collectors.toList()); List evalGroupIndicatorIds = evalGroupIndicators.stream().map(EvalGroupIndicator::getId).collect(Collectors.toList()); List hitLogs = evalGroupIndicatorHitLogService.getHitLogs(evalGroupIndicatorIds, poolIds, EvalScopeEnum.STAFF, date); @@ -252,12 +253,14 @@ public class EvalUserReportTask { return reportUserValues; } - public List calcShop(List pools, + public void calcShop(List pools, List evalGroupIndicators, List evalShopReports, LocalDate date) { + if (PublicUtil.isEmpty(pools)) { + return ; + } List reportUserValues = new ArrayList<>(); - List shopIds = pools.stream().map(EvalShopPool::getShopId).distinct().collect(Collectors.toList()); List poolIds = pools.stream().map(EvalShopPool::getId).collect(Collectors.toList()); List evalGroupIndicatorIds = evalGroupIndicators.stream().map(EvalGroupIndicator::getId).collect(Collectors.toList()); List hitLogs = evalGroupIndicatorHitLogService.getHitLogs(evalGroupIndicatorIds, poolIds, EvalScopeEnum.SHOP, date); @@ -305,7 +308,6 @@ public class EvalUserReportTask { if (PublicUtil.isNotEmpty(reportUserValues)) { evalUserValueReportService.saveBatch(reportUserValues); } - return reportUserValues; } public void calcManager(List pools, @@ -317,7 +319,7 @@ public class EvalUserReportTask { if (PublicUtil.isEmpty(pools)) { return; } - List shopIds = pools.stream().map(EvalUserPool::getShopId).collect(Collectors.toList()); + List shopIds = pools.stream().map(EvalUserPool::getShopId).distinct().collect(Collectors.toList()); List managerDTOS = ehrRpcService.getRealTimeShopManager(new ArrayList<>(shopIds)); log.info("查询门店实时管理者:{},{}", JSON.toJSONString(shopIds), JSON.toJSONString(managerDTOS)); if (PublicUtil.isEmpty(managerDTOS)) { @@ -381,12 +383,18 @@ public class EvalUserReportTask { } public List saveStaffReports(List pools, LocalDate date, Long evalUserRankReportId, Long evalUserRankStageReportId) { + if (PublicUtil.isEmpty(pools)) { + return new ArrayList<>(); + } List evalUserReports = new ArrayList<>(); for (EvalUserPool userPool : pools) { EvalUserReport report = new EvalUserReport(); report.setEvalUserRankReportId(evalUserRankReportId); report.setEvalUserRankStageReportId(evalUserRankStageReportId); report.setDimension(ReportDimensionEnum.STAFF); + report.setReward(userPool.getReward()); + report.setScore(userPool.getScore()); + report.setScoreRatio(userPool.getScoreRatio().multiply(Constant.ONE_HUNDRED)); report.setUserId(userPool.getUserId()); report.setUserName(userPool.getUserName()); report.setPostId(userPool.getPostId()); @@ -403,11 +411,17 @@ public class EvalUserReportTask { } public List saveShopReports(List shopPools, LocalDate date, Long evalUserRankReportId, Long evalUserRankStageReportId) { + if (PublicUtil.isEmpty(shopPools)) { + return new ArrayList<>(); + } List evalShopReports = new ArrayList<>(); for (EvalShopPool shopPool : shopPools) { EvalUserReport report = new EvalUserReport(); report.setDimension(ReportDimensionEnum.SHOP); report.setEvalUserRankReportId(evalUserRankReportId); + report.setReward(shopPool.getReward()); + report.setScore(shopPool.getScore()); + report.setScoreRatio(shopPool.getScoreRatio().multiply(Constant.ONE_HUNDRED)); report.setEvalUserRankStageReportId(evalUserRankStageReportId); report.setShopId(shopPool.getShopId()); report.setShopName(shopPool.getShopName()); @@ -498,6 +512,9 @@ public class EvalUserReportTask { } List rankReportIds = rankReports.stream().map(EvalUserRankReport::getId).collect(Collectors.toList()); evalUserRankReportService.removeByIds(rankReportIds); + evalUserRankStageReportService.remove(Wrappers.lambdaUpdate() + .in(EvalUserRankStageReport::getEvalUserRankReportId, rankReportIds) + ); evalUserRankCodeReportService.remove(Wrappers.lambdaUpdate() .in(EvalUserRankCodeReport::getEvalUserRankReportId, rankReportIds) ); @@ -558,14 +575,15 @@ public class EvalUserReportTask { return evalGroupRanks.stream().collect(Collectors.groupingBy(EvalGroupRank::getGroupId)); } - public EvalUserRankReport saveRankReport(EvalGroupRank rank, LocalDate date, Long groupId) { -// List shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll); + public EvalUserRankReport saveRankReport(EvalGroupRank rank, List evalGroups, LocalDate date, Long groupId) { + List shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll); EvalUserRankReport reportRank = new EvalUserRankReport(); reportRank.setRankId(rank.getId()); reportRank.setRankName(rank.getName()); reportRank.setMultiStage(rank.getMultiStage()); reportRank.setDataDate(date); reportRank.setMonthly(YearMonth.from(date)); + reportRank.setShopIds(shopIds); reportRank.setGroupId(groupId); evalUserRankReportService.save(reportRank); return reportRank; -- libgit2 0.22.2