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