Commit 58b7591d15f3416375a1ec59a983373e6974ff2d
Merge branch 'test' into eval-detail
Showing
22 changed files
with
146 additions
and
94 deletions
fw-morax-dao/src/main/java/cn/fw/morax/dao/eval/EvalGroupIndicatorDao.java
... | ... | @@ -5,6 +5,7 @@ import cn.fw.morax.domain.bo.StageIndicatorBO; |
5 | 5 | import cn.fw.morax.domain.bo.eval.EvalGroupIndicatorBO; |
6 | 6 | import cn.fw.morax.domain.db.eval.EvalGroupIndicator; |
7 | 7 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
8 | +import org.apache.ibatis.annotations.Param; | |
8 | 9 | |
9 | 10 | import java.time.LocalDate; |
10 | 11 | import java.util.List; |
... | ... | @@ -36,5 +37,6 @@ public interface EvalGroupIndicatorDao extends BaseMapper<EvalGroupIndicator> { |
36 | 37 | * @param codeType |
37 | 38 | * @return |
38 | 39 | */ |
39 | - List<StageIndicatorBO> getStageIndicators(LocalDate dataDate, Integer codeType); | |
40 | + List<StageIndicatorBO> getStageIndicators(@Param("dataDate") LocalDate dataDate, | |
41 | + @Param("codeType") Integer codeType); | |
40 | 42 | } | ... | ... |
fw-morax-dao/src/main/java/cn/fw/morax/dao/kpi/KpiGroupUserDao.java
... | ... | @@ -19,21 +19,19 @@ public interface KpiGroupUserDao extends BaseMapper<KpiGroupUser> { |
19 | 19 | /** |
20 | 20 | * 获取某月最近的绩效组人员数据 |
21 | 21 | * |
22 | - * @param kgc | |
23 | 22 | * @param yearMonth |
24 | 23 | * @return |
25 | 24 | */ |
26 | - KpiGroupUser getMonthLastData(@Param("kgc") String kgc, | |
25 | + KpiGroupUser getMonthLastData(@Param("kpiGroupId") Long kpiGroupId, | |
27 | 26 | @Param("userId") Long userId, |
28 | 27 | @Param("yearMonth") YearMonth yearMonth); |
29 | 28 | /** |
30 | 29 | * 获取某月第一天的绩效组人员数据 |
31 | 30 | * |
32 | - * @param kgc | |
33 | 31 | * @param yearMonth |
34 | 32 | * @return |
35 | 33 | */ |
36 | - KpiGroupUser getMonthFirstData(@Param("kgc") String kgc, | |
34 | + KpiGroupUser getMonthFirstData(@Param("kpiGroupId") Long kpiGroupId, | |
37 | 35 | @Param("userId") Long userId, |
38 | 36 | @Param("yearMonth") YearMonth yearMonth); |
39 | 37 | } | ... | ... |
fw-morax-dao/src/main/resources/mapper/kpi/KpiGroupUserMapper.xml
... | ... | @@ -14,7 +14,7 @@ |
14 | 14 | FROM |
15 | 15 | kpi_group_user |
16 | 16 | WHERE |
17 | - kgc = #{kgc} | |
17 | + kpi_group_id = #{kpiGroupId} | |
18 | 18 | AND user_id = #{userId} |
19 | 19 | AND DATE_FORMAT(data_date, '%Y-%m') = #{yearMonth} |
20 | 20 | AND yn = 1 |
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 | FROM |
30 | 30 | kpi_group_user |
31 | 31 | WHERE |
32 | - kgc = #{kgc} | |
32 | + kpi_group_id = #{kpiGroupId} | |
33 | 33 | AND user_id = #{userId} |
34 | 34 | AND DATE_FORMAT(data_date, '%Y-%m') = #{yearMonth} |
35 | 35 | AND yn = 1 | ... | ... |
fw-morax-domain/src/main/java/cn/fw/morax/domain/db/kpi/KpiStageMqLog.java
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/EvalTaskController.java
... | ... | @@ -113,12 +113,12 @@ public class EvalTaskController { |
113 | 113 | return success(); |
114 | 114 | } |
115 | 115 | |
116 | -// @GetMapping("/check-report") | |
117 | -// @ControllerMethod("当天薪酬组人员定时器") | |
118 | -// public Message<Void> checkTodoCompletion() { | |
119 | -// evalCalcTask.checkTodoCompletion(); | |
120 | -// return success(); | |
121 | -// } | |
116 | + @GetMapping("/send-notice") | |
117 | + @ControllerMethod("发送业务上报mq通知") | |
118 | + public Message<Void> sendNotice() { | |
119 | + evalGroupTask.sendNotice(); | |
120 | + return success(); | |
121 | + } | |
122 | 122 | |
123 | 123 | // @GetMapping("/eval-group") |
124 | 124 | // @ControllerMethod("处理考评组") | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/controller/erp/KpiDebugController.java
... | ... | @@ -217,4 +217,32 @@ public class KpiDebugController { |
217 | 217 | return success(); |
218 | 218 | } |
219 | 219 | |
220 | + @GetMapping("/process-kpi-user") | |
221 | + @ControllerMethod("处理绩效用户老数据") | |
222 | + public Message<Void> processKpiUserInclusion() { | |
223 | + //纳入绩效考核人员 | |
224 | + List<KpiGroupUser> groupUsers = kpiGroupUserService.list(Wrappers.<KpiGroupUser>lambdaQuery() | |
225 | + .eq(KpiGroupUser::getDataDate, LocalDate.now().minusDays(1)) | |
226 | + .eq(KpiGroupUser::getIgnored, Boolean.FALSE) | |
227 | + .eq(KpiGroupUser::getYn, Boolean.TRUE) | |
228 | + ); | |
229 | + | |
230 | + for (KpiGroupUser groupUser : groupUsers) { | |
231 | + KpiPool kpiPool = kpiPoolService.getOne(Wrappers.<KpiPool>lambdaQuery() | |
232 | + .eq(KpiPool::getKpiGroupId, groupUser.getKpiGroupId()) | |
233 | + .eq(KpiPool::getUserId, groupUser.getUserId()) | |
234 | + .eq(KpiPool::getMonthly, YearMonth.from(groupUser.getDataDate())) | |
235 | + .eq(KpiPool::getYn, Boolean.TRUE) | |
236 | + , Boolean.FALSE); | |
237 | + if (PublicUtil.isNotEmpty(kpiPool)) { | |
238 | + //纳入绩效计算 绩效池不参与 | |
239 | + if (! kpiPool.getInclusion()) { | |
240 | + kpiPool.setInclusion(Boolean.TRUE); | |
241 | + kpiPoolService.updateById(kpiPool); | |
242 | + } | |
243 | + } | |
244 | + } | |
245 | + return success(); | |
246 | + } | |
247 | + | |
220 | 248 | } | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalGroupTask.java
... | ... | @@ -7,6 +7,7 @@ import cn.fw.morax.common.utils.PublicUtil; |
7 | 7 | import cn.fw.morax.domain.bo.StageIndicatorBO; |
8 | 8 | import cn.fw.morax.domain.db.eval.*; |
9 | 9 | import cn.fw.morax.domain.db.kpi.KpiStageMqLog; |
10 | +import cn.fw.morax.domain.enums.EvalScopeEnum; | |
10 | 11 | import cn.fw.morax.domain.enums.SettingStatusEnum; |
11 | 12 | import cn.fw.morax.sdk.dto.kpi.KpiStageReportNoticeMQ; |
12 | 13 | import cn.fw.morax.service.component.KpiStageIndicatorReportProducer; |
... | ... | @@ -44,6 +45,7 @@ public class EvalGroupTask { |
44 | 45 | private final EvalGroupIndicatorService evalGroupIndicatorService; |
45 | 46 | private final EvalGroupRankStageService evalGroupRankStageService; |
46 | 47 | private final EvalShopPoolService evalShopPoolService; |
48 | + private final EvalGroupRewardDimService evalGroupRewardDimService; | |
47 | 49 | private final EvalGroupUserService evalGroupUserService; |
48 | 50 | private final KpiStageMqLogService kpiStageMqLogService; |
49 | 51 | private final EvalGroupRankService evalGroupRankService; |
... | ... | @@ -102,8 +104,14 @@ public class EvalGroupTask { |
102 | 104 | .eq(EvalGroupUser::getYn, Boolean.TRUE) |
103 | 105 | ); |
104 | 106 | List<Long> userIds = users.stream().map(EvalGroupUser::getUserId).distinct().collect(Collectors.toList()); |
105 | - List<Long> shopIds = users.stream().map(EvalGroupUser::getShopId).distinct().collect(Collectors.toList()); | |
106 | - if (PublicUtil.isEmpty(userIds)) { | |
107 | + | |
108 | + List<EvalGroupRewardDim> rewardDims = evalGroupRewardDimService.list(Wrappers.<EvalGroupRewardDim>lambdaQuery() | |
109 | + .eq(EvalGroupRewardDim::getEvalGroupId, stageIndicator.getEvalGroupId()) | |
110 | + .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP) | |
111 | + .eq(EvalGroupRewardDim::getYn, Boolean.TRUE) | |
112 | + ); | |
113 | + List<Long> shopIds = rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).distinct().collect(Collectors.toList()); | |
114 | + if (PublicUtil.isEmpty(userIds) && PublicUtil.isEmpty(shopIds)) { | |
107 | 115 | return; |
108 | 116 | } |
109 | 117 | mqLog.setShopIds(shopIds); | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/EvalUserReportTask.java
... | ... | @@ -76,7 +76,7 @@ public class EvalUserReportTask { |
76 | 76 | @Scheduled(cron = TimeTaskConstant.EVAL_REPORT) |
77 | 77 | @Transactional(rollbackFor = Exception.class) |
78 | 78 | public void evalUserReportTask() { |
79 | - this.evalUserReport(LocalDate.now().minusDays(1)); | |
79 | +// this.evalUserReport(LocalDate.now().minusDays(1)); | |
80 | 80 | } |
81 | 81 | |
82 | 82 | /** | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportRatioTask.java
... | ... | @@ -368,10 +368,10 @@ public class KpiReportRatioTask { |
368 | 368 | List<KpiGroup> kpiGroups = calDto.getKpiGroups(); |
369 | 369 | |
370 | 370 | for (KpiGroupRank rank : calDto.getKpiGroupRanks()) { |
371 | - List<String> kgcs = rank.getKgcs(); | |
371 | + List<Long> kpiGroupIds = rank.getKpiGroupIds(); | |
372 | 372 | //绩效排名组下对应的绩效组集合 |
373 | 373 | List<KpiGroup> rankKpiGroups = kpiGroups.stream() |
374 | - .filter(kpiGroup -> kgcs.contains(kpiGroup.getKgc())) | |
374 | + .filter(kpiGroup -> kpiGroupIds.contains(kpiGroup.getId())) | |
375 | 375 | .collect(Collectors.toList()); |
376 | 376 | Set<Long> createShopIds = rankKpiGroups.stream().flatMap(kpiGroup -> kpiGroup.getShopIds().stream()).collect(Collectors.toSet()); |
377 | 377 | |
... | ... | @@ -380,7 +380,7 @@ public class KpiReportRatioTask { |
380 | 380 | |
381 | 381 | Long shopId = shop.getId(); |
382 | 382 | Predicate<KpiPool> predicate = pool -> { |
383 | - return shopId.equals(pool.getShopId()) && kgcs.contains(pool.getKgc()) && Boolean.TRUE.equals(pool.getInclusion()); | |
383 | + return shopId.equals(pool.getShopId()) && kpiGroupIds.contains(pool.getKpiGroupId()) && Boolean.TRUE.equals(pool.getInclusion()); | |
384 | 384 | }; |
385 | 385 | kpiRatio.setS5(rank.getName()); |
386 | 386 | kpiRatio.setL5(rank.getId()); |
... | ... | @@ -396,7 +396,7 @@ public class KpiReportRatioTask { |
396 | 396 | |
397 | 397 | KpiRatio kpiRatio = new KpiRatio(ReportDimensionEnum.KPI_RANK, calDto.getGroupId());; |
398 | 398 | Predicate<KpiPool> predicate = pool -> { |
399 | - return kgcs.contains(pool.getKgc()) && Boolean.TRUE.equals(pool.getInclusion()); | |
399 | + return kpiGroupIds.contains(pool.getKpiGroupId()) && Boolean.TRUE.equals(pool.getInclusion()); | |
400 | 400 | }; |
401 | 401 | kpiRatio.setS5(rank.getName()); |
402 | 402 | kpiRatio.setL5(rank.getId()); |
... | ... | @@ -488,10 +488,10 @@ public class KpiReportRatioTask { |
488 | 488 | List<KpiGroupRank> kpiGroupRanks = calDto.getKpiGroupRanks(); |
489 | 489 | |
490 | 490 | Map<Long, String> kpiGroupNameMap = kpiGroups.stream().collect(Collectors.toMap(KpiGroup::getId, KpiGroup::getName, (v1, v2) -> v1)); |
491 | - Map<String, KpiGroupRank> kgcRankMap = new HashMap<>(); | |
491 | + Map<Long, KpiGroupRank> kpiGroupRankMap = new HashMap<>(); | |
492 | 492 | for (KpiGroupRank rank : kpiGroupRanks) { |
493 | - for (String kgc : rank.getKgcs()) { | |
494 | - kgcRankMap.put(kgc, rank); | |
493 | + for (Long kpiGroupId : rank.getKpiGroupIds()) { | |
494 | + kpiGroupRankMap.put(kpiGroupId, rank); | |
495 | 495 | } |
496 | 496 | } |
497 | 497 | |
... | ... | @@ -512,8 +512,8 @@ public class KpiReportRatioTask { |
512 | 512 | kpiRatio.setL4(pool.getKpiGroupId()); |
513 | 513 | kpiRatio.setS4(kpiGroupNameMap.getOrDefault(pool.getKpiGroupId(), " ")); |
514 | 514 | |
515 | - if (kgcRankMap.containsKey(pool.getKgc())) { | |
516 | - KpiGroupRank rank = kgcRankMap.get(pool.getKgc()); | |
515 | + if (kpiGroupRankMap.containsKey(pool.getKpiGroupId())) { | |
516 | + KpiGroupRank rank = kpiGroupRankMap.get(pool.getKpiGroupId()); | |
517 | 517 | kpiRatio.setL5(rank.getId()); |
518 | 518 | kpiRatio.setS5(rank.getName()); |
519 | 519 | } | ... | ... |
fw-morax-server/src/main/java/cn/fw/morax/server/task/KpiReportTask.java
... | ... | @@ -144,7 +144,7 @@ public class KpiReportTask { |
144 | 144 | */ |
145 | 145 | private void createRankReport(KpiGroupRank kpiGroupRank, Long groupId, LocalDate date) { |
146 | 146 | //获取绩效排名组下的所有绩效组信息 |
147 | - List<KpiGroup> kpiGroups = this.getKpiGroups(kpiGroupRank.getKgcs(), date); | |
147 | + List<KpiGroup> kpiGroups = this.getKpiGroups(kpiGroupRank.getKpiGroupIds(), date); | |
148 | 148 | if (CollectionUtils.isEmpty(kpiGroups)){ |
149 | 149 | log.error("绩效排名组id [{}] 下不存在有效的绩效组信息",kpiGroupRank.getId()); |
150 | 150 | return; |
... | ... | @@ -643,13 +643,16 @@ public class KpiReportTask { |
643 | 643 | |
644 | 644 | |
645 | 645 | |
646 | - public List<KpiGroup> getKpiGroups(List<String> egcs, LocalDate date) { | |
646 | + public List<KpiGroup> getKpiGroups(List<Long> kpiGroupIds, LocalDate date) { | |
647 | + if (PublicUtil.isEmpty(kpiGroupIds)) { | |
648 | + return new ArrayList<>(); | |
649 | + } | |
647 | 650 | List<Integer> effectStatus = new ArrayList<Integer>(){{ |
648 | 651 | add(SettingStatusEnum.EFFECTIVE.getValue()); |
649 | 652 | add(SettingStatusEnum.INEFFECTIVE.getValue()); |
650 | 653 | }}; |
651 | 654 | List<KpiGroup> kpiGroups = kpiGroupService.list(Wrappers.<KpiGroup>lambdaQuery() |
652 | - .in(KpiGroup::getKgc, egcs) | |
655 | + .in(KpiGroup::getId, kpiGroupIds) | |
653 | 656 | .eq(KpiGroup::getYn, Boolean.TRUE) |
654 | 657 | .in(KpiGroup::getStatus, effectStatus) |
655 | 658 | .le(KpiGroup::getBeginTime, date) | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/calculator/eval/kpi/EvalKpiBaseCalculator.java
... | ... | @@ -181,6 +181,9 @@ public abstract class EvalKpiBaseCalculator implements Calculator<EvalGroupUserS |
181 | 181 | * 计算目标 |
182 | 182 | */ |
183 | 183 | public BigDecimal calcTarget(TargetCalcTypeEnum targetCalcType, BigDecimal indicatorValue, BigDecimal targetValue) { |
184 | + if (PublicUtil.isEmpty(targetValue) || BigDecimal.ZERO.compareTo(targetValue) == 0) { | |
185 | + return BigDecimal.ZERO; | |
186 | + } | |
184 | 187 | if (TargetCalcTypeEnum.MINIMUM.equals(targetCalcType)) { |
185 | 188 | BigDecimal difference = BigDecimal.ONE.subtract(targetValue); |
186 | 189 | if (BigDecimal.ZERO.compareTo(difference) == 0) { | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalCalculateService.java
... | ... | @@ -289,9 +289,12 @@ public class EvalCalculateService { |
289 | 289 | return userShops; |
290 | 290 | } |
291 | 291 | |
292 | - List<Long> shopIds = evalGroup.getShopIds(); | |
293 | - Map<Long, EvalShopPool> shopPoolBOMap = evalPoolCommonService.inspectionShopPools(evalGroup, localDate); | |
294 | - for (Long shopId : shopIds) { | |
292 | + List<Long> distShopIds = this.getEvalDistShopIds(evalGroup); | |
293 | + if (PublicUtil.isEmpty(distShopIds)) { | |
294 | + return new ArrayList<>(); | |
295 | + } | |
296 | + Map<Long, EvalShopPool> shopPoolBOMap = evalPoolCommonService.inspectionShopPools(evalGroup, localDate, distShopIds); | |
297 | + for (Long shopId : distShopIds) { | |
295 | 298 | EvalShopPool shopPool = shopPoolBOMap.get(shopId); |
296 | 299 | userShops.add(convertBO(shopPool, evalGroup, beginDate, localDate)); |
297 | 300 | } |
... | ... | @@ -299,7 +302,17 @@ public class EvalCalculateService { |
299 | 302 | } |
300 | 303 | |
301 | 304 | |
302 | - | |
305 | + public List<Long> getEvalDistShopIds(EvalGroup evalGroup) { | |
306 | + List<EvalGroupRewardDim> rewardDims = evalGroupRewardDimService.list(Wrappers.<EvalGroupRewardDim>lambdaQuery() | |
307 | + .eq(EvalGroupRewardDim::getEvalGroupId, evalGroup.getId()) | |
308 | + .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP) | |
309 | + .eq(EvalGroupRewardDim::getYn, Boolean.TRUE) | |
310 | + ); | |
311 | + if (PublicUtil.isEmpty(rewardDims)) { | |
312 | + return new ArrayList<>(); | |
313 | + } | |
314 | + return rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).distinct().collect(Collectors.toList()); | |
315 | + } | |
303 | 316 | |
304 | 317 | |
305 | 318 | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalGroupRankBizService.java
... | ... | @@ -78,10 +78,14 @@ public class EvalGroupRankBizService { |
78 | 78 | epiGroupRankVO.setShopIds(new ArrayList<>()); |
79 | 79 | epiGroupRankVO.setShopNames(new HashSet<>()); |
80 | 80 | for (EvalGroup evalGroup : egcGroupMap.getOrDefault(epiGroupRankVO.getId(), new ArrayList<>())) { |
81 | - epiGroupRankVO.getPostIds().addAll(evalGroup.getPostIds()); | |
82 | - epiGroupRankVO.getPostNames().addAll(evalGroup.getPostNames()); | |
83 | - epiGroupRankVO.getShopIds().addAll(evalGroup.getShopIds()); | |
84 | - epiGroupRankVO.getShopNames().addAll(evalGroup.getShopNames()); | |
81 | + if (PublicUtil.isNotEmpty(evalGroup.getPostIds())) { | |
82 | + epiGroupRankVO.getPostIds().addAll(evalGroup.getPostIds()); | |
83 | + epiGroupRankVO.getPostNames().addAll(evalGroup.getPostNames()); | |
84 | + } | |
85 | + if (PublicUtil.isNotEmpty(evalGroup.getShopIds())) { | |
86 | + epiGroupRankVO.getShopIds().addAll(evalGroup.getShopIds()); | |
87 | + epiGroupRankVO.getShopNames().addAll(evalGroup.getShopNames()); | |
88 | + } | |
85 | 89 | } |
86 | 90 | } |
87 | 91 | page.setTotal(total); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/eval/EvalPoolCommonService.java
... | ... | @@ -73,7 +73,7 @@ public class EvalPoolCommonService { |
73 | 73 | } |
74 | 74 | |
75 | 75 | |
76 | - public Map<Long, EvalShopPool> inspectionShopPools(EvalGroup evalGroup, LocalDate localDate) { | |
76 | + public Map<Long, EvalShopPool> inspectionShopPools(EvalGroup evalGroup, LocalDate localDate, List<Long> distShopIds) { | |
77 | 77 | Set<Long> evalGroupShopIds = new HashSet<>(evalGroup.getShopIds()); |
78 | 78 | List<EvalShopPool> pools = evalShopPoolService.list(Wrappers.<EvalShopPool>lambdaQuery() |
79 | 79 | .eq(EvalShopPool::getEvalGroupId, evalGroup.getId()) |
... | ... | @@ -87,20 +87,14 @@ public class EvalPoolCommonService { |
87 | 87 | return v1; |
88 | 88 | })); |
89 | 89 | |
90 | - List<EvalGroupRewardDim> rewardDims = evalGroupRewardDimService.list(Wrappers.<EvalGroupRewardDim>lambdaQuery() | |
91 | - .eq(EvalGroupRewardDim::getEvalGroupId, evalGroup.getId()) | |
92 | - .eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP) | |
93 | - .eq(EvalGroupRewardDim::getYn, Boolean.TRUE) | |
94 | - ); | |
95 | - if (PublicUtil.isEmpty(rewardDims)) { | |
90 | + if (PublicUtil.isEmpty(distShopIds)) { | |
96 | 91 | return new HashMap<>(); |
97 | 92 | } |
98 | - Set<Long> distRewardShopIds = rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).collect(Collectors.toSet()); | |
99 | - for (Long shopId : distRewardShopIds) { | |
93 | + for (Long shopId : distShopIds) { | |
100 | 94 | if (! shopPoolMap.containsKey(shopId)) { |
101 | - EvalShopPoolStatusEnum status = (distRewardShopIds.contains(shopId)) | |
102 | - ? EvalShopPoolStatusEnum.CALC_REWARD : EvalShopPoolStatusEnum.NO_REWARD; | |
103 | - EvalShopPool shopPool = this.inspectionShopPool(shopId, evalGroup, localDate, status); | |
95 | +// EvalShopPoolStatusEnum status = (distShopIds.contains(shopId)) | |
96 | +// ? EvalShopPoolStatusEnum.CALC_REWARD : EvalShopPoolStatusEnum.NO_REWARD; | |
97 | + EvalShopPool shopPool = this.inspectionShopPool(shopId, evalGroup, localDate, EvalShopPoolStatusEnum.CALC_REWARD); | |
104 | 98 | shopPoolMap.put(shopId, shopPool); |
105 | 99 | } |
106 | 100 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupBizService.java
... | ... | @@ -548,7 +548,11 @@ public class KpiGroupBizService { |
548 | 548 | .eq(KpiGroup::getYn, Boolean.TRUE) |
549 | 549 | .eq(KpiGroup::getStatus, SettingStatusEnum.EFFECTIVE) |
550 | 550 | ); |
551 | - BV.isTrue(count <= 0, "绩效组名称重复,请重新输入"); | |
551 | +// BV.isTrue(count <= 0, "绩效组名称重复,请重新输入"); | |
552 | + if (count > 0) { | |
553 | + log.info("绩效组名称重复,name:{},id:{}: ", name, Optional.ofNullable(id).orElse(0L).toString()); | |
554 | + throw new BusinessException("绩效组名称重复,请重新输入"); | |
555 | + } | |
552 | 556 | |
553 | 557 | List<SettingDraft> drafts = commonService.getEditDraftByName(name, SettingDraftTypeEnum.KPI, draftId); |
554 | 558 | BV.isTrue(drafts.size() <= 0, "绩效组名称在草稿中存在,请重新输入"); |
... | ... | @@ -1092,7 +1096,7 @@ public class KpiGroupBizService { |
1092 | 1096 | kpiPoolService.update(Wrappers.<KpiPool>lambdaUpdate() |
1093 | 1097 | .set(KpiPool::getYn, Boolean.FALSE) |
1094 | 1098 | .set(KpiPool::getUpdateTime, new Date()) |
1095 | - .eq(KpiPool::getKgc, kpiGroup.getKgc()) | |
1099 | + .eq(KpiPool::getKpiGroupId, kpiGroup.getId()) | |
1096 | 1100 | .eq(KpiPool::getYn, Boolean.TRUE) |
1097 | 1101 | .eq(KpiPool::getMonthly, YearMonth.now()) |
1098 | 1102 | ); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupDataService.java
... | ... | @@ -348,7 +348,7 @@ public class KpiGroupDataService { |
348 | 348 | .eq(KpiGroupUser::getKpiGroupId, kpiGroupId) |
349 | 349 | ); |
350 | 350 | kpiPoolService.update(Wrappers.<KpiPool>lambdaUpdate() |
351 | - .set(KpiPool::getKgc, kgc) | |
351 | +// .set(KpiPool::getKgc, kgc) | |
352 | 352 | .set(KpiPool::getUpdateTime, new Date()) |
353 | 353 | .eq(KpiPool::getKpiGroupId, kpiGroupId) |
354 | 354 | ); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupIndicatorBizService.java
... | ... | @@ -148,7 +148,7 @@ public class KpiGroupIndicatorBizService { |
148 | 148 | * @return |
149 | 149 | */ |
150 | 150 | public LocalDate getPoolLastData(KpiPool kpiPool) { |
151 | - KpiGroupUser kpiGroupUser = kpiGroupUserService.getMonthLastData(kpiPool.getKgc(), kpiPool.getUserId(), kpiPool.getMonthly()); | |
151 | + KpiGroupUser kpiGroupUser = kpiGroupUserService.getMonthLastData(kpiPool.getKpiGroupId(), kpiPool.getUserId(), kpiPool.getMonthly()); | |
152 | 152 | if (PublicUtil.isEmpty(kpiGroupUser)) { |
153 | 153 | log.error("员工绩效池:{},不存在绩效组人员", JSON.toJSONString(kpiPool)); |
154 | 154 | return PublicUtil.getYesterdayOrEndOfMonthDay(kpiPool.getMonthly()); | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolBizService.java
... | ... | @@ -13,10 +13,7 @@ import cn.fw.morax.domain.bo.kpi.KpiRankCalculableBO; |
13 | 13 | import cn.fw.morax.domain.bo.kpi.KpiStarLadderBO; |
14 | 14 | import cn.fw.morax.domain.db.kpi.*; |
15 | 15 | import cn.fw.morax.domain.dto.kpi.KpiGroupRankConfigQueryDTO; |
16 | -import cn.fw.morax.domain.enums.KpiAssessTypeEnum; | |
17 | -import cn.fw.morax.domain.enums.KpiIgnoreCauseEnum; | |
18 | -import cn.fw.morax.domain.enums.StarEvaluationEnum; | |
19 | -import cn.fw.morax.domain.enums.StarLevelEnum; | |
16 | +import cn.fw.morax.domain.enums.*; | |
20 | 17 | import cn.fw.morax.domain.vo.kpi.*; |
21 | 18 | import cn.fw.morax.service.data.kpi.*; |
22 | 19 | import com.alibaba.fastjson.JSON; |
... | ... | @@ -640,7 +637,10 @@ public class KpiPoolBizService { |
640 | 637 | } |
641 | 638 | } |
642 | 639 | //奖励分正数、惩罚分负数,减去奖惩分数,得到原始分数 |
643 | - BigDecimal originKpiScore = kpiPoolDetailVO.getOriginKpiScore().subtract(rewardScore).subtract(punishScore); | |
640 | + BigDecimal originKpiScore = pool.getKpiScore().subtract(rewardScore).subtract(punishScore); | |
641 | + if (BigDecimal.ZERO.compareTo(originKpiScore) > 0) { | |
642 | + originKpiScore = BigDecimal.ZERO; | |
643 | + } | |
644 | 644 | kpiPoolDetailVO.setRewardScore(rewardScore); |
645 | 645 | kpiPoolDetailVO.setPunishScore(punishScore.abs()); |
646 | 646 | kpiPoolDetailVO.setRealKpiScore(pool.getKpiScore()); |
... | ... | @@ -761,7 +761,7 @@ public class KpiPoolBizService { |
761 | 761 | * @return |
762 | 762 | */ |
763 | 763 | public void buildPoolData(KpiPool kpiPool, KpiPoolDetailVO kpiPoolDetailVo) { |
764 | - KpiGroupUser kpiGroupUser = kpiGroupUserService.getMonthLastData(kpiPool.getKgc(), kpiPool.getUserId(), kpiPool.getMonthly()); | |
764 | + KpiGroupUser kpiGroupUser = kpiGroupUserService.getMonthLastData(kpiPool.getKpiGroupId(), kpiPool.getUserId(), kpiPool.getMonthly()); | |
765 | 765 | if (PublicUtil.isEmpty(kpiGroupUser)) { |
766 | 766 | log.error("员工绩效池:{},不存在绩效组人员", JSON.toJSONString(kpiPool)); |
767 | 767 | kpiPoolDetailVo.setEndTime(PublicUtil.getYesterdayOrEndOfMonthDay(kpiPool.getMonthly()).atTime(23, 59, 59)); |
... | ... | @@ -774,7 +774,7 @@ public class KpiPoolBizService { |
774 | 774 | kpiPoolDetailVo.setIgnoreCauseDesc(kpiGroupUser.getIgnoreCauseDesc()); |
775 | 775 | } |
776 | 776 | kpiPoolDetailVo.setEndTime(kpiGroupUser.getDataDate().atTime(23, 59, 59)); |
777 | - KpiGroupUser firstKpiGroupUser = kpiGroupUserService.getMonthFirstData(kpiPool.getKgc(), kpiPool.getUserId(), kpiPool.getMonthly()); | |
777 | + KpiGroupUser firstKpiGroupUser = kpiGroupUserService.getMonthFirstData(kpiPool.getKpiGroupId(), kpiPool.getUserId(), kpiPool.getMonthly()); | |
778 | 778 | kpiPoolDetailVo.setStartTime(firstKpiGroupUser.getDataDate().atTime(00, 00, 00)); |
779 | 779 | } |
780 | 780 | |
... | ... | @@ -899,34 +899,21 @@ public class KpiPoolBizService { |
899 | 899 | * @param localDate |
900 | 900 | */ |
901 | 901 | public void cacheCalculableKpiGroupRank(LocalDate localDate) { |
902 | - List<KpiGroup> kpiGroups = kpiGroupService.queryKgiGroupsByDay(localDate); | |
903 | - if (CollectionUtils.isEmpty(kpiGroups)) { | |
904 | - log.info("没有需要计算排名的绩效组,日期:{}", localDate); | |
905 | - return; | |
906 | - } | |
907 | - Set<Long> calculateSeparatelyIds = kpiGroups.stream().map(KpiGroup::getId).collect(Collectors.toSet()); | |
908 | - Map<String, Long> kgcIdMap = kpiGroups.stream().collect(Collectors.toMap(KpiGroup::getKgc, KpiGroup::getId, (v1, v2) -> v1)); | |
909 | 902 | List<String> rankBOS = new ArrayList<>(); |
910 | - List<KpiGroupRank> kpiGroupRanks = kpiGroupRankService.list(Wrappers.<KpiGroupRank>lambdaQuery().eq(KpiGroupRank::getYn, Boolean.TRUE)); | |
903 | + List<KpiGroupRank> kpiGroupRanks = kpiGroupRankService.list(Wrappers.<KpiGroupRank>lambdaQuery() | |
904 | + .eq(KpiGroupRank::getStatus, SettingStatusEnum.EFFECTIVE) | |
905 | + .eq(KpiGroupRank::getYn, Boolean.TRUE) | |
906 | + ); | |
911 | 907 | for (KpiGroupRank kpiGroupRank : kpiGroupRanks) { |
912 | - Set<Long> kpiGroupIds = new HashSet<>(); | |
913 | - for (String kgc : kpiGroupRank.getKgcs()) { | |
914 | - Long kpiGroupId = kgcIdMap.getOrDefault(kgc, 0L); | |
915 | - if (kpiGroupId > 0) { | |
916 | - kpiGroupIds.add(kpiGroupId); | |
917 | - calculateSeparatelyIds.remove(kpiGroupId); | |
918 | - } | |
919 | - } | |
920 | - //@todo 缓存绩效排名组 | |
921 | - if (PublicUtil.isNotEmpty(kpiGroupIds)) { | |
922 | - rankBOS.add(JSONObject.toJSONString(cacheCalculableKpiGroupRank(kpiGroupRank, kpiGroupIds, localDate))); | |
908 | + if (PublicUtil.isNotEmpty(kpiGroupRank.getKpiGroupIds())) { | |
909 | + rankBOS.add(JSONObject.toJSONString(cacheCalculableKpiGroupRank(kpiGroupRank, | |
910 | + new HashSet<>(kpiGroupRank.getKpiGroupIds()), localDate))); | |
923 | 911 | } |
924 | 912 | } |
925 | - kpiGroups.stream().filter(kpiGroup -> calculateSeparatelyIds.contains(kpiGroup.getId())).forEach(kpiGroup -> { | |
926 | - rankBOS.add(JSONObject.toJSONString(cacheCalculableKpiGroupRank(kpiGroup, localDate))); | |
927 | - }); | |
928 | - ListOperations<String, String> listOps = stringRedisTemplate.opsForList(); | |
929 | - listOps.rightPushAll(getCalcuStarKey(), rankBOS); | |
913 | + if (PublicUtil.isNotEmpty(rankBOS)) { | |
914 | + ListOperations<String, String> listOps = stringRedisTemplate.opsForList(); | |
915 | + listOps.rightPushAll(getCalcuStarKey(), rankBOS); | |
916 | + } | |
930 | 917 | } |
931 | 918 | |
932 | 919 | /** | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiPoolCommonService.java
... | ... | @@ -116,7 +116,7 @@ public class KpiPoolCommonService { |
116 | 116 | */ |
117 | 117 | public KpiPool inspectionPool(KpiGroupUser user) { |
118 | 118 | KpiPool kpiPool = kpiPoolService.getOne(Wrappers.<KpiPool>lambdaQuery() |
119 | - .eq(KpiPool::getKgc, user.getKgc()) | |
119 | + .eq(KpiPool::getKpiGroupId, user.getKpiGroupId()) | |
120 | 120 | .eq(KpiPool::getUserId, user.getUserId()) |
121 | 121 | .eq(KpiPool::getMonthly, YearMonth.from(user.getDataDate())) |
122 | 122 | .eq(KpiPool::getYn, Boolean.TRUE) | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryReportService.java
... | ... | @@ -2,6 +2,7 @@ package cn.fw.morax.service.biz.salary; |
2 | 2 | |
3 | 3 | import cn.fw.common.exception.BusinessException; |
4 | 4 | import cn.fw.ehr.sdk.api.enums.StaffShopTypeEnum; |
5 | +import cn.fw.morax.common.constant.Constant; | |
5 | 6 | import cn.fw.morax.common.utils.DateUtil; |
6 | 7 | import cn.fw.morax.common.utils.PublicUtil; |
7 | 8 | import cn.fw.morax.domain.db.PayrollRecord; |
... | ... | @@ -37,7 +38,6 @@ import org.springframework.util.CollectionUtils; |
37 | 38 | |
38 | 39 | import java.text.SimpleDateFormat; |
39 | 40 | import java.time.LocalDate; |
40 | -import java.time.LocalDateTime; | |
41 | 41 | import java.time.YearMonth; |
42 | 42 | import java.time.temporal.TemporalAdjusters; |
43 | 43 | import java.util.*; |
... | ... | @@ -272,11 +272,15 @@ public class SalaryReportService { |
272 | 272 | if (! ExtraSalaryTypeEnum.SUBSIDY.equals(extraDTO.getSalaryType())) { |
273 | 273 | return; |
274 | 274 | } |
275 | + LocalDate dataDate = DateUtil.date2LocalDate(extraDTO.getDataDate()); | |
275 | 276 | LocalDate firstDay = DateUtil.date2LocalDate(extraDTO.getDataDate()).with(TemporalAdjusters.firstDayOfMonth()); |
277 | + //如果是第一天 清除结束日期也是第一天, 否则是前一天 | |
278 | + LocalDate cleanEndDay = (firstDay.compareTo(dataDate) == 0) ? firstDay : dataDate.minusDays(1); | |
276 | 279 | salaryExtraProjectService.remove(Wrappers.<SalaryExtraProject>lambdaQuery() |
277 | 280 | .eq(SalaryExtraProject::getUserId, extraDTO.getUserId()) |
278 | 281 | .eq(SalaryExtraProject::getSalaryType, ExtraSalaryTypeEnum.SUBSIDY) |
279 | 282 | .ge(SalaryExtraProject::getDataDate, firstDay) |
283 | + .le(SalaryExtraProject::getDataDate, cleanEndDay) | |
280 | 284 | ); |
281 | 285 | } |
282 | 286 | |
... | ... | @@ -351,6 +355,12 @@ public class SalaryReportService { |
351 | 355 | if (PublicUtil.isNotEmpty(dto.getTypeId())) { |
352 | 356 | dto.setTypeId(dto.getTypeId()); |
353 | 357 | } |
358 | + if (PublicUtil.isEmpty(dto.getDataId())) { | |
359 | + salaryExtraProject.setDataId(""); | |
360 | + } | |
361 | + if (PublicUtil.isEmpty(dto.getDataName())) { | |
362 | + salaryExtraProject.setDataName(""); | |
363 | + } | |
354 | 364 | if (PublicUtil.isNotEmpty(dto.getTypeName())) { |
355 | 365 | dto.setTypeName(dto.getTypeName()); |
356 | 366 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/KpiGroupUserService.java
... | ... | @@ -11,18 +11,16 @@ public interface KpiGroupUserService extends IService<KpiGroupUser> { |
11 | 11 | /** |
12 | 12 | * 获取某月最近的绩效组人员数据 |
13 | 13 | * |
14 | - * @param kgc | |
15 | 14 | * @param yearMonth |
16 | 15 | * @return |
17 | 16 | */ |
18 | - KpiGroupUser getMonthLastData(String kgc, Long userId, YearMonth yearMonth); | |
17 | + KpiGroupUser getMonthLastData(Long kpiGroupId, Long userId, YearMonth yearMonth); | |
19 | 18 | |
20 | 19 | /** |
21 | 20 | * 获取某月第一天的绩效组人员数据 |
22 | 21 | * |
23 | - * @param kgc | |
24 | 22 | * @param yearMonth |
25 | 23 | * @return |
26 | 24 | */ |
27 | - KpiGroupUser getMonthFirstData(String kgc, Long userId, YearMonth yearMonth); | |
25 | + KpiGroupUser getMonthFirstData(Long kpiGroupId, Long userId, YearMonth yearMonth); | |
28 | 26 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/kpi/impl/KpiGroupUserServiceImpl.java
... | ... | @@ -16,11 +16,11 @@ import java.time.YearMonth; |
16 | 16 | public class KpiGroupUserServiceImpl extends ServiceImpl<KpiGroupUserDao, KpiGroupUser> implements KpiGroupUserService { |
17 | 17 | |
18 | 18 | @Override |
19 | - public KpiGroupUser getMonthLastData(String kgc, Long userId, YearMonth yearMonth) { | |
20 | - return this.baseMapper.getMonthLastData(kgc, userId, yearMonth); | |
19 | + public KpiGroupUser getMonthLastData(Long kpiGroupId, Long userId, YearMonth yearMonth) { | |
20 | + return this.baseMapper.getMonthLastData(kpiGroupId, userId, yearMonth); | |
21 | 21 | } |
22 | 22 | @Override |
23 | - public KpiGroupUser getMonthFirstData(String kgc, Long userId, YearMonth yearMonth) { | |
24 | - return this.baseMapper.getMonthFirstData(kgc, userId, yearMonth); | |
23 | + public KpiGroupUser getMonthFirstData(Long kpiGroupId, Long userId, YearMonth yearMonth) { | |
24 | + return this.baseMapper.getMonthFirstData(kpiGroupId, userId, yearMonth); | |
25 | 25 | } |
26 | 26 | } | ... | ... |