Commit f32fbcdc9eff8a7ae78e447b4b72ff28204c80b2
1 parent
b7c28a4a
feature(*): 薪酬抽数据修改
薪酬抽数据修改
Showing
1 changed file
with
21 additions
and
6 deletions
fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryReportTask.java
... | ... | @@ -219,15 +219,15 @@ public class SalaryReportTask { |
219 | 219 | |
220 | 220 | private List<ReportSalaryDimValue> calcUser(List<SalaryGroupProjectBO> salaryGroupProjects, |
221 | 221 | List<ReportSalaryDim> userDims, |
222 | - LocalDate date, | |
222 | + LocalDate dataDate, | |
223 | 223 | List<SalaryPool> pools, |
224 | 224 | Long reportSalaryId) { |
225 | - MultiKeyMap<Long, BigDecimal> userSalaryMap = this.getUserIndicatorHitMap(salaryGroupProjects, date, pools); | |
225 | + MultiKeyMap<Long, BigDecimal> userSalaryMap = this.getUserIndicatorHitMap(salaryGroupProjects, dataDate, pools); | |
226 | 226 | List<ReportSalaryDimValue> reportSalaryValues = new ArrayList<>(); |
227 | 227 | //人的维度为基础,计算各个指标信息对应的数据 |
228 | 228 | for (SalaryPool pool : pools) { |
229 | 229 | //如果计算日期 与 报表数据抽取日期不一致,使用计算日期(计算日期每个人都可能不一致) |
230 | - LocalDate dataDate = (pool.getDataDate().compareTo(date) == 0) ? date : pool.getDataDate(); | |
230 | + Boolean changeStaff = pool.getDataDate().compareTo(dataDate) != 0; | |
231 | 231 | |
232 | 232 | ReportSalaryDim reportSalaryDim = saveStaffDim(pool, dataDate, reportSalaryId); |
233 | 233 | userDims.add(reportSalaryDim); |
... | ... | @@ -239,7 +239,11 @@ public class SalaryReportTask { |
239 | 239 | continue; |
240 | 240 | } |
241 | 241 | final Long salaryGroupProjectId = salaryGroupProject.getId(); |
242 | - reportSalaryValues.add(this.convertDB(salaryGroupProject, reportSalaryDimId, dataDate, userSalaryMap.get(userId, salaryGroupProjectId))); | |
242 | + BigDecimal salaryValue = userSalaryMap.get(userId, salaryGroupProjectId); | |
243 | + if (changeStaff) { | |
244 | + salaryValue = this.getUserIndicatorHitValue(salaryGroupProject, pool.getDataDate(), pool); | |
245 | + } | |
246 | + reportSalaryValues.add(this.convertDB(salaryGroupProject, reportSalaryDimId, dataDate, salaryValue)); | |
243 | 247 | List<SalaryGroupProjectParamVO> salaryGroupProjectParamVos = salaryGroupProjectParamService.getSalaryGroupProjectParamVO(salaryGroupProject.getId()); |
244 | 248 | |
245 | 249 | if (salaryGroupProject.getCalMethod().equals(SalaryCalMethodEnum.CAR_SERIES)) { |
... | ... | @@ -252,14 +256,15 @@ public class SalaryReportTask { |
252 | 256 | if (! paramCodes.add(salaryGroupProjectParam.getIndicatorCode())) { |
253 | 257 | continue; |
254 | 258 | } |
259 | + LocalDate calcDate = (changeStaff) ? pool.getDataDate() : dataDate; | |
255 | 260 | if (TargetTypeEnum.NO.equals(salaryGroupProjectParam.getTargetType())) { |
256 | 261 | //无目标 |
257 | - Map<Long, BigDecimal> userValueMap = queryUserOriginValue(salaryGroupProjectParam.getIndicatorCode(), userId, dataDate); | |
262 | + Map<Long, BigDecimal> userValueMap = queryUserOriginValue(salaryGroupProjectParam.getIndicatorCode(), userId, calcDate); | |
258 | 263 | BigDecimal value = userValueMap.getOrDefault(userId, BigDecimal.ZERO); |
259 | 264 | reportSalaryValues.add(this.convertNoTargetDB(salaryGroupProject, salaryGroupProjectParam, dataDate, reportSalaryDimId, value)); |
260 | 265 | } else { |
261 | 266 | //有目标 |
262 | - Map<Long, SalaryGroupProjectTargetHitLog> targetHitLogMap = queryUserTargetValue(salaryGroupProjectParam.getId(), userId, dataDate); | |
267 | + Map<Long, SalaryGroupProjectTargetHitLog> targetHitLogMap = queryUserTargetValue(salaryGroupProjectParam.getId(), userId, calcDate); | |
263 | 268 | SalaryGroupProjectTargetHitLog hitLog = targetHitLogMap.get(userId); |
264 | 269 | BigDecimal value = Optional.ofNullable(hitLog).map(SalaryGroupProjectTargetHitLog::getReachValue).orElse(BigDecimal.ZERO); |
265 | 270 | reportSalaryValues.add(this.convertTargetDB(salaryGroupProject, salaryGroupProjectParam, dataDate, reportSalaryDimId, value)); |
... | ... | @@ -553,6 +558,16 @@ public class SalaryReportTask { |
553 | 558 | return userGroupIndicatorHitMap; |
554 | 559 | } |
555 | 560 | |
561 | + public BigDecimal getUserIndicatorHitValue(SalaryGroupProjectBO salaryGroupProject, LocalDate date, SalaryPool pool) { | |
562 | + SalaryGroupProjectHitLog indicatorHitLog = salaryGroupProjectHitLogService.getOne(Wrappers.<SalaryGroupProjectHitLog>lambdaQuery() | |
563 | + .eq(SalaryGroupProjectHitLog::getSalaryGroupProjectId, salaryGroupProject.getId()) | |
564 | + .eq(SalaryGroupProjectHitLog::getUserId, pool.getUserId()) | |
565 | + .eq(SalaryGroupProjectHitLog::getDataDate, date) | |
566 | + .eq(SalaryGroupProjectHitLog::getYn, Boolean.TRUE) | |
567 | + , Boolean.FALSE | |
568 | + ); | |
569 | + return Optional.ofNullable(indicatorHitLog).map(SalaryGroupProjectHitLog::getSalaryValue).orElse(BigDecimal.ZERO); | |
570 | + } | |
556 | 571 | |
557 | 572 | |
558 | 573 | public Map<Long, SalaryGroupProjectTargetHitLog> queryUserTargetValue(Long referId, Long userId, LocalDate dataDate) { | ... | ... |