Commit 1f69908e6879f0f32e2e7898fe2f3596d81bb274
1 parent
fa9e0337
feature(*): 考评报表修改
考评报表修改
Showing
11 changed files
with
315 additions
and
56 deletions
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupRankStageDao.java
@@ -18,6 +18,5 @@ import java.util.List; | @@ -18,6 +18,5 @@ import java.util.List; | ||
18 | */ | 18 | */ |
19 | public interface EvalGroupRankStageDao extends BaseMapper<EvalGroupRankStage> { | 19 | public interface EvalGroupRankStageDao extends BaseMapper<EvalGroupRankStage> { |
20 | 20 | ||
21 | - List<EvalGroupRankStage> getEffects(@Param("dataDate") LocalDate dataDate); | ||
22 | 21 | ||
23 | } | 22 | } |
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,6 +31,11 @@ public class EvalUserRankCodeReport extends BaseEntity<EvalUserRankCodeReport, L | ||
31 | private Long evalUserRankReportId; | 31 | private Long evalUserRankReportId; |
32 | 32 | ||
33 | /** | 33 | /** |
34 | + * 报表考评排名组阶段id | ||
35 | + */ | ||
36 | + private Long evalUserRankStageReportId; | ||
37 | + | ||
38 | + /** | ||
34 | * 考评指标id | 39 | * 考评指标id |
35 | */ | 40 | */ |
36 | private Long evalGroupIndicatorId; | 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,16 +39,9 @@ public class EvalUserRankReport extends BaseEntity<EvalUserRankReport, Long> { | ||
39 | private String rankName; | 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 | * 集团id | 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,6 +34,11 @@ public class EvalUserReport extends BaseEntity<EvalUserReport, Long> { | ||
34 | private Long evalUserRankReportId; | 34 | private Long evalUserRankReportId; |
35 | 35 | ||
36 | /** | 36 | /** |
37 | + * 报表考评排名组阶段id | ||
38 | + */ | ||
39 | + private Long evalUserRankStageReportId; | ||
40 | + | ||
41 | + /** | ||
37 | * 维度 | 42 | * 维度 |
38 | */ | 43 | */ |
39 | private ReportDimensionEnum dimension; | 44 | private ReportDimensionEnum dimension; |
@@ -88,6 +93,11 @@ public class EvalUserReport extends BaseEntity<EvalUserReport, Long> { | @@ -88,6 +93,11 @@ public class EvalUserReport extends BaseEntity<EvalUserReport, Long> { | ||
88 | */ | 93 | */ |
89 | private Long evalUserPoolId; | 94 | private Long evalUserPoolId; |
90 | 95 | ||
96 | + /** | ||
97 | + * 绩效池id | ||
98 | + */ | ||
99 | + private Long evalShopPoolId; | ||
100 | + | ||
91 | public EvalUserReport() { | 101 | public EvalUserReport() { |
92 | } | 102 | } |
93 | 103 |
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java
@@ -15,6 +15,7 @@ import com.google.common.collect.Maps; | @@ -15,6 +15,7 @@ import com.google.common.collect.Maps; | ||
15 | import lombok.Getter; | 15 | import lombok.Getter; |
16 | import lombok.RequiredArgsConstructor; | 16 | import lombok.RequiredArgsConstructor; |
17 | import lombok.extern.slf4j.Slf4j; | 17 | import lombok.extern.slf4j.Slf4j; |
18 | +import org.apache.rocketmq.common.filter.impl.Op; | ||
18 | import org.redisson.api.RLock; | 19 | import org.redisson.api.RLock; |
19 | import org.springframework.beans.factory.annotation.Value; | 20 | import org.springframework.beans.factory.annotation.Value; |
20 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | 21 | import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
@@ -51,15 +52,18 @@ public class EvalUserReportTask { | @@ -51,15 +52,18 @@ public class EvalUserReportTask { | ||
51 | private final EvalGroupIndicatorHitLogService evalGroupIndicatorHitLogService; | 52 | private final EvalGroupIndicatorHitLogService evalGroupIndicatorHitLogService; |
52 | private final EvalGroupIndicatorParamService evalGroupIndicatorParamService; | 53 | private final EvalGroupIndicatorParamService evalGroupIndicatorParamService; |
53 | private final EvalUserRankCodeReportService evalUserRankCodeReportService; | 54 | private final EvalUserRankCodeReportService evalUserRankCodeReportService; |
55 | + private final EvalUserRankStageReportService evalUserRankStageReportService; | ||
54 | private final EvalUserValueReportService evalUserValueReportService; | 56 | private final EvalUserValueReportService evalUserValueReportService; |
55 | private final EvalGroupIndicatorService evalGroupIndicatorService; | 57 | private final EvalGroupIndicatorService evalGroupIndicatorService; |
56 | private final IndicatorUserValueService indicatorUserValueService; | 58 | private final IndicatorUserValueService indicatorUserValueService; |
57 | private final EvalIndicatorValueService evalIndicatorValueService; | 59 | private final EvalIndicatorValueService evalIndicatorValueService; |
58 | private final PlatformTransactionManager platformTransactionManager; | 60 | private final PlatformTransactionManager platformTransactionManager; |
59 | private final EvalUserRankReportService evalUserRankReportService; | 61 | private final EvalUserRankReportService evalUserRankReportService; |
62 | + private final EvalGroupRankStageService evalGroupRankStageService; | ||
60 | private final EvalUserReportService evalUserReportService; | 63 | private final EvalUserReportService evalUserReportService; |
61 | private final TransactionDefinition transactionDefinition; | 64 | private final TransactionDefinition transactionDefinition; |
62 | private final EvalUserPoolService evalUserPoolService; | 65 | private final EvalUserPoolService evalUserPoolService; |
66 | + private final EvalShopPoolService evalShopPoolService; | ||
63 | private final EvalGroupRankService evalGroupRankService; | 67 | private final EvalGroupRankService evalGroupRankService; |
64 | private final EvalGroupService evalGroupService; | 68 | private final EvalGroupService evalGroupService; |
65 | private final DistributedLocker distributedLocker; | 69 | private final DistributedLocker distributedLocker; |
@@ -121,36 +125,48 @@ public class EvalUserReportTask { | @@ -121,36 +125,48 @@ public class EvalUserReportTask { | ||
121 | * @param date | 125 | * @param date |
122 | */ | 126 | */ |
123 | public void createRankReport(EvalGroupRank rank, Long groupId, LocalDate date) { | 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 | return; | 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 | final Long evalUserRankReportId = reportRank.getId(); | 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 | public List<EvalUserValueReport> calcUser(List<EvalUserPool> pools, | 172 | public List<EvalUserValueReport> calcUser(List<EvalUserPool> pools, |
@@ -200,7 +216,7 @@ public class EvalUserReportTask { | @@ -200,7 +216,7 @@ public class EvalUserReportTask { | ||
200 | reportUserValues.add(convertParamDB(evalUserReportId, param, value, date)); | 216 | reportUserValues.add(convertParamDB(evalUserReportId, param, value, date)); |
201 | } | 217 | } |
202 | } else { | 218 | } else { |
203 | - Map<Long, EvalGroupIndicatorTargetHitLog> hitLogMap = queryUserTargetValue(param.getId(), poolIds, date); | 219 | + Map<Long, EvalGroupIndicatorTargetHitLog> hitLogMap = queryTargetValue(param.getId(), poolIds, date); |
204 | for (EvalUserPool userPool : pools) { | 220 | for (EvalUserPool userPool : pools) { |
205 | EvalGroupIndicatorTargetHitLog hitLog = hitLogMap.get(userPool.getId()); | 221 | EvalGroupIndicatorTargetHitLog hitLog = hitLogMap.get(userPool.getId()); |
206 | BigDecimal value = Optional.ofNullable(hitLog) | 222 | BigDecimal value = Optional.ofNullable(hitLog) |
@@ -218,6 +234,86 @@ public class EvalUserReportTask { | @@ -218,6 +234,86 @@ public class EvalUserReportTask { | ||
218 | return reportUserValues; | 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 | public void calcShop(List<EvalUserReport> evalShopReports, | 317 | public void calcShop(List<EvalUserReport> evalShopReports, |
222 | List<EvalUserRankCodeReport> rankCodes, | 318 | List<EvalUserRankCodeReport> rankCodes, |
223 | List<EvalUserValueReport> reportUserValues, | 319 | List<EvalUserValueReport> reportUserValues, |
@@ -250,11 +346,12 @@ public class EvalUserReportTask { | @@ -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 | List<EvalUserReport> evalUserReports = new ArrayList<>(); | 350 | List<EvalUserReport> evalUserReports = new ArrayList<>(); |
255 | for (EvalUserPool userPool : pools) { | 351 | for (EvalUserPool userPool : pools) { |
256 | EvalUserReport report = new EvalUserReport(); | 352 | EvalUserReport report = new EvalUserReport(); |
257 | report.setEvalUserRankReportId(evalUserRankReportId); | 353 | report.setEvalUserRankReportId(evalUserRankReportId); |
354 | + report.setEvalUserRankStageReportId(evalUserRankStageReportId); | ||
258 | report.setDimension(ReportDimensionEnum.STAFF); | 355 | report.setDimension(ReportDimensionEnum.STAFF); |
259 | report.setUserId(userPool.getUserId()); | 356 | report.setUserId(userPool.getUserId()); |
260 | report.setUserName(userPool.getUserName()); | 357 | report.setUserName(userPool.getUserName()); |
@@ -271,15 +368,15 @@ public class EvalUserReportTask { | @@ -271,15 +368,15 @@ public class EvalUserReportTask { | ||
271 | return evalUserReports; | 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 | List<EvalUserReport> evalShopReports = new ArrayList<>(); | 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 | EvalUserReport report = new EvalUserReport(); | 374 | EvalUserReport report = new EvalUserReport(); |
279 | report.setDimension(ReportDimensionEnum.SHOP); | 375 | report.setDimension(ReportDimensionEnum.SHOP); |
280 | report.setEvalUserRankReportId(evalUserRankReportId); | 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 | report.setDataDate(date); | 380 | report.setDataDate(date); |
284 | evalShopReports.add(report); | 381 | evalShopReports.add(report); |
285 | } | 382 | } |
@@ -314,13 +411,13 @@ public class EvalUserReportTask { | @@ -314,13 +411,13 @@ public class EvalUserReportTask { | ||
314 | return referValueMap; | 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 | List<EvalGroupIndicatorTargetHitLog> targetHitLogs = evalGroupIndicatorTargetHitLogService.list(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() | 415 | List<EvalGroupIndicatorTargetHitLog> targetHitLogs = evalGroupIndicatorTargetHitLogService.list(Wrappers.<EvalGroupIndicatorTargetHitLog>lambdaQuery() |
319 | .eq(EvalGroupIndicatorTargetHitLog::getReferId, referId) | 416 | .eq(EvalGroupIndicatorTargetHitLog::getReferId, referId) |
320 | .eq(EvalGroupIndicatorTargetHitLog::getTargetType, IndicatorTypeEnum.EXAMINE) | 417 | .eq(EvalGroupIndicatorTargetHitLog::getTargetType, IndicatorTypeEnum.EXAMINE) |
321 | .eq(EvalGroupIndicatorTargetHitLog::getDataDate, dataDate) | 418 | .eq(EvalGroupIndicatorTargetHitLog::getDataDate, dataDate) |
322 | .in(EvalGroupIndicatorTargetHitLog::getPoolId, poolIds) | 419 | .in(EvalGroupIndicatorTargetHitLog::getPoolId, poolIds) |
323 | - .eq(EvalGroupIndicatorTargetHitLog::getScopeType, EvalScopeEnum.STAFF) | 420 | + .eq(EvalGroupIndicatorTargetHitLog::getScopeType, scopeType) |
324 | .eq(EvalGroupIndicatorTargetHitLog::getYn, Boolean.TRUE) | 421 | .eq(EvalGroupIndicatorTargetHitLog::getYn, Boolean.TRUE) |
325 | ); | 422 | ); |
326 | return targetHitLogs.stream() | 423 | return targetHitLogs.stream() |
@@ -371,7 +468,8 @@ public class EvalUserReportTask { | @@ -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 | Set<String> codes = new HashSet<>(); | 473 | Set<String> codes = new HashSet<>(); |
376 | List<EvalUserRankCodeReport> rankCodes = new ArrayList<>(); | 474 | List<EvalUserRankCodeReport> rankCodes = new ArrayList<>(); |
377 | AtomicInteger order = new AtomicInteger(); | 475 | AtomicInteger order = new AtomicInteger(); |
@@ -380,7 +478,7 @@ public class EvalUserReportTask { | @@ -380,7 +478,7 @@ public class EvalUserReportTask { | ||
380 | if (! codes.add(groupIndicator.getCode())) { | 478 | if (! codes.add(groupIndicator.getCode())) { |
381 | continue; | 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 | if (PublicUtil.isNotEmpty(groupIndicator.getCodeType()) && | 484 | if (PublicUtil.isNotEmpty(groupIndicator.getCodeType()) && |
@@ -413,13 +511,12 @@ public class EvalUserReportTask { | @@ -413,13 +511,12 @@ public class EvalUserReportTask { | ||
413 | return evalGroupRanks.stream().collect(Collectors.groupingBy(EvalGroupRank::getGroupId)); | 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 | EvalUserRankReport reportRank = new EvalUserRankReport(); | 516 | EvalUserRankReport reportRank = new EvalUserRankReport(); |
419 | reportRank.setRankId(rank.getId()); | 517 | reportRank.setRankId(rank.getId()); |
420 | reportRank.setRankName(rank.getName()); | 518 | reportRank.setRankName(rank.getName()); |
421 | - reportRank.setEvalGroupIds(evalGroupIds); | ||
422 | - reportRank.setShopIds(shopIds); | 519 | + reportRank.setMultiStage(rank.getMultiStage()); |
423 | reportRank.setDataDate(date); | 520 | reportRank.setDataDate(date); |
424 | reportRank.setMonthly(YearMonth.from(date)); | 521 | reportRank.setMonthly(YearMonth.from(date)); |
425 | reportRank.setGroupId(groupId); | 522 | reportRank.setGroupId(groupId); |
@@ -427,6 +524,24 @@ public class EvalUserReportTask { | @@ -427,6 +524,24 @@ public class EvalUserReportTask { | ||
427 | return reportRank; | 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 | public EvalUserValueReport convertDB(Long evalUserReportId, EvalGroupIndicator groupIndicator, BigDecimal value, | 545 | public EvalUserValueReport convertDB(Long evalUserReportId, EvalGroupIndicator groupIndicator, BigDecimal value, |
431 | LocalDate date, List<EvalGroupIndicatorParam> params) { | 546 | LocalDate date, List<EvalGroupIndicatorParam> params) { |
432 | EvalUserValueReport userValue = new EvalUserValueReport(); | 547 | EvalUserValueReport userValue = new EvalUserValueReport(); |
@@ -459,9 +574,11 @@ public class EvalUserReportTask { | @@ -459,9 +574,11 @@ public class EvalUserReportTask { | ||
459 | return userValue; | 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 | EvalUserRankCodeReport rankCode = new EvalUserRankCodeReport(); | 579 | EvalUserRankCodeReport rankCode = new EvalUserRankCodeReport(); |
464 | rankCode.setEvalUserRankReportId(reportRankId); | 580 | rankCode.setEvalUserRankReportId(reportRankId); |
581 | + rankCode.setEvalUserRankStageReportId(evalUserRankStageReportId); | ||
465 | rankCode.setEvalGroupIndicatorId(groupIndicator.getId()); | 582 | rankCode.setEvalGroupIndicatorId(groupIndicator.getId()); |
466 | rankCode.setCode(groupIndicator.getCode()); | 583 | rankCode.setCode(groupIndicator.getCode()); |
467 | rankCode.setCodeType(groupIndicator.getCodeType()); | 584 | rankCode.setCodeType(groupIndicator.getCodeType()); |
@@ -494,5 +611,4 @@ public class EvalUserReportTask { | @@ -494,5 +611,4 @@ public class EvalUserReportTask { | ||
494 | return rankCode; | 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,5 +17,11 @@ import java.util.List; | ||
17 | */ | 17 | */ |
18 | public interface EvalGroupRankStageService extends IService<EvalGroupRankStage> { | 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,6 +4,7 @@ package cn.fw.morax.service.data.eval.impl; | ||
4 | import cn.fw.morax.dao.eval.EvalGroupRankStageDao; | 4 | import cn.fw.morax.dao.eval.EvalGroupRankStageDao; |
5 | import cn.fw.morax.domain.db.eval.EvalGroupRankStage; | 5 | import cn.fw.morax.domain.db.eval.EvalGroupRankStage; |
6 | import cn.fw.morax.service.data.eval.EvalGroupRankStageService; | 6 | import cn.fw.morax.service.data.eval.EvalGroupRankStageService; |
7 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||
7 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 8 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
8 | import org.springframework.stereotype.Service; | 9 | import org.springframework.stereotype.Service; |
9 | 10 | ||
@@ -22,7 +23,13 @@ import java.util.List; | @@ -22,7 +23,13 @@ import java.util.List; | ||
22 | public class EvalGroupRankStageServiceImpl extends ServiceImpl<EvalGroupRankStageDao, EvalGroupRankStage> implements EvalGroupRankStageService { | 23 | public class EvalGroupRankStageServiceImpl extends ServiceImpl<EvalGroupRankStageDao, EvalGroupRankStage> implements EvalGroupRankStageService { |
23 | 24 | ||
24 | @Override | 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 | +} |