Commit 26a838fe5a28cc710460c702e3db94e4bb7b5ff8
1 parent
9f48755c
feature(*): 考评报表修改
考评报表修改
Showing
12 changed files
with
316 additions
and
57 deletions
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRankStageDao.java
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalUserRankStageReportDao.java
0 → 100644
1 | +package cn.fw.morax.dao.eval; | |
2 | + | |
3 | + | |
4 | +import cn.fw.morax.domain.db.eval.EvalUserRankStageReport; | |
5 | +import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
6 | + | |
7 | +/** | |
8 | + * <p> | |
9 | + * 报表绩效排名组 Mapper 接口 | |
10 | + * </p> | |
11 | + * | |
12 | + * @author jiangchao | |
13 | + * @since 2023-03-31 | |
14 | + */ | |
15 | +public interface EvalUserRankStageReportDao extends BaseMapper<EvalUserRankStageReport> { | |
16 | + | |
17 | +} | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankCodeReport.java
... | ... | @@ -31,6 +31,11 @@ public class EvalUserRankCodeReport extends BaseEntity<EvalUserRankCodeReport, L |
31 | 31 | private Long evalUserRankReportId; |
32 | 32 | |
33 | 33 | /** |
34 | + * 报表考评排名组阶段id | |
35 | + */ | |
36 | + private Long evalUserRankStageReportId; | |
37 | + | |
38 | + /** | |
34 | 39 | * 考评指标id |
35 | 40 | */ |
36 | 41 | private Long evalGroupIndicatorId; | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankReport.java
... | ... | @@ -39,16 +39,9 @@ public class EvalUserRankReport extends BaseEntity<EvalUserRankReport, Long> { |
39 | 39 | private String rankName; |
40 | 40 | |
41 | 41 | /** |
42 | - * 考评组id | |
42 | + * 多阶段 | |
43 | 43 | */ |
44 | - @TableField(typeHandler = LongListTypeHandler.class) | |
45 | - private List<Long> evalGroupIds; | |
46 | - | |
47 | - /** | |
48 | - * 考评所有门店id | |
49 | - */ | |
50 | - @TableField(typeHandler = LongListTypeHandler.class) | |
51 | - private List<Long> shopIds; | |
44 | + private Boolean multiStage; | |
52 | 45 | |
53 | 46 | /** |
54 | 47 | * 集团id | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserRankStageReport.java
0 → 100644
1 | +package cn.fw.morax.domain.db.eval; | |
2 | + | |
3 | +import cn.fw.common.data.entity.BaseEntity; | |
4 | +import cn.fw.common.data.mybatis.handler.LongListTypeHandler; | |
5 | +import com.baomidou.mybatisplus.annotation.TableField; | |
6 | +import com.baomidou.mybatisplus.annotation.TableName; | |
7 | +import lombok.Data; | |
8 | +import lombok.EqualsAndHashCode; | |
9 | +import lombok.experimental.Accessors; | |
10 | + | |
11 | +import java.time.LocalDate; | |
12 | +import java.time.YearMonth; | |
13 | +import java.util.List; | |
14 | + | |
15 | +/** | |
16 | + * <p> | |
17 | + * 报表绩效排名组 | |
18 | + * </p> | |
19 | + * | |
20 | + * @author jiangchao | |
21 | + * @since 2023-03-31 | |
22 | + */ | |
23 | +@Data | |
24 | +@EqualsAndHashCode(callSuper = false) | |
25 | +@Accessors(chain = true) | |
26 | +@TableName(autoResultMap = true) | |
27 | +public class EvalUserRankStageReport extends BaseEntity<EvalUserRankStageReport, Long> { | |
28 | + | |
29 | + private static final long serialVersionUID = 1L; | |
30 | + | |
31 | + /** | |
32 | + * 报表考评排名组id | |
33 | + */ | |
34 | + private Long evalUserRankReportId; | |
35 | + | |
36 | + /** | |
37 | + * 考评排名组id | |
38 | + */ | |
39 | + private Long evalGroupRankId; | |
40 | + | |
41 | + /** | |
42 | + * 考评排名组阶段id | |
43 | + */ | |
44 | + private Long evalGroupRankStageId; | |
45 | + | |
46 | + /** | |
47 | + * 考评排名组阶段名称 | |
48 | + */ | |
49 | + private String stageName; | |
50 | + | |
51 | + /** | |
52 | + * 考评组id | |
53 | + */ | |
54 | + @TableField(typeHandler = LongListTypeHandler.class) | |
55 | + private List<Long> evalGroupIds; | |
56 | + | |
57 | + /** | |
58 | + * 生效时间 | |
59 | + */ | |
60 | + private LocalDate beginTime; | |
61 | + | |
62 | + /** | |
63 | + * 结束时间 | |
64 | + */ | |
65 | + private LocalDate overTime; | |
66 | + | |
67 | +} | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/eval/EvalUserReport.java
... | ... | @@ -34,6 +34,11 @@ public class EvalUserReport extends BaseEntity<EvalUserReport, Long> { |
34 | 34 | private Long evalUserRankReportId; |
35 | 35 | |
36 | 36 | /** |
37 | + * 报表考评排名组阶段id | |
38 | + */ | |
39 | + private Long evalUserRankStageReportId; | |
40 | + | |
41 | + /** | |
37 | 42 | * 维度 |
38 | 43 | */ |
39 | 44 | private ReportDimensionEnum dimension; |
... | ... | @@ -88,6 +93,11 @@ public class EvalUserReport extends BaseEntity<EvalUserReport, Long> { |
88 | 93 | */ |
89 | 94 | private Long evalUserPoolId; |
90 | 95 | |
96 | + /** | |
97 | + * 绩效池id | |
98 | + */ | |
99 | + private Long evalShopPoolId; | |
100 | + | |
91 | 101 | public EvalUserReport() { |
92 | 102 | } |
93 | 103 | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/enums/EvalUseTargetEnum.java
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java
... | ... | @@ -15,6 +15,7 @@ import com.google.common.collect.Maps; |
15 | 15 | import lombok.Getter; |
16 | 16 | import lombok.RequiredArgsConstructor; |
17 | 17 | import lombok.extern.slf4j.Slf4j; |
18 | +import org.apache.rocketmq.common.filter.impl.Op; | |
18 | 19 | import org.redisson.api.RLock; |
19 | 20 | import org.springframework.beans.factory.annotation.Value; |
20 | 21 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
... | ... | @@ -51,15 +52,18 @@ public class EvalUserReportTask { |
51 | 52 | private final EvalGroupIndicatorHitLogService evalGroupIndicatorHitLogService; |
52 | 53 | private final EvalGroupIndicatorParamService evalGroupIndicatorParamService; |
53 | 54 | private final EvalUserRankCodeReportService evalUserRankCodeReportService; |
55 | + private final EvalUserRankStageReportService evalUserRankStageReportService; | |
54 | 56 | private final EvalUserValueReportService evalUserValueReportService; |
55 | 57 | private final EvalGroupIndicatorService evalGroupIndicatorService; |
56 | 58 | private final IndicatorUserValueService indicatorUserValueService; |
57 | 59 | private final EvalIndicatorValueService evalIndicatorValueService; |
58 | 60 | private final PlatformTransactionManager platformTransactionManager; |
59 | 61 | private final EvalUserRankReportService evalUserRankReportService; |
62 | + private final EvalGroupRankStageService evalGroupRankStageService; | |
60 | 63 | private final EvalUserReportService evalUserReportService; |
61 | 64 | private final TransactionDefinition transactionDefinition; |
62 | 65 | private final EvalUserPoolService evalUserPoolService; |
66 | + private final EvalShopPoolService evalShopPoolService; | |
63 | 67 | private final EvalGroupRankService evalGroupRankService; |
64 | 68 | private final EvalGroupService evalGroupService; |
65 | 69 | private final DistributedLocker distributedLocker; |
... | ... | @@ -121,36 +125,48 @@ public class EvalUserReportTask { |
121 | 125 | * @param date |
122 | 126 | */ |
123 | 127 | public void createRankReport(EvalGroupRank rank, Long groupId, LocalDate date) { |
124 | - List<EvalGroup> evalGroups = evalGroupService.getEffectsByRankId(rank.getId(), date); | |
125 | - List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); | |
126 | - if (PublicUtil.isEmpty(evalGroupIds)) { | |
128 | + //查已经开始的考评阶段 | |
129 | + List<EvalGroupRankStage> stages = evalGroupRankStageService.getRankStartStages(rank.getId(), date); | |
130 | + if (PublicUtil.isEmpty(stages)) { | |
127 | 131 | return; |
128 | 132 | } |
129 | - List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery() | |
130 | - .in(EvalUserPool::getEvalGroupId, evalGroupIds) | |
131 | - .eq(EvalUserPool::getMonthly, YearMonth.from(date)) | |
132 | - .eq(EvalUserPool::getYn, Boolean.TRUE) | |
133 | - ); | |
134 | - if (PublicUtil.isEmpty(pools)) { | |
135 | - return; | |
136 | - } | |
137 | - List<EvalGroupIndicator> evalGroupIndicators = evalGroupIndicatorService.list(Wrappers.<EvalGroupIndicator>lambdaQuery() | |
138 | - .in(EvalGroupIndicator::getEvalGroupId, evalGroupIds) | |
139 | - .eq(EvalGroupIndicator::getYn, Boolean.TRUE) | |
140 | - .orderByAsc(EvalGroupIndicator::getId) | |
141 | - ); | |
142 | - | |
143 | 133 | //排名组 |
144 | - EvalUserRankReport reportRank = this.saveRankReport(rank, evalGroupIds, evalGroups, date, groupId); | |
134 | + EvalUserRankReport reportRank = this.saveRankReport(rank, date, groupId); | |
145 | 135 | final Long evalUserRankReportId = reportRank.getId(); |
146 | - //排名组指标编码、人员、门店 | |
147 | - List<EvalUserRankCodeReport> rankCodes = this.saveRankCodeReports(evalGroupIndicators, evalUserRankReportId, date); | |
148 | - List<EvalUserReport> evalUserReports = this.saveStaffReports(pools, date, evalUserRankReportId); | |
149 | - List<EvalUserReport> evalShopReports = this.saveShopReports(pools, date, evalUserRankReportId); | |
150 | - //人员维度 | |
151 | - List<EvalUserValueReport> reportUserValues = calcUser(pools, evalGroupIndicators, evalUserReports, date); | |
152 | - //门店维度 | |
153 | - calcShop(evalShopReports, rankCodes, reportUserValues, evalUserReports, date); | |
136 | + for (EvalGroupRankStage rankStage : stages) { | |
137 | + List<EvalGroup> evalGroups = evalGroupService.getEvalGroups(rank.getId()); | |
138 | + List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); | |
139 | + if (PublicUtil.isEmpty(evalGroupIds)) { | |
140 | + continue; | |
141 | + } | |
142 | + List<EvalUserPool> userPools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery() | |
143 | + .in(EvalUserPool::getEvalGroupId, evalGroupIds) | |
144 | + .eq(EvalUserPool::getMonthly, YearMonth.from(date)) | |
145 | + .eq(EvalUserPool::getYn, Boolean.TRUE) | |
146 | + ); | |
147 | + List<EvalShopPool> shopPools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery() | |
148 | + .in(EvalShopPool::getEvalGroupId, evalGroupIds) | |
149 | + .eq(EvalShopPool::getMonthly, YearMonth.from(date)) | |
150 | + .eq(EvalShopPool::getYn, Boolean.TRUE) | |
151 | + ); | |
152 | + List<EvalGroupIndicator> evalGroupIndicators = evalGroupIndicatorService.list(Wrappers.<EvalGroupIndicator>lambdaQuery() | |
153 | + .in(EvalGroupIndicator::getEvalGroupId, evalGroupIds) | |
154 | + .eq(EvalGroupIndicator::getYn, Boolean.TRUE) | |
155 | + .orderByAsc(EvalGroupIndicator::getId) | |
156 | + ); | |
157 | + | |
158 | + EvalUserRankStageReport rankStageReport = this.saveRankStageReport(reportRank, rank, rankStage, evalGroups); | |
159 | + final Long evalUserRankStageReportId = rankStageReport.getId(); | |
160 | + //排名组指标编码、人员、门店 | |
161 | + List<EvalUserRankCodeReport> rankCodes = this.saveRankCodeReports(evalGroupIndicators, evalUserRankReportId, evalUserRankStageReportId, date); | |
162 | + List<EvalUserReport> evalUserReports = this.saveStaffReports(userPools, date, evalUserRankReportId, evalUserRankStageReportId); | |
163 | + List<EvalUserReport> evalShopReports = this.saveShopReports(shopPools, date, evalUserRankReportId, evalUserRankStageReportId); | |
164 | + //人员维度 | |
165 | + List<EvalUserValueReport> reportUserValues = calcUser(userPools, evalGroupIndicators, evalUserReports, date); | |
166 | + //门店维度 | |
167 | + calcShop(evalShopReports, rankCodes, reportUserValues, evalUserReports, date); | |
168 | + } | |
169 | + | |
154 | 170 | |
155 | 171 | } |
156 | 172 | public List<EvalUserValueReport> calcUser(List<EvalUserPool> pools, |
... | ... | @@ -200,7 +216,7 @@ public class EvalUserReportTask { |
200 | 216 | reportUserValues.add(convertParamDB(evalUserReportId, param, value, date)); |
201 | 217 | } |
202 | 218 | } else { |
203 | - Map<Long, EvalGroupIndicatorTargetHitLog> hitLogMap = queryUserTargetValue(param.getId(), poolIds, date); | |
219 | + Map<Long, EvalGroupIndicatorTargetHitLog> hitLogMap = queryTargetValue(param.getId(), poolIds, date); | |
204 | 220 | for (EvalUserPool userPool : pools) { |
205 | 221 | EvalGroupIndicatorTargetHitLog hitLog = hitLogMap.get(userPool.getId()); |
206 | 222 | BigDecimal value = Optional.ofNullable(hitLog) |
... | ... | @@ -218,6 +234,86 @@ public class EvalUserReportTask { |
218 | 234 | return reportUserValues; |
219 | 235 | } |
220 | 236 | |
237 | + public List<EvalUserValueReport> calcShop2(List<EvalShopPool> pools, | |
238 | + List<EvalGroupIndicator> evalGroupIndicators, | |
239 | + List<EvalUserReport> evalShopReports, | |
240 | + LocalDate date) { | |
241 | + List<EvalUserValueReport> reportUserValues = new ArrayList<>(); | |
242 | + List<Long> shopIds = pools.stream().map(EvalShopPool::getShopId).distinct().collect(Collectors.toList()); | |
243 | + List<Long> poolIds = pools.stream().map(EvalShopPool::getId).collect(Collectors.toList()); | |
244 | + List<Long> evalGroupIndicatorIds = evalGroupIndicators.stream().map(EvalGroupIndicator::getId).collect(Collectors.toList()); | |
245 | + List<EvalGroupIndicatorHitLog> hitLogs = evalGroupIndicatorHitLogService.getHitLogs(evalGroupIndicatorIds, poolIds, EvalScopeEnum.SHOP, date); | |
246 | + Map<Long, List<EvalGroupIndicatorHitLog>> indicatorHitLogMap = hitLogs.stream().collect(Collectors.groupingBy(EvalGroupIndicatorHitLog::getEvalGroupIndicatorId)); | |
247 | + Map<Long, Long> shopPoolReportIdMap = evalShopReports.stream().collect(Collectors.toMap(EvalUserReport::getEvalShopPoolId, EvalUserReport::getId, (v1, v2) -> v1)); | |
248 | + | |
249 | + for (EvalGroupIndicator groupIndicator : evalGroupIndicators) { | |
250 | + final ScoreWayEnum scoreWay = groupIndicator.getScoreWay(); | |
251 | + final IndicatorCodeTypeEnum codeType = groupIndicator.getCodeType(); | |
252 | + final Long evalGroupIndicatorId = groupIndicator.getId(); | |
253 | + List<EvalGroupIndicatorParam> params = evalGroupIndicatorParamService.list(Wrappers.<EvalGroupIndicatorParam>lambdaQuery() | |
254 | + .eq(EvalGroupIndicatorParam::getEvalGroupIndicatorId, evalGroupIndicatorId) | |
255 | + .eq(EvalGroupIndicatorParam::getYn, Boolean.TRUE) | |
256 | + ); | |
257 | + | |
258 | + List<EvalGroupIndicatorHitLog> userHitLogs = indicatorHitLogMap.getOrDefault(evalGroupIndicatorId, new ArrayList<>()); | |
259 | + Map<Long, EvalGroupIndicatorHitLog> poolHitLogMap = userHitLogs.stream() | |
260 | + .collect(Collectors.toMap(EvalGroupIndicatorHitLog::getPoolId, Function.identity(), (v1, v2) -> v1)); | |
261 | + for (EvalShopPool shopPool : pools) { | |
262 | + if (! shopPool.getEvalGroupId().equals(groupIndicator.getEvalGroupId())) { | |
263 | + continue; | |
264 | + } | |
265 | + Optional<EvalGroupIndicatorHitLog> hitLog = Optional.ofNullable(poolHitLogMap.get(shopPool.getId())); | |
266 | + BigDecimal value = (ScoreWayEnum.LADDER.equals(scoreWay)) ? | |
267 | + hitLog.map(EvalGroupIndicatorHitLog::getHitLadderValue).orElse(BigDecimal.ZERO) : | |
268 | + hitLog.map(EvalGroupIndicatorHitLog::getHitCommissionValue).orElse(BigDecimal.ZERO); | |
269 | + Long evalUserReportId = shopPoolReportIdMap.get(shopPool.getId()); | |
270 | + reportUserValues.add(convertDB(evalUserReportId, groupIndicator, value, date, params)); | |
271 | + } | |
272 | + | |
273 | + //是否有子指标 | |
274 | + if (IndicatorCodeTypeEnum.COMBINE_INDICATOR.equals(codeType)) { | |
275 | + for (EvalGroupIndicatorParam param : params) { | |
276 | + Map<Long, EvalGroupIndicatorTargetHitLog> targetHitLogMap = queryTargetValue(param.getId(), poolIds, date, EvalScopeEnum.SHOP); | |
277 | + | |
278 | + for (EvalShopPool pool : pools) { | |
279 | + EvalGroupIndicatorTargetHitLog hitLog = targetHitLogMap.get(pool.getId()); | |
280 | + EvalUseTargetEnum useTarget = hitLog.getUseTarget(); | |
281 | + | |
282 | + BigDecimal value = Optional.ofNullable(hitLog.getValue()).orElse(BigDecimal.ZERO); | |
283 | + if (EvalUseTargetEnum.FIRST_TARGET.equals(useTarget)) { | |
284 | + value = Optional.ofNullable(hitLog.getReachValue()).orElse(BigDecimal.ZERO); | |
285 | + } else if (EvalUseTargetEnum.EXTRA_TARGET.equals(useTarget)) { | |
286 | + | |
287 | + } | |
288 | + | |
289 | + BigDecimal value = Optional.ofNullable(hitLog) | |
290 | + .map(EvalGroupIndicatorTargetHitLog::getReachValue).orElse(BigDecimal.ZERO).multiply(Constant.ONE_HUNDRED); | |
291 | + Long evalUserReportId = userPoolReportIdMap.get(userPool.getId()); | |
292 | + reportUserValues.add(convertParamDB(evalUserReportId, param, value, date)); | |
293 | + } | |
294 | + | |
295 | + | |
296 | + | |
297 | + if (TargetTypeEnum.NO.equals(param.getTargetType())) { | |
298 | + Map<Long, BigDecimal> userValueMap = queryUserOriginValue(param, userIds, date); | |
299 | + for (EvalShopPool shopPool : pools) { | |
300 | + BigDecimal value = userValueMap.getOrDefault(shopPool.getUserId(), BigDecimal.ZERO); | |
301 | + Long evalUserReportId = userPoolReportIdMap.get(userPool.getId()); | |
302 | + reportUserValues.add(convertParamDB(evalUserReportId, param, value, date)); | |
303 | + } | |
304 | + } else { | |
305 | + | |
306 | + | |
307 | + } | |
308 | + } | |
309 | + } | |
310 | + } | |
311 | + if (PublicUtil.isNotEmpty(reportUserValues)) { | |
312 | + evalUserValueReportService.saveBatch(reportUserValues); | |
313 | + } | |
314 | + return reportUserValues; | |
315 | + } | |
316 | + | |
221 | 317 | public void calcShop(List<EvalUserReport> evalShopReports, |
222 | 318 | List<EvalUserRankCodeReport> rankCodes, |
223 | 319 | List<EvalUserValueReport> reportUserValues, |
... | ... | @@ -250,11 +346,12 @@ public class EvalUserReportTask { |
250 | 346 | } |
251 | 347 | } |
252 | 348 | |
253 | - public List<EvalUserReport> saveStaffReports(List<EvalUserPool> pools, LocalDate date, Long evalUserRankReportId) { | |
349 | + public List<EvalUserReport> saveStaffReports(List<EvalUserPool> pools, LocalDate date, Long evalUserRankReportId, Long evalUserRankStageReportId) { | |
254 | 350 | List<EvalUserReport> evalUserReports = new ArrayList<>(); |
255 | 351 | for (EvalUserPool userPool : pools) { |
256 | 352 | EvalUserReport report = new EvalUserReport(); |
257 | 353 | report.setEvalUserRankReportId(evalUserRankReportId); |
354 | + report.setEvalUserRankStageReportId(evalUserRankStageReportId); | |
258 | 355 | report.setDimension(ReportDimensionEnum.STAFF); |
259 | 356 | report.setUserId(userPool.getUserId()); |
260 | 357 | report.setUserName(userPool.getUserName()); |
... | ... | @@ -271,15 +368,15 @@ public class EvalUserReportTask { |
271 | 368 | return evalUserReports; |
272 | 369 | } |
273 | 370 | |
274 | - public List<EvalUserReport> saveShopReports(List<EvalUserPool> pools, LocalDate date, Long evalUserRankReportId) { | |
371 | + public List<EvalUserReport> saveShopReports(List<EvalShopPool> shopPools, LocalDate date, Long evalUserRankReportId, Long evalUserRankStageReportId) { | |
275 | 372 | List<EvalUserReport> evalShopReports = new ArrayList<>(); |
276 | - Map<Long, String> shopMap = pools.stream().collect(Collectors.toMap(EvalUserPool::getShopId, EvalUserPool::getShopName, (v1, v2) -> v1)); | |
277 | - for (Long shopId : shopMap.keySet()) { | |
373 | + for (EvalShopPool shopPool : shopPools) { | |
278 | 374 | EvalUserReport report = new EvalUserReport(); |
279 | 375 | report.setDimension(ReportDimensionEnum.SHOP); |
280 | 376 | report.setEvalUserRankReportId(evalUserRankReportId); |
281 | - report.setShopId(shopId); | |
282 | - report.setShopName(shopMap.get(shopId)); | |
377 | + report.setEvalUserRankStageReportId(evalUserRankStageReportId); | |
378 | + report.setShopId(shopPool.getShopId()); | |
379 | + report.setShopName(shopPool.getShopName()); | |
283 | 380 | report.setDataDate(date); |
284 | 381 | evalShopReports.add(report); |
285 | 382 | } |
... | ... | @@ -314,13 +411,13 @@ public class EvalUserReportTask { |
314 | 411 | return referValueMap; |
315 | 412 | } |
316 | 413 | |
317 | - public Map<Long, EvalGroupIndicatorTargetHitLog> queryUserTargetValue(Long referId, List<Long> poolIds, LocalDate dataDate) { | |
414 | + public Map<Long, EvalGroupIndicatorTargetHitLog> queryTargetValue(Long referId, List<Long> poolIds, LocalDate dataDate, EvalScopeEnum scopeType) { | |
318 | 415 | List<EvalGroupIndicatorTargetHitLog> targetHitLogs = evalGroupIndicatorTargetHitLogService.list(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() |
319 | 416 | .eq(EvalGroupIndicatorTargetHitLog::getReferId, referId) |
320 | 417 | .eq(EvalGroupIndicatorTargetHitLog::getTargetType, IndicatorTypeEnum.EXAMINE) |
321 | 418 | .eq(EvalGroupIndicatorTargetHitLog::getDataDate, dataDate) |
322 | 419 | .in(EvalGroupIndicatorTargetHitLog::getPoolId, poolIds) |
323 | - .eq(EvalGroupIndicatorTargetHitLog::getScopeType, EvalScopeEnum.STAFF) | |
420 | + .eq(EvalGroupIndicatorTargetHitLog::getScopeType, scopeType) | |
324 | 421 | .eq(EvalGroupIndicatorTargetHitLog::getYn, Boolean.TRUE) |
325 | 422 | ); |
326 | 423 | return targetHitLogs.stream() |
... | ... | @@ -371,7 +468,8 @@ public class EvalUserReportTask { |
371 | 468 | ); |
372 | 469 | } |
373 | 470 | |
374 | - public List<EvalUserRankCodeReport> saveRankCodeReports(List<EvalGroupIndicator> evalGroupIndicators, Long reportRankId, LocalDate date) { | |
471 | + public List<EvalUserRankCodeReport> saveRankCodeReports(List<EvalGroupIndicator> evalGroupIndicators, Long reportRankId, | |
472 | + Long evalUserRankStageReportId, LocalDate date) { | |
375 | 473 | Set<String> codes = new HashSet<>(); |
376 | 474 | List<EvalUserRankCodeReport> rankCodes = new ArrayList<>(); |
377 | 475 | AtomicInteger order = new AtomicInteger(); |
... | ... | @@ -380,7 +478,7 @@ public class EvalUserReportTask { |
380 | 478 | if (! codes.add(groupIndicator.getCode())) { |
381 | 479 | continue; |
382 | 480 | } |
383 | - rankCodes.add(this.convertRankCodeDB(groupIndicator, date, reportRankId, order)); | |
481 | + rankCodes.add(this.convertRankCodeDB(groupIndicator, date, reportRankId, evalUserRankStageReportId, order)); | |
384 | 482 | |
385 | 483 | //组合指标 |
386 | 484 | if (PublicUtil.isNotEmpty(groupIndicator.getCodeType()) && |
... | ... | @@ -413,13 +511,12 @@ public class EvalUserReportTask { |
413 | 511 | return evalGroupRanks.stream().collect(Collectors.groupingBy(EvalGroupRank::getGroupId)); |
414 | 512 | } |
415 | 513 | |
416 | - public EvalUserRankReport saveRankReport(EvalGroupRank rank, List<Long> evalGroupIds, List<EvalGroup> evalGroups, LocalDate date, Long groupId) { | |
417 | - List<Long> shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll); | |
514 | + public EvalUserRankReport saveRankReport(EvalGroupRank rank, LocalDate date, Long groupId) { | |
515 | +// List<Long> shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll); | |
418 | 516 | EvalUserRankReport reportRank = new EvalUserRankReport(); |
419 | 517 | reportRank.setRankId(rank.getId()); |
420 | 518 | reportRank.setRankName(rank.getName()); |
421 | - reportRank.setEvalGroupIds(evalGroupIds); | |
422 | - reportRank.setShopIds(shopIds); | |
519 | + reportRank.setMultiStage(rank.getMultiStage()); | |
423 | 520 | reportRank.setDataDate(date); |
424 | 521 | reportRank.setMonthly(YearMonth.from(date)); |
425 | 522 | reportRank.setGroupId(groupId); |
... | ... | @@ -427,6 +524,24 @@ public class EvalUserReportTask { |
427 | 524 | return reportRank; |
428 | 525 | } |
429 | 526 | |
527 | + public EvalUserRankStageReport saveRankStageReport(EvalUserRankReport rankReport, EvalGroupRank rank, | |
528 | + EvalGroupRankStage rankStage, List<EvalGroup> evalGroups) { | |
529 | + List<Long> shopIds = evalGroups.stream().map(EvalGroup::getShopIds).distinct().collect(ArrayList::new, List::addAll, List::addAll); | |
530 | + List<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()); | |
531 | + EvalUserRankStageReport reportRankStage = new EvalUserRankStageReport(); | |
532 | + reportRankStage.setEvalUserRankReportId(rankReport.getId()); | |
533 | + reportRankStage.setEvalGroupRankId(rank.getId()); | |
534 | + reportRankStage.setEvalGroupRankStageId(rankStage.getId()); | |
535 | + if (PublicUtil.isNotEmpty(rankStage.getName())) { | |
536 | + reportRankStage.setStageName(rankStage.getName()); | |
537 | + } | |
538 | + reportRankStage.setEvalGroupIds(evalGroupIds); | |
539 | + reportRankStage.setBeginTime(rankStage.getBeginTime()); | |
540 | + reportRankStage.setOverTime(rankStage.getOverTime()); | |
541 | + evalUserRankStageReportService.save(reportRankStage); | |
542 | + return reportRankStage; | |
543 | + } | |
544 | + | |
430 | 545 | public EvalUserValueReport convertDB(Long evalUserReportId, EvalGroupIndicator groupIndicator, BigDecimal value, |
431 | 546 | LocalDate date, List<EvalGroupIndicatorParam> params) { |
432 | 547 | EvalUserValueReport userValue = new EvalUserValueReport(); |
... | ... | @@ -459,9 +574,11 @@ public class EvalUserReportTask { |
459 | 574 | return userValue; |
460 | 575 | } |
461 | 576 | |
462 | - public EvalUserRankCodeReport convertRankCodeDB(EvalGroupIndicator groupIndicator, LocalDate date, Long reportRankId, AtomicInteger order) { | |
577 | + public EvalUserRankCodeReport convertRankCodeDB(EvalGroupIndicator groupIndicator, LocalDate date, Long reportRankId, | |
578 | + Long evalUserRankStageReportId, AtomicInteger order) { | |
463 | 579 | EvalUserRankCodeReport rankCode = new EvalUserRankCodeReport(); |
464 | 580 | rankCode.setEvalUserRankReportId(reportRankId); |
581 | + rankCode.setEvalUserRankStageReportId(evalUserRankStageReportId); | |
465 | 582 | rankCode.setEvalGroupIndicatorId(groupIndicator.getId()); |
466 | 583 | rankCode.setCode(groupIndicator.getCode()); |
467 | 584 | rankCode.setCodeType(groupIndicator.getCodeType()); |
... | ... | @@ -494,5 +611,4 @@ public class EvalUserReportTask { |
494 | 611 | return rankCode; |
495 | 612 | } |
496 | 613 | |
497 | - | |
498 | 614 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalGroupRankStageService.java
... | ... | @@ -17,5 +17,11 @@ import java.util.List; |
17 | 17 | */ |
18 | 18 | public interface EvalGroupRankStageService extends IService<EvalGroupRankStage> { |
19 | 19 | |
20 | - List<EvalGroupRankStage> getEffects(LocalDate dataDate); | |
20 | + /** | |
21 | + * 获取排名组开始的阶段 | |
22 | + * @param rankId | |
23 | + * @return | |
24 | + */ | |
25 | + List<EvalGroupRankStage> getRankStartStages(Long rankId, LocalDate date); | |
26 | + | |
21 | 27 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/EvalUserRankStageReportService.java
0 → 100644
1 | +package cn.fw.morax.service.data.eval; | |
2 | + | |
3 | + | |
4 | +import cn.fw.morax.domain.db.eval.EvalUserRankStageReport; | |
5 | +import com.baomidou.mybatisplus.extension.service.IService; | |
6 | + | |
7 | +/** | |
8 | + * <p> | |
9 | + * 报表绩效排名组 服务类 | |
10 | + * </p> | |
11 | + * | |
12 | + * @author jiangchao | |
13 | + * @since 2023-03-31 | |
14 | + */ | |
15 | +public interface EvalUserRankStageReportService extends IService<EvalUserRankStageReport> { | |
16 | + | |
17 | +} | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalGroupRankStageServiceImpl.java
... | ... | @@ -4,6 +4,7 @@ package cn.fw.morax.service.data.eval.impl; |
4 | 4 | import cn.fw.morax.dao.eval.EvalGroupRankStageDao; |
5 | 5 | import cn.fw.morax.domain.db.eval.EvalGroupRankStage; |
6 | 6 | import cn.fw.morax.service.data.eval.EvalGroupRankStageService; |
7 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
7 | 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
8 | 9 | import org.springframework.stereotype.Service; |
9 | 10 | |
... | ... | @@ -22,7 +23,13 @@ import java.util.List; |
22 | 23 | public class EvalGroupRankStageServiceImpl extends ServiceImpl<EvalGroupRankStageDao, EvalGroupRankStage> implements EvalGroupRankStageService { |
23 | 24 | |
24 | 25 | @Override |
25 | - public List<EvalGroupRankStage> getEffects(LocalDate dataDate) { | |
26 | - return this.baseMapper.getEffects(dataDate); | |
26 | + public List<EvalGroupRankStage> getRankStartStages(Long rankId, LocalDate date) { | |
27 | + List<EvalGroupRankStage> stages = this.baseMapper.selectList(Wrappers.<EvalGroupRankStage>lambdaQuery() | |
28 | + .eq(EvalGroupRankStage::getEvalGroupRankId, rankId) | |
29 | + .eq(EvalGroupRankStage::getYn, Boolean.TRUE) | |
30 | + .le(EvalGroupRankStage::getBeginTime, date) | |
31 | + .orderByAsc(EvalGroupRankStage::getBeginTime) | |
32 | + ); | |
33 | + return stages; | |
27 | 34 | } |
28 | 35 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/eval/impl/EvalUserRankStageServiceImplReport.java
0 → 100644
1 | +package cn.fw.morax.service.data.eval.impl; | |
2 | + | |
3 | + | |
4 | +import cn.fw.morax.dao.eval.EvalUserRankStageReportDao; | |
5 | +import cn.fw.morax.domain.db.eval.EvalUserRankStageReport; | |
6 | +import cn.fw.morax.service.data.eval.EvalUserRankStageReportService; | |
7 | +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |
8 | +import org.springframework.stereotype.Service; | |
9 | + | |
10 | +/** | |
11 | + * <p> | |
12 | + * 报表绩效排名组 服务实现类 | |
13 | + * </p> | |
14 | + * | |
15 | + * @author jiangchao | |
16 | + * @since 2023-03-31 | |
17 | + */ | |
18 | +@Service | |
19 | +public class EvalUserRankStageServiceImplReport extends ServiceImpl<EvalUserRankStageReportDao, EvalUserRankStageReport> | |
20 | + implements EvalUserRankStageReportService { | |
21 | + | |
22 | +} | ... | ... |