Commit fa9e03378101da96968495632eb7ebe3cde1d32a

Authored by 姜超
2 parents 08af6e93 f32fbcdc

Merge branch 'main-bug' into 'main'

Main bug



See merge request !136
fw-morax-server/src/main/java/cn/fw/morax/server/task/SalaryReportTask.java
... ... @@ -219,14 +219,17 @@ 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   - ReportSalaryDim reportSalaryDim = saveStaffDim(pool, date, reportSalaryId);
  229 + //如果计算日期 与 报表数据抽取日期不一致,使用计算日期(计算日期每个人都可能不一致)
  230 + Boolean changeStaff = pool.getDataDate().compareTo(dataDate) != 0;
  231 +
  232 + ReportSalaryDim reportSalaryDim = saveStaffDim(pool, dataDate, reportSalaryId);
230 233 userDims.add(reportSalaryDim);
231 234 final Long userId = pool.getUserId();
232 235 final Long reportSalaryDimId = reportSalaryDim.getId();
... ... @@ -236,7 +239,11 @@ public class SalaryReportTask {
236 239 continue;
237 240 }
238 241 final Long salaryGroupProjectId = salaryGroupProject.getId();
239   - reportSalaryValues.add(this.convertDB(salaryGroupProject, reportSalaryDimId, date, 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));
240 247 List<SalaryGroupProjectParamVO> salaryGroupProjectParamVos = salaryGroupProjectParamService.getSalaryGroupProjectParamVO(salaryGroupProject.getId());
241 248  
242 249 if (salaryGroupProject.getCalMethod().equals(SalaryCalMethodEnum.CAR_SERIES)) {
... ... @@ -249,17 +256,18 @@ public class SalaryReportTask {
249 256 if (! paramCodes.add(salaryGroupProjectParam.getIndicatorCode())) {
250 257 continue;
251 258 }
  259 + LocalDate calcDate = (changeStaff) ? pool.getDataDate() : dataDate;
252 260 if (TargetTypeEnum.NO.equals(salaryGroupProjectParam.getTargetType())) {
253 261 //无目标
254   - Map<Long, BigDecimal> userValueMap = queryUserOriginValue(salaryGroupProjectParam.getIndicatorCode(), userId, date);
  262 + Map<Long, BigDecimal> userValueMap = queryUserOriginValue(salaryGroupProjectParam.getIndicatorCode(), userId, calcDate);
255 263 BigDecimal value = userValueMap.getOrDefault(userId, BigDecimal.ZERO);
256   - reportSalaryValues.add(this.convertNoTargetDB(salaryGroupProject, salaryGroupProjectParam, date, reportSalaryDimId, value));
  264 + reportSalaryValues.add(this.convertNoTargetDB(salaryGroupProject, salaryGroupProjectParam, dataDate, reportSalaryDimId, value));
257 265 } else {
258 266 //有目标
259   - Map<Long, SalaryGroupProjectTargetHitLog> targetHitLogMap = queryUserTargetValue(salaryGroupProjectParam.getId(), userId, date);
  267 + Map<Long, SalaryGroupProjectTargetHitLog> targetHitLogMap = queryUserTargetValue(salaryGroupProjectParam.getId(), userId, calcDate);
260 268 SalaryGroupProjectTargetHitLog hitLog = targetHitLogMap.get(userId);
261 269 BigDecimal value = Optional.ofNullable(hitLog).map(SalaryGroupProjectTargetHitLog::getReachValue).orElse(BigDecimal.ZERO);
262   - reportSalaryValues.add(this.convertTargetDB(salaryGroupProject, salaryGroupProjectParam, date, reportSalaryDimId, value));
  270 + reportSalaryValues.add(this.convertTargetDB(salaryGroupProject, salaryGroupProjectParam, dataDate, reportSalaryDimId, value));
263 271 }
264 272 }
265 273 }
... ... @@ -550,6 +558,16 @@ public class SalaryReportTask {
550 558 return userGroupIndicatorHitMap;
551 559 }
552 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 + }
553 571  
554 572  
555 573 public Map<Long, SalaryGroupProjectTargetHitLog> queryUserTargetValue(Long referId, Long userId, LocalDate dataDate) {
... ...
fw-morax-service/src/main/java/cn/fw/morax/service/biz/kpi/KpiGroupBizService.java
... ... @@ -549,10 +549,10 @@ public class KpiGroupBizService {
549 549 .eq(KpiGroup::getStatus, SettingStatusEnum.EFFECTIVE)
550 550 );
551 551 // BV.isTrue(count <= 0, "绩效组名称重复,请重新输入");
552   - if (count > 0) {
553   - log.info("绩效组名称重复,name:{},id:{}: ", name, Optional.ofNullable(id).orElse(0L).toString());
554   - throw new BusinessException("绩效组名称重复,请重新输入");
555   - }
  552 +// if (count > 0) {
  553 +// log.info("绩效组名称重复,name:{},id:{}: ", name, Optional.ofNullable(id).orElse(0L).toString());
  554 +// throw new BusinessException("绩效组名称重复,请重新输入");
  555 +// }
556 556  
557 557 List<SettingDraft> drafts = commonService.getEditDraftByName(name, SettingDraftTypeEnum.KPI, draftId);
558 558 BV.isTrue(drafts.size() <= 0, "绩效组名称在草稿中存在,请重新输入");
... ...