f946d0a5
姜超
feature(*): 考评定时任务
|
1
2
|
package cn.fw.morax.service.biz.eval;
|
36a2a360
姜超
feature(*): 禁用考评
|
3
|
import cn.fw.morax.common.utils.PublicUtil;
|
8b61df4a
姜超
feature(*): 计算考评排名
|
4
|
import cn.fw.morax.common.utils.StringUtils;
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
5
|
import cn.fw.morax.common.utils.ThreadPoolUtil;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
6
|
import cn.fw.morax.domain.bo.eval.EvalGroupCalculableBO;
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
7
|
import cn.fw.morax.domain.bo.eval.EvalGroupUserShop;
|
8b61df4a
姜超
feature(*): 计算考评排名
|
8
|
import cn.fw.morax.domain.bo.kpi.EvalGroupCalculableRankBO;
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
9
|
import cn.fw.morax.domain.db.eval.*;
|
8b61df4a
姜超
feature(*): 计算考评排名
|
10
|
import cn.fw.morax.domain.enums.*;
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
11
12
13
|
import cn.fw.morax.service.biz.calculator.eval.kpi.EvalKpiBaseCalculator;
import cn.fw.morax.service.biz.calculator.eval.reward.EvalRewardBaseCalculator;
import cn.fw.morax.service.data.eval.*;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
14
15
16
|
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
17
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
18
|
import lombok.Getter;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
19
20
|
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
21
|
import org.springframework.data.redis.core.BoundSetOperations;
|
8b61df4a
姜超
feature(*): 计算考评排名
|
22
|
import org.springframework.data.redis.core.ListOperations;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
23
24
|
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
|
8b61df4a
姜超
feature(*): 计算考评排名
|
25
26
27
|
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
|
15a68981
姜超
feature(*): 处理百分数
|
28
|
import org.springframework.transaction.annotation.Transactional;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
29
|
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
30
|
import java.math.BigDecimal;
|
c1b3c16f
姜超
feature(*): 门店考评池查询
|
31
|
import java.math.RoundingMode;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
32
|
import java.time.LocalDate;
|
eccb0d64
姜超
feature(*): 考评详情查询
|
33
|
import java.time.YearMonth;
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
34
|
import java.util.*;
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
35
36
|
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
37
|
import java.util.stream.Collectors;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
38
39
40
41
42
43
44
45
|
/**
* @author jiangchao
* @des: 考评计算
* @date 2023/1/12 17:39
*/
@Slf4j
@Service
|
f946d0a5
姜超
feature(*): 考评定时任务
|
46
47
|
public class EvalCalculateService {
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
48
49
50
51
|
private final EvalPoolRewardDetailService evalPoolRewardDetailService;
private final EvalPoolCommonService evalPoolCommonService;
private final EvalUserPoolService evalUserPoolService;
private final EvalShopPoolService evalShopPoolService;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
52
|
private final EvalGroupService evalGroupService;
|
8945afe5
姜超
feature(*): 考评保存修改
|
53
|
private final EvalGroupRankStageService evalGroupRankStageService;
|
725e9bc8
姜超
feature(*): 计算考评修改
|
54
|
private final EvalGroupIndicatorService evalGroupIndicatorService;
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
55
56
|
private final EvalPoolIndicatorDetailService evalPoolIndicatorDetailService;
private final EvalGroupRewardService evalGroupRewardService;
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
57
|
private final EvalGroupRewardDimService evalGroupRewardDimService;
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
58
|
private final EvalGroupUserService evalGroupUserService;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
59
|
private final StringRedisTemplate stringRedisTemplate;
|
8b61df4a
姜超
feature(*): 计算考评排名
|
60
61
62
|
private final EvalGroupRankService evalGroupRankService;
private final PlatformTransactionManager platformTransactionManager;
private final TransactionDefinition transactionDefinition;
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
63
|
private final Map<EvalRewardCalMethodEnum, EvalRewardBaseCalculator> calculatorRewardMap;
|
e0944b69
姜超
feature(*): 修改计算考评
|
64
65
66
67
68
69
70
71
72
73
74
75
|
private final Map<ScoreWayEnum, EvalKpiBaseCalculator> calculatorEvalMap;
public EvalCalculateService(final EvalPoolRewardDetailService evalPoolRewardDetailService,
final EvalPoolCommonService evalPoolCommonService,
final EvalUserPoolService evalUserPoolService,
final EvalShopPoolService evalShopPoolService,
final EvalGroupService evalGroupService,
final EvalGroupIndicatorService evalGroupIndicatorService,
final EvalPoolIndicatorDetailService evalPoolIndicatorDetailService,
final EvalGroupRewardService evalGroupRewardService,
final EvalGroupUserService evalGroupUserService,
final StringRedisTemplate stringRedisTemplate,
|
8b61df4a
姜超
feature(*): 计算考评排名
|
76
77
78
|
final EvalGroupRankService evalGroupRankService,
final PlatformTransactionManager platformTransactionManager,
final TransactionDefinition transactionDefinition,
|
8945afe5
姜超
feature(*): 考评保存修改
|
79
|
final EvalGroupRankStageService evalGroupRankStageService,
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
80
|
final EvalGroupRewardDimService evalGroupRewardDimService,
|
e0944b69
姜超
feature(*): 修改计算考评
|
81
82
83
84
85
86
87
88
89
90
91
92
|
final List<EvalRewardBaseCalculator> rewardBaseCalculators,
final List<EvalKpiBaseCalculator> kpiBaseCalculators) {
this.evalPoolRewardDetailService = evalPoolRewardDetailService;
this.evalPoolCommonService = evalPoolCommonService;
this.evalUserPoolService = evalUserPoolService;
this.evalShopPoolService = evalShopPoolService;
this.evalGroupService = evalGroupService;
this.evalGroupIndicatorService = evalGroupIndicatorService;
this.evalPoolIndicatorDetailService = evalPoolIndicatorDetailService;
this.evalGroupRewardService = evalGroupRewardService;
this.evalGroupUserService = evalGroupUserService;
this.stringRedisTemplate = stringRedisTemplate;
|
8b61df4a
姜超
feature(*): 计算考评排名
|
93
94
95
|
this.evalGroupRankService = evalGroupRankService;
this.platformTransactionManager = platformTransactionManager;
this.transactionDefinition = transactionDefinition;
|
8945afe5
姜超
feature(*): 考评保存修改
|
96
|
this.evalGroupRankStageService = evalGroupRankStageService;
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
97
|
this.evalGroupRewardDimService = evalGroupRewardDimService;
|
e0944b69
姜超
feature(*): 修改计算考评
|
98
99
100
|
this.calculatorRewardMap = rewardBaseCalculators.stream().collect(Collectors.toMap(EvalRewardBaseCalculator::getCalMethod, v -> v));
this.calculatorEvalMap = kpiBaseCalculators.stream().collect(Collectors.toMap(EvalKpiBaseCalculator::getCalMethod, v -> v));
}
|
f946d0a5
姜超
feature(*): 考评定时任务
|
101
102
103
|
@Value("${spring.cache.custom.global-prefix}:calculable:eval-group")
@Getter
|
80e64f6f
姜超
feature(*): 考评排名组...
|
104
|
private String calcEvalGroup;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
105
|
|
8b61df4a
姜超
feature(*): 计算考评排名
|
106
107
108
109
|
@Value("${spring.cache.custom.global-prefix}:eval:calculate-rank")
@Getter
private String calcEvalRankKey;
|
f946d0a5
姜超
feature(*): 考评定时任务
|
110
111
112
113
114
115
|
/**
* 缓存需要计算绩效的绩效组信息
*
* @param localDate 日期
*/
public void cacheCalculableEvalGroupIds(final LocalDate localDate) {
|
ffcadcaf
姜超
feature(*): 定时任务时间修改
|
116
|
log.info("定时任务【缓存需要计算的考评组】开始执行");
|
80e64f6f
姜超
feature(*): 考评排名组...
|
117
118
|
List<EvalGroup> evalGroups = evalGroupService.getAllEffectGroups(localDate);
Set<Long> evalGroupIds = evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toSet());
|
f946d0a5
姜超
feature(*): 考评定时任务
|
119
120
121
|
if (CollectionUtils.isEmpty(evalGroupIds)) {
return;
}
|
ffcadcaf
姜超
feature(*): 定时任务时间修改
|
122
|
log.info("缓存需要计算的考评组信息,evalGroupIds:{},日期:{}", JSON.toJSONString(evalGroupIds), localDate);
|
f946d0a5
姜超
feature(*): 考评定时任务
|
123
124
125
126
127
128
129
130
131
|
cacheGroupIds(evalGroupIds, localDate);
}
private void cacheGroupIds(final Set<Long> evalGroupIds, final LocalDate localDate) {
String[] array = evalGroupIds.stream()
.map(evalGroupId -> new EvalGroupCalculableBO(evalGroupId, localDate))
.map(JSONObject::toJSONString)
.toArray(String[]::new);
|
80e64f6f
姜超
feature(*): 考评排名组...
|
132
|
stringRedisTemplate.opsForSet().add(getCalcEvalGroup(), array);
|
f946d0a5
姜超
feature(*): 考评定时任务
|
133
134
|
}
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
135
136
|
public void calculateCacheEvalGroup() {
|
80e64f6f
姜超
feature(*): 考评排名组...
|
137
|
BoundSetOperations<String, String> setOps = stringRedisTemplate.boundSetOps(getCalcEvalGroup());
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
138
139
140
141
142
143
144
145
146
147
148
|
ThreadPoolExecutor threadPool = ThreadPoolUtil.getInstance().getThreadPool();
List<String> overflowsList = new ArrayList<>();
String str;
while ((str = setOps.pop()) != null) {
final EvalGroupCalculableBO bo = JSONObject.parseObject(str, EvalGroupCalculableBO.class);
if (Objects.isNull(bo)) {
continue;
}
try {
String finalStr = str;
threadPool.execute(() -> {
|
8b61df4a
姜超
feature(*): 计算考评排名
|
149
|
TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
150
|
try {
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
151
152
|
calculateEvalGroup(bo, EvalScopeEnum.STAFF);
calculateEvalGroup(bo, EvalScopeEnum.SHOP);
|
8b61df4a
姜超
feature(*): 计算考评排名
|
153
|
platformTransactionManager.commit(transactionStatus);
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
154
|
} catch (Exception ex) {
|
8b61df4a
姜超
feature(*): 计算考评排名
|
155
|
platformTransactionManager.rollback(transactionStatus);
|
c1b3c16f
姜超
feature(*): 门店考评池查询
|
156
|
log.error("计算考评数据失败:{}", bo, ex);
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
setOps.add(finalStr);
}
});
} catch (RejectedExecutionException re) {
overflowsList.add(str);
}
}
if (!CollectionUtils.isEmpty(overflowsList)) {
for (String s : overflowsList) {
setOps.add(s);
}
}
}
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
171
|
public void calculateEvalGroup(EvalGroupCalculableBO bo, EvalScopeEnum scopeType) {
|
b5babc65
姜超
feature(*): 参数修改
|
172
|
log.info("考评组计算:{}", JSON.toJSONString(bo));
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
173
|
final Long evalGroupId = bo.getEvalGroupId();
|
ea6b2fd6
姜超
feature(*): 门店奖惩分配
|
174
175
|
final LocalDate localDate = bo.getLocalDate();
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
176
177
178
179
180
|
EvalGroup evalGroup = evalGroupService.getById(evalGroupId);
if (Objects.isNull(evalGroup)) {
log.error("考评组[{}]不存在,终止计算!", evalGroupId);
return;
}
|
80e64f6f
姜超
feature(*): 考评排名组...
|
181
182
183
184
185
|
EvalGroupRankStage evalGroupRankStage = evalGroupRankStageService.getById(evalGroup.getEvalGroupRankStageId());
if (Objects.isNull(evalGroupRankStage)) {
log.error("考评排名组阶段[{}]不存在,终止计算!", JSON.toJSONString(evalGroup));
return;
}
|
9a6df217
姜超
feature(*): 修改个人考评
|
186
187
188
189
190
191
|
EvalGroupRank evalGroupRank = evalGroupRankService.getById(evalGroup.getEvalGroupRankId());
if (Objects.isNull(evalGroupRank)) {
log.error("考评组[{}]排名组不存在,终止计算!", evalGroup.getEvalGroupRankId());
return;
}
List<EvalGroupUserShop> userShops = this.buildEvalGroupObj(evalGroup, evalGroupRank, evalGroupRankStage, localDate, scopeType);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
192
193
194
195
196
|
if (CollectionUtils.isEmpty(userShops)) {
log.error("考评组[{}]人员为空,终止计算!", evalGroupId);
return;
}
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
197
198
199
200
201
|
List<EvalGroupRewardDim> rewardDims = evalGroupRewardDimService.list(Wrappers.<EvalGroupRewardDim>lambdaQuery()
.eq(EvalGroupRewardDim::getEvalGroupId, evalGroupId)
.eq(EvalGroupRewardDim::getType, scopeType)
.eq(EvalGroupRewardDim::getYn, Boolean.TRUE)
);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
202
203
204
205
|
List<EvalGroupReward> rewards = evalGroupRewardService.list(Wrappers.<EvalGroupReward>lambdaQuery()
.eq(EvalGroupReward::getEvalGroupId, evalGroupId)
.eq(EvalGroupReward::getYn, Boolean.TRUE)
);
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
206
|
Map<Long, List<EvalGroupReward>> dimRewardMap = rewards.stream().collect(Collectors.groupingBy(EvalGroupReward::getEvalGroupDimId));
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
207
208
209
210
211
|
List<EvalGroupIndicator> indicators = evalGroupIndicatorService.list(Wrappers.<EvalGroupIndicator>lambdaQuery()
.eq(EvalGroupIndicator::getEvalGroupId, evalGroupId)
.eq(EvalGroupIndicator::getYn, Boolean.TRUE)
);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
212
|
List<EvalPoolRewardDetail> rewardDetails = new ArrayList<>();
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
213
214
215
|
BigDecimal totalScore = indicators.stream()
.map(indicator -> BigDecimal.valueOf(indicator.getBaseScore()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
ea6b2fd6
姜超
feature(*): 门店奖惩分配
|
216
217
|
//计算
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
218
219
|
calcRewardRnkCond(userShops, rewardDims, dimRewardMap, scopeType);
calcTotalPushMoney(userShops, rewardDims, dimRewardMap, scopeType, rewardDetails);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
220
221
|
for (EvalGroupUserShop userShop : userShops) {
userShop.setIndicatorTotalScore(totalScore);
|
e0944b69
姜超
feature(*): 修改计算考评
|
222
|
calcRewardMoney(rewards, userShop, rewardDetails);
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
223
|
calcEvalKpi(userShop, indicators);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
224
|
}
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
225
|
updatePool(evalGroup, localDate, scopeType, rewardDetails, userShops);
|
15a68981
姜超
feature(*): 处理百分数
|
226
227
|
}
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
228
229
|
public void updatePool(EvalGroup evalGroup, LocalDate localDate, EvalScopeEnum scopeType,
List<EvalPoolRewardDetail> rewardDetails, List<EvalGroupUserShop> userShops) {
|
15a68981
姜超
feature(*): 处理百分数
|
230
|
final Long evalGroupId = evalGroup.getId();
|
15a68981
姜超
feature(*): 处理百分数
|
231
232
233
234
235
236
237
238
239
|
List<Long> poolIds = userShops.stream().map(EvalGroupUserShop::getPoolId).collect(Collectors.toList());
if (PublicUtil.isNotEmpty(rewardDetails)) {
evalPoolRewardDetailService.remove(Wrappers.<EvalPoolRewardDetail>lambdaQuery()
.in(EvalPoolRewardDetail::getPoolId, poolIds)
.eq(EvalPoolRewardDetail::getEvalGroupId, evalGroupId)
.eq(EvalPoolRewardDetail::getDataDate, localDate)
);
evalPoolRewardDetailService.saveBatch(rewardDetails);
}
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
240
241
242
243
244
245
|
if (EvalScopeEnum.STAFF.equals(scopeType)) {
for (EvalGroupUserShop userShop : userShops) {
BigDecimal scoreRatio = BigDecimal.ZERO;
if (userShop.getIndicatorTotalScore().compareTo(BigDecimal.ZERO) > 0) {
scoreRatio = userShop.getScore().divide(userShop.getIndicatorTotalScore(), 2, RoundingMode.DOWN);
}
|
c043db4c
姜超
feature(*): 查看考评详情
|
246
|
BigDecimal reward = (Boolean.TRUE.equals(userShop.getIgnored())) ? BigDecimal.ZERO : userShop.getReward();
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
247
248
249
|
evalUserPoolService.update(Wrappers.<EvalUserPool>lambdaUpdate()
.eq(EvalUserPool::getId, userShop.getPoolId())
.eq(EvalUserPool::getYn, Boolean.TRUE)
|
c043db4c
姜超
feature(*): 查看考评详情
|
250
|
.set(EvalUserPool::getReward, reward)
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
251
252
253
254
255
256
257
258
|
.set(EvalUserPool::getScore, userShop.getScore())
.set(EvalUserPool::getScoreRatio, scoreRatio)
.set(EvalUserPool::getMonthly, YearMonth.from(localDate))
.set(EvalUserPool::getDataDate, localDate)
);
}
return;
}
|
1365b620
姜超
feature(*): 计算得分率修复
|
259
260
261
262
|
for (EvalGroupUserShop userShop : userShops) {
BigDecimal scoreRatio = BigDecimal.ZERO;
if (userShop.getIndicatorTotalScore().compareTo(BigDecimal.ZERO) > 0) {
scoreRatio = userShop.getScore().divide(userShop.getIndicatorTotalScore(), 2, RoundingMode.DOWN);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
263
|
}
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
264
265
266
267
268
269
270
271
|
evalShopPoolService.update(Wrappers.<EvalShopPool>lambdaUpdate()
.eq(EvalShopPool::getId, userShop.getPoolId())
.eq(EvalShopPool::getYn, Boolean.TRUE)
.set(EvalShopPool::getReward, userShop.getReward())
.set(EvalShopPool::getScore, userShop.getScore())
.set(EvalShopPool::getScoreRatio, scoreRatio)
.set(EvalShopPool::getMonthly, YearMonth.from(localDate))
.set(EvalShopPool::getDataDate, localDate)
|
1365b620
姜超
feature(*): 计算得分率修复
|
272
|
);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
273
|
}
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
274
275
|
}
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
276
|
|
9a6df217
姜超
feature(*): 修改个人考评
|
277
|
public List<EvalGroupUserShop> buildEvalGroupObj(EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage, LocalDate localDate, EvalScopeEnum scopeType) {
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
278
|
List<EvalGroupUserShop> userShops = new ArrayList<>();
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
279
280
|
if (EvalScopeEnum.STAFF.equals(scopeType)) {
List<EvalGroupUser> users = evalGroupUserService.list(Wrappers.<EvalGroupUser>lambdaQuery()
|
6216249c
姜超
feature(*): 修改bug
|
281
|
.eq(EvalGroupUser::getEvalGroupRankStageId, evalGroupRankStage.getId())
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
282
283
284
|
.eq(EvalGroupUser::getDataDate, localDate)
.eq(EvalGroupUser::getYn, Boolean.TRUE)
);
|
36a2a360
姜超
feature(*): 禁用考评
|
285
|
|
6216249c
姜超
feature(*): 修改bug
|
286
|
Map<Long, EvalUserPool> userPoolMap = evalPoolCommonService.inspectionUserPoolMap(evalGroup, evalGroupRankStage, users, localDate);
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
287
|
for (EvalGroupUser user : users) {
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
288
|
EvalUserPool userPool = userPoolMap.get(user.getUserId());
|
9a6df217
姜超
feature(*): 修改个人考评
|
289
|
userShops.add(convertBO(user, userPool, evalGroupRank, evalGroupRankStage));
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
290
|
}
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
291
|
return userShops;
|
ea6b2fd6
姜超
feature(*): 门店奖惩分配
|
292
|
}
|
bc484bc4
姜超
feature(*): 定时任务发送修改
|
293
|
List<Long> distShopIds = this.getEvalDistShopIds(evalGroup);
|
bc484bc4
姜超
feature(*): 定时任务发送修改
|
294
|
Map<Long, EvalShopPool> shopPoolBOMap = evalPoolCommonService.inspectionShopPools(evalGroup, localDate, distShopIds);
|
9f43aee0
姜超
feature(*): 计算考评修改
|
295
|
for (Long shopId : evalGroup.getShopIds()) {
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
296
|
EvalShopPool shopPool = shopPoolBOMap.get(shopId);
|
9f43aee0
姜超
feature(*): 计算考评修改
|
297
|
Boolean ignored = ! distShopIds.contains(shopId);
|
9a6df217
姜超
feature(*): 修改个人考评
|
298
|
userShops.add(convertBO(shopPool, evalGroup, evalGroupRank, evalGroupRankStage, localDate, ignored));
|
4964363d
姜超
feature(*): 考评阶段指标上报
|
299
300
|
}
return userShops;
|
ea6b2fd6
姜超
feature(*): 门店奖惩分配
|
301
|
}
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
302
|
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
303
|
|
bc484bc4
姜超
feature(*): 定时任务发送修改
|
304
305
306
307
308
309
310
311
312
313
314
|
public List<Long> getEvalDistShopIds(EvalGroup evalGroup) {
List<EvalGroupRewardDim> rewardDims = evalGroupRewardDimService.list(Wrappers.<EvalGroupRewardDim>lambdaQuery()
.eq(EvalGroupRewardDim::getEvalGroupId, evalGroup.getId())
.eq(EvalGroupRewardDim::getType, EvalScopeEnum.SHOP)
.eq(EvalGroupRewardDim::getYn, Boolean.TRUE)
);
if (PublicUtil.isEmpty(rewardDims)) {
return new ArrayList<>();
}
return rewardDims.stream().flatMap(dim -> dim.getShopIds().stream()).distinct().collect(Collectors.toList());
}
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
315
316
317
318
319
320
321
322
|
/**
* 计算绩效组人员的绩效数据
* 计算单个人员绩效数据
*
*/
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
323
|
private void calcEvalKpi(EvalGroupUserShop userShop, List<EvalGroupIndicator> indicators) {
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
324
325
326
327
|
// KpiPool kpiPool = kpiPoolCommonService.inspectionPool(user);
// if (Boolean.TRUE.equals(user.getIgnored())) {
// return;
// }
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
328
|
final Long poolId = userShop.getPoolId();
|
15a68981
姜超
feature(*): 处理百分数
|
329
|
final Long evalGroupId = userShop.getEvalGroupId();
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
330
331
|
List<EvalPoolIndicatorDetail> indicatorDetails = new ArrayList<>();
for (EvalGroupIndicator indicator : indicators) {
|
e0944b69
姜超
feature(*): 修改计算考评
|
332
|
EvalKpiBaseCalculator calculator = calculatorEvalMap.get(indicator.getScoreWay());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
333
334
335
336
|
if (calculator == null) {
continue;
}
BigDecimal score = calculator.calculate(userShop, indicator);
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
337
|
EvalPoolIndicatorDetail indicatorDetail = createPoolIndicatorValue(score, indicator, userShop.getGroupId());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
338
|
indicatorDetail.setDataDate(userShop.getDataDate());
|
e0944b69
姜超
feature(*): 修改计算考评
|
339
|
indicatorDetail.setPoolId(poolId);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
340
341
342
343
344
345
|
indicatorDetail.setScopeType(userShop.getScopeType());
indicatorDetails.add(indicatorDetail);
}
if (CollectionUtils.isNotEmpty(indicatorDetails)) {
evalPoolIndicatorDetailService.remove(Wrappers.<EvalPoolIndicatorDetail>lambdaQuery()
|
e0944b69
姜超
feature(*): 修改计算考评
|
346
|
.eq(EvalPoolIndicatorDetail::getPoolId, poolId)
|
15a68981
姜超
feature(*): 处理百分数
|
347
|
.eq(EvalPoolIndicatorDetail::getEvalGroupId, evalGroupId)
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
348
349
|
.eq(EvalPoolIndicatorDetail::getScopeType, userShop.getScopeType())
.eq(EvalPoolIndicatorDetail::getDataDate, userShop.getDataDate())
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
350
|
.eq(EvalPoolIndicatorDetail::getYn, Boolean.TRUE));
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
351
|
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
352
|
evalPoolIndicatorDetailService.saveBatch(indicatorDetails);
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
353
|
}
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
354
355
356
357
|
BigDecimal totalScore = BigDecimal.ZERO;
for (EvalPoolIndicatorDetail indicatorValue : indicatorDetails) {
totalScore = totalScore.add(indicatorValue.getScore());
}
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
358
|
userShop.setScore(totalScore);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
359
|
}
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
360
|
|
05639e47
姜超
feature(*): 查询修改
|
361
|
|
97c9de51
姜超
feature(*): 审批修改
|
362
|
/**
|
05639e47
姜超
feature(*): 查询修改
|
363
|
* 计算考评排名条件
|
97c9de51
姜超
feature(*): 审批修改
|
364
|
*
|
05639e47
姜超
feature(*): 查询修改
|
365
|
* @param
|
97c9de51
姜超
feature(*): 审批修改
|
366
|
*/
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
|
private void calcRewardRnkCond(List<EvalGroupUserShop> userShops, List<EvalGroupRewardDim> rewardDims,
Map<Long, List<EvalGroupReward>> dimRewardMap, EvalScopeEnum scopeType) {
for (EvalGroupRewardDim dim : rewardDims) {
List<EvalGroupUserShop> filterUserShops = filterUserShops(dim, scopeType, userShops);
if (PublicUtil.isEmpty(filterUserShops)) {
continue;
}
for (EvalGroupReward evalGroupReward : dimRewardMap.getOrDefault(dim.getId(), new ArrayList<>())) {
final String rewardProjectName = evalGroupReward.getName();
EvalRewardBaseCalculator calculator = calculatorRewardMap.get(evalGroupReward.getCalMethod());
if (Objects.isNull(calculator)) {
log.error("[{}_{}]计算器不存在", evalGroupReward.getId(), rewardProjectName);
return;
}
calculator.calculateRankPrecondition(filterUserShops, evalGroupReward);
|
97c9de51
姜超
feature(*): 审批修改
|
383
|
}
|
97c9de51
姜超
feature(*): 审批修改
|
384
385
|
}
}
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
386
|
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
387
388
389
390
391
392
393
394
395
396
|
public List<EvalGroupUserShop> filterUserShops(EvalGroupRewardDim dim, EvalScopeEnum scopeType, List<EvalGroupUserShop> userShops) {
List<EvalGroupUserShop> filterUserShops = new ArrayList<>();
if (EvalScopeEnum.STAFF.equals(scopeType)) {
filterUserShops = userShops.stream().filter(userShop -> dim.getPostIds().contains(userShop.getPostId())).collect(Collectors.toList());
} else {
filterUserShops = userShops.stream().filter(userShop -> dim.getShopIds().contains(userShop.getShopId())).collect(Collectors.toList());
}
return filterUserShops;
}
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
397
398
399
400
401
|
/**
* 计算绩效金额
*
* @param rewardDetails
*/
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
|
private void calcTotalPushMoney(List<EvalGroupUserShop> userShops, List<EvalGroupRewardDim> rewardDims,
Map<Long, List<EvalGroupReward>> dimRewardMap, EvalScopeEnum scopeType, List<EvalPoolRewardDetail> rewardDetails) {
for (EvalGroupRewardDim dim : rewardDims) {
List<EvalGroupReward> totalCalcRewards = dimRewardMap.getOrDefault(dim.getId(), new ArrayList<>()).stream()
.filter(reward -> EvalRewardCalMethodEnum.RANK.equals(reward.getCalMethod()) ||
EvalRewardCalMethodEnum.TOTAL_PROPORTION.equals(reward.getCalMethod()))
.collect(Collectors.toList());
for (EvalGroupReward evalGroupReward : totalCalcRewards) {
List<EvalGroupUserShop> filterUserShops = filterUserShops(dim, scopeType, userShops);
if (PublicUtil.isEmpty(filterUserShops)) {
continue;
}
final String rewardProjectName = evalGroupReward.getName();
EvalRewardBaseCalculator calculator = calculatorRewardMap.get(evalGroupReward.getCalMethod());
if (Objects.isNull(calculator)) {
log.error("[{}_{}]计算器不存在", evalGroupReward.getId(), rewardProjectName);
return;
}
calculator.calculateGroup(userShops, evalGroupReward);
for (EvalGroupUserShop userShop : filterUserShops) {
EvalPoolRewardDetail detail = createDetail(userShop);
detail.setScopeType(userShop.getScopeType());
detail.setEvalGroupRewardId(evalGroupReward.getId());
detail.setAmount(Optional.ofNullable(userShop.getEvalGroupRewardAmount()).orElse(BigDecimal.ZERO));
rewardDetails.add(detail);
}
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
430
431
432
433
434
435
|
}
}
}
/**
* 计算绩效金额
*
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
436
437
|
* @param rewardDetails
*/
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
438
439
440
441
442
443
444
445
446
|
private void calcRewardMoney(List<EvalGroupReward> rewards, EvalGroupUserShop userShop, List<EvalPoolRewardDetail> rewardDetails) {
List<EvalGroupReward> calcRewards = rewards.stream()
.filter(reward ->
EvalRewardCalMethodEnum.FIXATION.equals(reward.getCalMethod()) ||
EvalRewardCalMethodEnum.LADDER.equals(reward.getCalMethod()) ||
EvalRewardCalMethodEnum.LADDER_DOUBLE.equals(reward.getCalMethod()))
.collect(Collectors.toList());
for (EvalGroupReward evalGroupReward : calcRewards) {
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
447
448
449
450
451
452
453
454
|
final String rewardProjectName = evalGroupReward.getName();
EvalRewardBaseCalculator calculator = calculatorRewardMap.get(evalGroupReward.getCalMethod());
if (Objects.isNull(calculator)) {
log.error("[{}_{}]计算器不存在", evalGroupReward.getId(), rewardProjectName);
return;
}
final BigDecimal salaryMoney = calculator.calculate(userShop, evalGroupReward);
if (Objects.nonNull(salaryMoney)) {
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
455
|
EvalPoolRewardDetail detail = createDetail(userShop);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
456
457
|
detail.setScopeType(userShop.getScopeType());
detail.setEvalGroupRewardId(evalGroupReward.getId());
|
ea6b2fd6
姜超
feature(*): 门店奖惩分配
|
458
|
detail.setAmount(salaryMoney);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
459
|
rewardDetails.add(detail);
|
c1b3c16f
姜超
feature(*): 门店考评池查询
|
460
461
|
userShop.setReward(userShop.getReward().add(salaryMoney));
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
462
463
464
465
|
}
}
}
|
8b61df4a
姜超
feature(*): 计算考评排名
|
466
467
468
469
470
471
472
|
/**
* 缓存需要计算考评排名
*
* @param localDate
*/
public void cacheCalculableEvalGroupRank(LocalDate localDate) {
List<EvalGroupRank> evalGroupRanks = evalGroupRankService.list(Wrappers.<EvalGroupRank>lambdaQuery()
|
a33a5f4c
姜超
feature(*): 考评数据抽取修改
|
473
|
.ge(EvalGroupRank::getOverTime, localDate)
|
8b61df4a
姜超
feature(*): 计算考评排名
|
474
475
|
.eq(EvalGroupRank::getYn, Boolean.TRUE)
);
|
8945afe5
姜超
feature(*): 考评保存修改
|
476
477
478
|
if (PublicUtil.isEmpty(evalGroupRanks)) {
return;
}
|
8b61df4a
姜超
feature(*): 计算考评排名
|
479
480
|
List<String> rankBOS = new ArrayList<>();
for (EvalGroupRank evalGroupRank : evalGroupRanks) {
|
8945afe5
姜超
feature(*): 考评保存修改
|
481
482
483
|
List<EvalGroup> evalGroups = evalGroupService.getEffectsByRankId(evalGroupRank.getId(), localDate);
if (PublicUtil.isEmpty(evalGroups)) {
continue;
|
8b61df4a
姜超
feature(*): 计算考评排名
|
484
|
}
|
8945afe5
姜超
feature(*): 考评保存修改
|
485
|
rankBOS.add(convertRankStr(evalGroupRank, localDate, evalGroups));
|
8b61df4a
姜超
feature(*): 计算考评排名
|
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
|
}
if (PublicUtil.isNotEmpty(rankBOS)) {
ListOperations<String, String> listOps = stringRedisTemplate.opsForList();
listOps.rightPushAll(getCalcEvalRankKey(), rankBOS);
}
}
/**
* 计算考评排名组
*/
public void calcEvalGroupRank() {
ListOperations<String, String> listOps = stringRedisTemplate.opsForList();
List<String> errList = new ArrayList<>();
String jsonStr;
while ((jsonStr = listOps.leftPop(getCalcEvalRankKey())) != null) {
if (StringUtils.isValid(jsonStr)) {
EvalGroupCalculableRankBO calculableBO = JSONObject.parseObject(jsonStr, EvalGroupCalculableRankBO.class);
if (Objects.nonNull(calculableBO)) {
try {
|
8945afe5
姜超
feature(*): 考评保存修改
|
507
|
calcEvalRank(calculableBO);
|
8b61df4a
姜超
feature(*): 计算考评排名
|
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
|
} catch (Exception ex) {
log.error("计算考评排名组失败:[{}]", jsonStr, ex);
errList.add(jsonStr);
}
}
}
}
if (!CollectionUtils.isEmpty(errList)) {
listOps.rightPushAll(getCalcEvalRankKey(), errList);
}
}
/**
* 计算排名
*
* @param bo
*/
@Transactional(rollbackFor = Exception.class)
|
8945afe5
姜超
feature(*): 考评保存修改
|
526
527
528
529
530
531
532
533
|
public void calcEvalRank(EvalGroupCalculableRankBO bo) {
final List<Long> evalGroupIds = bo.getEvalGroupIds();
List<EvalUserPool> pools = evalUserPoolService.list(Wrappers.<EvalUserPool>lambdaQuery()
.in(EvalUserPool::getEvalGroupId, evalGroupIds)
.eq(EvalUserPool::getInclusion, Boolean.TRUE)
.eq(EvalUserPool::getYn, Boolean.TRUE)
.orderByDesc(EvalUserPool::getScoreRatio)
|
8b61df4a
姜超
feature(*): 计算考评排名
|
534
|
);
|
8945afe5
姜超
feature(*): 考评保存修改
|
535
536
|
calcEvalUserRank(pools);
evalUserPoolService.updateBatchById(pools);
|
8b61df4a
姜超
feature(*): 计算考评排名
|
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
|
}
/**
* 计算考评排名
*
* @param pools
*/
public void calcEvalUserRank(List<EvalUserPool> pools) {
int rank = 1;
Optional<BigDecimal> lastKpiScoreRatioOp = pools.stream().map(EvalUserPool::getScoreRatio).max(BigDecimal::compareTo);
if (Boolean.FALSE.equals(lastKpiScoreRatioOp.isPresent())) {
return;
}
BigDecimal lastKpiScoreRatio = lastKpiScoreRatioOp.get();
for (EvalUserPool pool : pools) {
if (PublicUtil.isEmpty(pool.getScoreRatio())) {
continue;
}
if (lastKpiScoreRatio.compareTo(pool.getScoreRatio()) != 0) {
rank++;
}
pool.setRank(rank);
lastKpiScoreRatio = pool.getScoreRatio();
}
}
/**
* 计算考评排名
*
* @param pools
*/
public void calcEvalShopRank(List<EvalShopPool> pools) {
int rank = 1;
Optional<BigDecimal> lastKpiScoreRatioOp = pools.stream().map(EvalShopPool::getScoreRatio).max(BigDecimal::compareTo);
if (Boolean.FALSE.equals(lastKpiScoreRatioOp.isPresent())) {
return;
}
BigDecimal lastKpiScoreRatio = lastKpiScoreRatioOp.get();
for (EvalShopPool pool : pools) {
if (PublicUtil.isEmpty(pool.getScoreRatio())) {
continue;
}
if (lastKpiScoreRatio.compareTo(pool.getScoreRatio()) != 0) {
rank++;
}
pool.setRank(rank);
lastKpiScoreRatio = pool.getScoreRatio();
}
}
|
8945afe5
姜超
feature(*): 考评保存修改
|
588
|
public String convertRankStr(EvalGroupRank evalGroupRank, LocalDate localDate, List<EvalGroup> evalGroups) {
|
8b61df4a
姜超
feature(*): 计算考评排名
|
589
590
|
EvalGroupCalculableRankBO rankBO = EvalGroupCalculableRankBO.builder()
.groupId(evalGroupRank.getGroupId())
|
8945afe5
姜超
feature(*): 考评保存修改
|
591
592
593
|
// .scopeType(evalGroupRank.getScopeType())
// .egcs(evalGroupRank.getEgcs())
.evalGroupIds(evalGroups.stream().map(EvalGroup::getId).collect(Collectors.toList()))
|
8b61df4a
姜超
feature(*): 计算考评排名
|
594
595
596
597
598
|
.localDate(localDate)
.build();
return JSONObject.toJSONString(rankBO);
}
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
599
600
|
private EvalPoolIndicatorDetail createPoolIndicatorValue(BigDecimal score, EvalGroupIndicator indicator, Long groupId) {
EvalPoolIndicatorDetail indicatorDetail = new EvalPoolIndicatorDetail();
|
15a68981
姜超
feature(*): 处理百分数
|
601
|
indicatorDetail.setEvalGroupId(indicator.getEvalGroupId());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
602
603
604
605
606
607
608
609
610
611
|
indicatorDetail.setEvalGroupIndicatorId(indicator.getId());
indicatorDetail.setScore(score);
indicatorDetail.setYn(Boolean.TRUE);
indicatorDetail.setGroupId(groupId);
return indicatorDetail;
}
/**
* 创建实体
*
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
612
613
|
* @return
*/
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
614
|
private EvalPoolRewardDetail createDetail(EvalGroupUserShop userShop) {
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
615
|
EvalPoolRewardDetail poolDetail = new EvalPoolRewardDetail();
|
e0944b69
姜超
feature(*): 修改计算考评
|
616
|
poolDetail.setPoolId(userShop.getPoolId());
|
15a68981
姜超
feature(*): 处理百分数
|
617
|
poolDetail.setEvalGroupId(userShop.getEvalGroupId());
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
618
|
poolDetail.setScopeType(userShop.getScopeType());
|
ea6b2fd6
姜超
feature(*): 门店奖惩分配
|
619
|
poolDetail.setAmount(BigDecimal.ZERO);
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
620
621
|
poolDetail.setDataDate(userShop.getDataDate());
poolDetail.setGroupId(userShop.getGroupId());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
622
623
624
625
|
poolDetail.setYn(Boolean.TRUE);
return poolDetail;
}
|
9a6df217
姜超
feature(*): 修改个人考评
|
626
|
public EvalGroupUserShop convertBO(EvalGroupUser user, EvalUserPool userPool, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage) {
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
627
|
EvalGroupUserShop userShop = new EvalGroupUserShop();
|
9161579f
姜超
feature(*): 排名返回名称
|
628
|
userShop.setName(user.getUserName());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
629
|
userShop.setScopeType(EvalScopeEnum.STAFF);
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
630
|
userShop.setEvalGroupId(user.getEvalGroupId());
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
631
|
userShop.setPoolId(userPool.getId());
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
632
633
|
userShop.setPostId(userPool.getPostId());
userShop.setShopId(userPool.getShopId());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
634
|
userShop.setReferId(user.getUserId());
|
9a6df217
姜超
feature(*): 修改个人考评
|
635
|
userShop.setBeginDate(evalGroupRankStage.getBeginTime());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
636
|
userShop.setDataDate(user.getDataDate());
|
9a6df217
姜超
feature(*): 修改个人考评
|
637
|
userShop.setMultiStage(evalGroupRank.getMultiStage());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
638
|
userShop.setGroupId(user.getGroupId());
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
639
640
|
userShop.setScore(BigDecimal.ZERO);
userShop.setReward(BigDecimal.ZERO);
|
c043db4c
姜超
feature(*): 查看考评详情
|
641
|
userShop.setIgnored(user.getIgnored());
|
e2386ce2
姜超
feature(*): 考评计算得分修改
|
642
643
644
|
return userShop;
}
|
9a6df217
姜超
feature(*): 修改个人考评
|
645
|
public EvalGroupUserShop convertBO(EvalShopPool shopPool, EvalGroup evalGroup, EvalGroupRank evalGroupRank, EvalGroupRankStage evalGroupRankStage, LocalDate dataDate, Boolean ignored) {
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
646
|
EvalGroupUserShop userShop = new EvalGroupUserShop();
|
9161579f
姜超
feature(*): 排名返回名称
|
647
|
userShop.setName(shopPool.getShopName());
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
648
649
|
userShop.setReferId(shopPool.getShopId());
userShop.setPoolId(shopPool.getId());
|
7e7c92a1
姜超
feature(*): 考评排名组...
|
650
|
userShop.setShopId(shopPool.getShopId());
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
651
652
653
|
userShop.setScopeType(EvalScopeEnum.SHOP);
userShop.setEvalId(userShop.getEvalId());
userShop.setEvalGroupId(evalGroup.getId());
|
9a6df217
姜超
feature(*): 修改个人考评
|
654
|
userShop.setBeginDate(evalGroupRankStage.getBeginTime());
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
655
|
userShop.setDataDate(dataDate);
|
9a6df217
姜超
feature(*): 修改个人考评
|
656
|
userShop.setMultiStage(evalGroupRank.getMultiStage());
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
657
|
userShop.setGroupId(evalGroup.getGroupId());
|
9f43aee0
姜超
feature(*): 计算考评修改
|
658
|
userShop.setIgnored(ignored);
|
da42a3d8
姜超
feature(*): 计算考评代码优化
|
659
660
661
|
userShop.setScore(BigDecimal.ZERO);
userShop.setReward(BigDecimal.ZERO);
return userShop;
|
725e9bc8
姜超
feature(*): 计算考评修改
|
662
|
}
|
5ad9dc20
姜超
feature(*): 缓存考评组
|
663
|
|
f946d0a5
姜超
feature(*): 考评定时任务
|
664
|
}
|