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 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) {
... ...