ac84063e
姜超
feature(*): 考评人员
|
1
2
3
4
5
6
7
|
package cn.fw.morax.server.task;
import cn.fw.common.cache.locker.DistributedLocker;
import cn.fw.morax.common.constant.TimeTaskConstant;
import cn.fw.morax.common.utils.PublicUtil;
import cn.fw.morax.domain.db.eval.EvalGroup;
import cn.fw.morax.domain.db.eval.EvalGroupUser;
|
ac84063e
姜超
feature(*): 考评人员
|
8
9
10
11
12
13
|
import cn.fw.morax.service.biz.eval.EvalGroupBizService;
import cn.fw.morax.service.biz.eval.EvalGroupUserBizService;
import cn.fw.morax.service.data.eval.EvalGroupUserService;
import cn.hutool.core.date.StopWatch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
|
7d59a85e
姜超
feature(*): redis...
|
14
|
import lombok.Getter;
|
ac84063e
姜超
feature(*): 考评人员
|
15
16
17
|
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
|
7d59a85e
姜超
feature(*): redis...
|
18
|
import org.springframework.beans.factory.annotation.Value;
|
ac84063e
姜超
feature(*): 考评人员
|
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.stream.Collectors;
/**
* @author : jiangchao
* @className : KpiGroupStatusTask
* @description : 考评组人员定时器
* @date : 2022-04-07 15:29
*/
@Component
@Slf4j
@RequiredArgsConstructor
@ConditionalOnProperty(prefix = "task", name = "switch", havingValue = "on")
public class EvalGroupUserTask {
private final EvalGroupUserBizService evalGroupUserBizService;
private final EvalGroupUserService evalGroupUserService;
|
ac84063e
姜超
feature(*): 考评人员
|
46
47
|
private final DistributedLocker distributedLocker;
|
7d59a85e
姜超
feature(*): redis...
|
48
49
50
|
@Value("${spring.cache.custom.global-prefix}:eval:group:user")
@Getter
private String evalGroupUserDistKey;
|
ac84063e
姜超
feature(*): 考评人员
|
51
52
53
54
55
56
57
58
59
|
/**
* 每天凌晨30分执行(人事角色、岗位调整在5点执行)
* 1. 将待生效数据改为生效中
* 2. 将之前的配置设置为失效
* 3. 处理重复数据,合并、拆分门店的考评组配置需要把其他的重复配置失效
*/
@Scheduled(cron = TimeTaskConstant.EVAL_GROUP_USER)
@Transactional(rollbackFor = Exception.class)
|
936e630c
姜超
feature(*): 门店奖惩分配
|
60
|
public void processEvalUser() {
|
7d59a85e
姜超
feature(*): redis...
|
61
|
Lock lock = distributedLocker.lock(getEvalGroupUserDistKey());
|
ac84063e
姜超
feature(*): 考评人员
|
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
if (((RLock) lock).isLocked()) {
try {
log.info("定时任务【考评组人员更新】开始执行");
StopWatch stopWatch = new StopWatch();
stopWatch.start("考评组人员更新,查询人事系统人员状态");
//查询员工
LocalDate yesterday = LocalDate.now().minusDays(1);
List<EvalGroupUser> evalGroupUsersForSave = this.queryKpiStaff(yesterday);
stopWatch.stop();
if (PublicUtil.isEmpty(evalGroupUsersForSave)) {
log.info(stopWatch.prettyPrint());
return;
}
stopWatch.start("考评组人员保存,保存条数:"+ evalGroupUsersForSave.size());
//逻辑删除今天已保存人员,保存人员
|
71e4eae7
姜超
feature(*): 绩效分数展示修改
|
77
|
Set<Long> evalGroupIds = evalGroupUsersForSave.stream().map(EvalGroupUser::getEvalGroupId).collect(Collectors.toSet());
|
ac84063e
姜超
feature(*): 考评人员
|
78
|
evalGroupUserService.update(Wrappers.<EvalGroupUser>lambdaUpdate()
|
71e4eae7
姜超
feature(*): 绩效分数展示修改
|
79
|
.in(EvalGroupUser::getEvalGroupId, evalGroupIds)
|
ac84063e
姜超
feature(*): 考评人员
|
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
.eq(EvalGroupUser::getDataDate, yesterday)
.eq(EvalGroupUser::getYn, Boolean.TRUE)
.set(EvalGroupUser::getYn, Boolean.FALSE)
);
evalGroupUserService.saveBatch(evalGroupUsersForSave);
stopWatch.stop();
log.info(stopWatch.prettyPrint(TimeUnit.SECONDS));
} catch (Exception e){
log.error(e.getMessage(), e);
} finally {
lock.unlock();
}
}
}
/**
* 查询考评员工
* @return
*/
private List<EvalGroupUser> queryKpiStaff(LocalDate yesterday) {
|
c043db4c
姜超
feature(*): 查看考评详情
|
100
|
List<EvalGroup> evalGroups = evalGroupUserBizService.postEffectEvalGroups(yesterday);
|
f727712b
姜超
feature(*): 考评阶段指标上报
|
101
102
|
if (! evalGroups.isEmpty()) {
log.info("需要生成考评组人员的考评组:{}", evalGroups);
|
ac84063e
姜超
feature(*): 考评人员
|
103
|
}
|
ac84063e
姜超
feature(*): 考评人员
|
104
|
List<EvalGroupUser> evalGroupUsersForSave = Lists.newArrayListWithCapacity(300);
|
f727712b
姜超
feature(*): 考评阶段指标上报
|
105
106
107
|
List<EvalGroupUser> evalGroupUsers = null;
for (EvalGroup evalGroup : evalGroups) {
for (Long postId : evalGroup.getPostIds()) {
|
c043db4c
姜超
feature(*): 查看考评详情
|
108
|
evalGroupUsers = evalGroupUserBizService.fetchBuildKpiUser(postId, evalGroup, yesterday);
|
f727712b
姜超
feature(*): 考评阶段指标上报
|
109
110
|
evalGroupUsersForSave.addAll(evalGroupUsers);
}
|
ac84063e
姜超
feature(*): 考评人员
|
111
112
113
114
115
|
}
return evalGroupUsersForSave;
}
}
|