Commit 56b2e55f67a230c417bad4515ab15f16e87fd7e5

Authored by 姜超
1 parent b64bfc45

feature(*): 考评报表抽取修改

考评报表抽取修改
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankReport.java
... ... @@ -44,6 +44,10 @@ public class EvalUserRankReport extends BaseEntity<EvalUserRankReport, Long> {
44 44 private Boolean multiStage;
45 45  
46 46 /**
  47 + * 门店
  48 + */
  49 + private List<Long> shopIds;
  50 + /**
47 51 * 集团id
48 52 */
49 53 private Long groupId;
... ...
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserReport.java
... ... @@ -83,10 +83,20 @@ public class EvalUserReport extends BaseEntity&lt;EvalUserReport, Long&gt; {
83 83 */
84 84 private LocalDate dataDate;
85 85  
86   -// /**
87   -// * 月份
88   -// */
89   -// private YearMonth monthly;
  86 + /**
  87 + * 考评奖惩
  88 + */
  89 + private BigDecimal reward;
  90 +
  91 + /**
  92 + * 考评得分
  93 + */
  94 + private BigDecimal score;
  95 +
  96 + /**
  97 + * 考评得分率
  98 + */
  99 + private BigDecimal scoreRatio;
90 100  
91 101 /**
92 102 * 绩效池id
... ...
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java
... ... @@ -144,14 +144,16 @@ public class EvalUserReportTask {
144 144 if (PublicUtil.isEmpty(stages)) {
145 145 return;
146 146 }
  147 + List<EvalGroup> evalGroups = evalGroupService.getEvalGroups(rank.getId());
  148 + Map<Long, List<EvalGroup>> stageEvalGroupMap = evalGroups.stream().collect(Collectors.groupingBy(EvalGroup::getEvalGroupRankStageId));
147 149 //排名组
148   - EvalUserRankReport reportRank = this.saveRankReport(rank, date, groupId);
  150 + EvalUserRankReport reportRank = this.saveRankReport(rank, evalGroups, date, groupId);
149 151 final Long evalUserRankReportId = reportRank.getId();
150 152 for (EvalGroupRankStage rankStage : stages) {
151 153 //如果当前时间 大于 考评阶段结束时间,使用考评结束时间进行查询
152 154 LocalDate dataDate = (date.compareTo(rankStage.getOverTime()) > 0) ? rankStage.getOverTime() : date;
153   - List<EvalGroup> evalGroups = evalGroupService.getEvalGroups(rank.getId());
154   - List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList());
  155 + List<EvalGroup> stageEvalGroups = stageEvalGroupMap.get(rankStage.getId());
  156 + List<Long> evalGroupIds = stageEvalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList());
155 157 if (PublicUtil.isEmpty(evalGroupIds)) {
156 158 continue;
157 159 }
... ... @@ -172,7 +174,7 @@ public class EvalUserReportTask {
172 174 );
173 175  
174 176 //排名组阶段
175   - EvalUserRankStageReport rankStageReport = this.saveRankStageReport(reportRank, rank, rankStage, evalGroups);
  177 + EvalUserRankStageReport rankStageReport = this.saveRankStageReport(reportRank, rank, rankStage, stageEvalGroups);
176 178 final Long evalUserRankStageReportId = rankStageReport.getId();
177 179 //排名组指标编码、人员、门店
178 180 List<EvalUserRankCodeReport> rankCodes = this.saveRankCodeReports(evalGroupIndicators, evalUserRankReportId, evalUserRankStageReportId, dataDate);
... ... @@ -182,7 +184,7 @@ public class EvalUserReportTask {
182 184 List<EvalUserValueReport> reportUserValues = calcUser(userPools, evalGroupIndicators, evalUserReports, dataDate);
183 185 //门店维度
184 186 calcShop(shopPools, evalGroupIndicators, evalShopReports, dataDate);
185   - //门店维度
  187 + //管理者维度
186 188 calcManager(userPools, reportUserValues, rankCodes, evalUserReports, rankStageReport, dataDate);
187 189 }
188 190  
... ... @@ -196,7 +198,6 @@ public class EvalUserReportTask {
196 198 return new ArrayList<>();
197 199 }
198 200 List<EvalUserValueReport> reportUserValues = new ArrayList<>();
199   - List<Long> userIds = pools.stream().map(EvalUserPool::getUserId).distinct().collect(Collectors.toList());
200 201 List<Long> poolIds = pools.stream().map(EvalUserPool::getId).collect(Collectors.toList());
201 202 List<Long> evalGroupIndicatorIds = evalGroupIndicators.stream().map(EvalGroupIndicator::getId).collect(Collectors.toList());
202 203 List<EvalGroupIndicatorHitLog> hitLogs = evalGroupIndicatorHitLogService.getHitLogs(evalGroupIndicatorIds, poolIds, EvalScopeEnum.STAFF, date);
... ... @@ -252,12 +253,14 @@ public class EvalUserReportTask {
252 253 return reportUserValues;
253 254 }
254 255  
255   - public List<EvalUserValueReport> calcShop(List<EvalShopPool> pools,
  256 + public void calcShop(List<EvalShopPool> pools,
256 257 List<EvalGroupIndicator> evalGroupIndicators,
257 258 List<EvalUserReport> evalShopReports,
258 259 LocalDate date) {
  260 + if (PublicUtil.isEmpty(pools)) {
  261 + return ;
  262 + }
259 263 List<EvalUserValueReport> reportUserValues = new ArrayList<>();
260   - List<Long> shopIds = pools.stream().map(EvalShopPool::getShopId).distinct().collect(Collectors.toList());
261 264 List<Long> poolIds = pools.stream().map(EvalShopPool::getId).collect(Collectors.toList());
262 265 List<Long> evalGroupIndicatorIds = evalGroupIndicators.stream().map(EvalGroupIndicator::getId).collect(Collectors.toList());
263 266 List<EvalGroupIndicatorHitLog> hitLogs = evalGroupIndicatorHitLogService.getHitLogs(evalGroupIndicatorIds, poolIds, EvalScopeEnum.SHOP, date);
... ... @@ -305,7 +308,6 @@ public class EvalUserReportTask {
305 308 if (PublicUtil.isNotEmpty(reportUserValues)) {
306 309 evalUserValueReportService.saveBatch(reportUserValues);
307 310 }
308   - return reportUserValues;
309 311 }
310 312  
311 313 public void calcManager(List<EvalUserPool> pools,
... ... @@ -317,7 +319,7 @@ public class EvalUserReportTask {
317 319 if (PublicUtil.isEmpty(pools)) {
318 320 return;
319 321 }
320   - List<Long> shopIds = pools.stream().map(EvalUserPool::getShopId).collect(Collectors.toList());
  322 + List<Long> shopIds = pools.stream().map(EvalUserPool::getShopId).distinct().collect(Collectors.toList());
321 323 List<ManagerDTO> managerDTOS = ehrRpcService.getRealTimeShopManager(new ArrayList<>(shopIds));
322 324 log.info("查询门店实时管理者:{},{}", JSON.toJSONString(shopIds), JSON.toJSONString(managerDTOS));
323 325 if (PublicUtil.isEmpty(managerDTOS)) {
... ... @@ -381,12 +383,18 @@ public class EvalUserReportTask {
381 383 }
382 384  
383 385 public List<EvalUserReport> saveStaffReports(List<EvalUserPool> pools, LocalDate date, Long evalUserRankReportId, Long evalUserRankStageReportId) {
  386 + if (PublicUtil.isEmpty(pools)) {
  387 + return new ArrayList<>();
  388 + }
384 389 List<EvalUserReport> evalUserReports = new ArrayList<>();
385 390 for (EvalUserPool userPool : pools) {
386 391 EvalUserReport report = new EvalUserReport();
387 392 report.setEvalUserRankReportId(evalUserRankReportId);
388 393 report.setEvalUserRankStageReportId(evalUserRankStageReportId);
389 394 report.setDimension(ReportDimensionEnum.STAFF);
  395 + report.setReward(userPool.getReward());
  396 + report.setScore(userPool.getScore());
  397 + report.setScoreRatio(userPool.getScoreRatio().multiply(Constant.ONE_HUNDRED));
390 398 report.setUserId(userPool.getUserId());
391 399 report.setUserName(userPool.getUserName());
392 400 report.setPostId(userPool.getPostId());
... ... @@ -403,11 +411,17 @@ public class EvalUserReportTask {
403 411 }
404 412  
405 413 public List<EvalUserReport> saveShopReports(List<EvalShopPool> shopPools, LocalDate date, Long evalUserRankReportId, Long evalUserRankStageReportId) {
  414 + if (PublicUtil.isEmpty(shopPools)) {
  415 + return new ArrayList<>();
  416 + }
406 417 List<EvalUserReport> evalShopReports = new ArrayList<>();
407 418 for (EvalShopPool shopPool : shopPools) {
408 419 EvalUserReport report = new EvalUserReport();
409 420 report.setDimension(ReportDimensionEnum.SHOP);
410 421 report.setEvalUserRankReportId(evalUserRankReportId);
  422 + report.setReward(shopPool.getReward());
  423 + report.setScore(shopPool.getScore());
  424 + report.setScoreRatio(shopPool.getScoreRatio().multiply(Constant.ONE_HUNDRED));
411 425 report.setEvalUserRankStageReportId(evalUserRankStageReportId);
412 426 report.setShopId(shopPool.getShopId());
413 427 report.setShopName(shopPool.getShopName());
... ... @@ -498,6 +512,9 @@ public class EvalUserReportTask {
498 512 }
499 513 List<Long> rankReportIds = rankReports.stream().map(EvalUserRankReport::getId).collect(Collectors.toList());
500 514 evalUserRankReportService.removeByIds(rankReportIds);
  515 + evalUserRankStageReportService.remove(Wrappers.<EvalUserRankStageReport>lambdaUpdate()
  516 + .in(EvalUserRankStageReport::getEvalUserRankReportId, rankReportIds)
  517 + );
501 518 evalUserRankCodeReportService.remove(Wrappers.<EvalUserRankCodeReport>lambdaUpdate()
502 519 .in(EvalUserRankCodeReport::getEvalUserRankReportId, rankReportIds)
503 520 );
... ... @@ -558,14 +575,15 @@ public class EvalUserReportTask {
558 575 return evalGroupRanks.stream().collect(Collectors.groupingBy(EvalGroupRank::getGroupId));
559 576 }
560 577  
561   - public EvalUserRankReport saveRankReport(EvalGroupRank rank, LocalDate date, Long groupId) {
562   -// List<Long> shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll);
  578 + public EvalUserRankReport saveRankReport(EvalGroupRank rank, List<EvalGroup> evalGroups, LocalDate date, Long groupId) {
  579 + List<Long> shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll);
563 580 EvalUserRankReport reportRank = new EvalUserRankReport();
564 581 reportRank.setRankId(rank.getId());
565 582 reportRank.setRankName(rank.getName());
566 583 reportRank.setMultiStage(rank.getMultiStage());
567 584 reportRank.setDataDate(date);
568 585 reportRank.setMonthly(YearMonth.from(date));
  586 + reportRank.setShopIds(shopIds);
569 587 reportRank.setGroupId(groupId);
570 588 evalUserRankReportService.save(reportRank);
571 589 return reportRank;
... ...