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,15 +219,15 @@ public class SalaryReportTask { | ||
219 | 219 | ||
220 | private List<ReportSalaryDimValue> calcUser(List<SalaryGroupProjectBO> salaryGroupProjects, | 220 | private List<ReportSalaryDimValue> calcUser(List<SalaryGroupProjectBO> salaryGroupProjects, |
221 | List<ReportSalaryDim> userDims, | 221 | List<ReportSalaryDim> userDims, |
222 | - LocalDate date, | 222 | + LocalDate dataDate, |
223 | List<SalaryPool> pools, | 223 | List<SalaryPool> pools, |
224 | Long reportSalaryId) { | 224 | Long reportSalaryId) { |
225 | - MultiKeyMap<Long, BigDecimal> userSalaryMap = this.getUserIndicatorHitMap(salaryGroupProjects, date, pools); | 225 | + MultiKeyMap<Long, BigDecimal> userSalaryMap = this.getUserIndicatorHitMap(salaryGroupProjects, dataDate, pools); |
226 | List<ReportSalaryDimValue> reportSalaryValues = new ArrayList<>(); | 226 | List<ReportSalaryDimValue> reportSalaryValues = new ArrayList<>(); |
227 | //人的维度为基础,计算各个指标信息对应的数据 | 227 | //人的维度为基础,计算各个指标信息对应的数据 |
228 | for (SalaryPool pool : pools) { | 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 | ReportSalaryDim reportSalaryDim = saveStaffDim(pool, dataDate, reportSalaryId); | 232 | ReportSalaryDim reportSalaryDim = saveStaffDim(pool, dataDate, reportSalaryId); |
233 | userDims.add(reportSalaryDim); | 233 | userDims.add(reportSalaryDim); |
@@ -239,7 +239,11 @@ public class SalaryReportTask { | @@ -239,7 +239,11 @@ public class SalaryReportTask { | ||
239 | continue; | 239 | continue; |
240 | } | 240 | } |
241 | final Long salaryGroupProjectId = salaryGroupProject.getId(); | 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 | List<SalaryGroupProjectParamVO> salaryGroupProjectParamVos = salaryGroupProjectParamService.getSalaryGroupProjectParamVO(salaryGroupProject.getId()); | 247 | List<SalaryGroupProjectParamVO> salaryGroupProjectParamVos = salaryGroupProjectParamService.getSalaryGroupProjectParamVO(salaryGroupProject.getId()); |
244 | 248 | ||
245 | if (salaryGroupProject.getCalMethod().equals(SalaryCalMethodEnum.CAR_SERIES)) { | 249 | if (salaryGroupProject.getCalMethod().equals(SalaryCalMethodEnum.CAR_SERIES)) { |
@@ -252,14 +256,15 @@ public class SalaryReportTask { | @@ -252,14 +256,15 @@ public class SalaryReportTask { | ||
252 | if (! paramCodes.add(salaryGroupProjectParam.getIndicatorCode())) { | 256 | if (! paramCodes.add(salaryGroupProjectParam.getIndicatorCode())) { |
253 | continue; | 257 | continue; |
254 | } | 258 | } |
259 | + LocalDate calcDate = (changeStaff) ? pool.getDataDate() : dataDate; | ||
255 | if (TargetTypeEnum.NO.equals(salaryGroupProjectParam.getTargetType())) { | 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 | BigDecimal value = userValueMap.getOrDefault(userId, BigDecimal.ZERO); | 263 | BigDecimal value = userValueMap.getOrDefault(userId, BigDecimal.ZERO); |
259 | reportSalaryValues.add(this.convertNoTargetDB(salaryGroupProject, salaryGroupProjectParam, dataDate, reportSalaryDimId, value)); | 264 | reportSalaryValues.add(this.convertNoTargetDB(salaryGroupProject, salaryGroupProjectParam, dataDate, reportSalaryDimId, value)); |
260 | } else { | 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 | SalaryGroupProjectTargetHitLog hitLog = targetHitLogMap.get(userId); | 268 | SalaryGroupProjectTargetHitLog hitLog = targetHitLogMap.get(userId); |
264 | BigDecimal value = Optional.ofNullable(hitLog).map(SalaryGroupProjectTargetHitLog::getReachValue).orElse(BigDecimal.ZERO); | 269 | BigDecimal value = Optional.ofNullable(hitLog).map(SalaryGroupProjectTargetHitLog::getReachValue).orElse(BigDecimal.ZERO); |
265 | reportSalaryValues.add(this.convertTargetDB(salaryGroupProject, salaryGroupProjectParam, dataDate, reportSalaryDimId, value)); | 270 | reportSalaryValues.add(this.convertTargetDB(salaryGroupProject, salaryGroupProjectParam, dataDate, reportSalaryDimId, value)); |
@@ -553,6 +558,16 @@ public class SalaryReportTask { | @@ -553,6 +558,16 @@ public class SalaryReportTask { | ||
553 | return userGroupIndicatorHitMap; | 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 | public Map<Long, SalaryGroupProjectTargetHitLog> queryUserTargetValue(Long referId, Long userId, LocalDate dataDate) { | 573 | public Map<Long, SalaryGroupProjectTargetHitLog> queryUserTargetValue(Long referId, Long userId, LocalDate dataDate) { |