Commit f32fbcdc9eff8a7ae78e447b4b72ff28204c80b2

Authored by 姜超
1 parent b7c28a4a

feature(*): 薪酬抽数据修改

薪酬抽数据修改
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) {