Browse Source

绩效评价-评价指标模板复制修改

master
CMM 1 year ago
parent
commit
f40796fc27
1 changed files with 67 additions and 13 deletions
  1. +67
    -13
      pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/IndicatorConfigManage.java

+ 67
- 13
pmapi/src/main/java/com/ningdatech/pmapi/performance/manage/IndicatorConfigManage.java View File

@@ -46,6 +46,7 @@ import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;

@@ -375,20 +376,73 @@ public class IndicatorConfigManage {
// 新增指标详情
List<PerformanceIndicatorProjectTemplateDetail> projectTemplateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class)
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, templateId));
// 逐个新增并保存各指标
for (PerformanceIndicatorProjectTemplateDetail projectTemplateDetail : projectTemplateDetails) {
PerformanceIndicatorProjectTemplateDetail newProjectTemplateDetail = new PerformanceIndicatorProjectTemplateDetail();
BeanUtils.copyProperties(projectTemplateDetail, newProjectTemplateDetail);
newProjectTemplateDetail.setTemplateId(newTemplate.getId());
newProjectTemplateDetail.setCreateOn(LocalDateTime.now());
newProjectTemplateDetail.setCreateBy(user.getUsername());
newProjectTemplateDetail.setUpdateOn(LocalDateTime.now());
newProjectTemplateDetail.setUpdateBy(user.getUsername());
// 新的指标ID要置空
newProjectTemplateDetail.setId(null);
indicatorProjectTemplateDetailService.save(newProjectTemplateDetail);
Map<Long, PerformanceIndicatorProjectTemplateDetail> detailMap = projectTemplateDetails.stream().collect(Collectors.toMap(PerformanceIndicatorProjectTemplateDetail::getId, p -> p));
// 按层级逐个新增并保存各指标
// 从三级指标开始
List<PerformanceIndicatorProjectTemplateDetail> thirdList = projectTemplateDetails.stream()
.filter(p -> PerformanceTemplateTypeEnum.THIRD_INDEX.getCode().equals(p.getType()))
.collect(Collectors.toList());
if (CollUtil.isEmpty(thirdList)){
throw new BizException("当前模板未配置三级指!");
}
List<PerformanceIndicatorProjectTemplateDetail> templateDetails = Lists.newArrayList();
for (PerformanceIndicatorProjectTemplateDetail templateDetail : thirdList) {
PerformanceIndicatorProjectTemplateDetail newThirdTemplateDetail = new PerformanceIndicatorProjectTemplateDetail();
BeanUtils.copyProperties(templateDetail, newThirdTemplateDetail);
newThirdTemplateDetail.setTemplateId(newTemplate.getId());
newThirdTemplateDetail.setCreateOn(LocalDateTime.now());
newThirdTemplateDetail.setCreateBy(user.getUsername());
newThirdTemplateDetail.setUpdateOn(LocalDateTime.now());
newThirdTemplateDetail.setUpdateBy(user.getUsername());
// 新的指标ID、parentId要置空
newThirdTemplateDetail.setId(null);
newThirdTemplateDetail.setParentId(null);
indicatorProjectTemplateDetailService.save(newThirdTemplateDetail);
// 再保存关联的二级指标
Long thirdParentId = templateDetail.getParentId();
PerformanceIndicatorProjectTemplateDetail secondTemplateDetail = detailMap.get(thirdParentId);
if (Objects.isNull(secondTemplateDetail)){
throw new BizException("三级指标:" + templateDetail.getName() + "对应的二级指标不存在");
}
PerformanceIndicatorProjectTemplateDetail newSecondTemplateDetail = new PerformanceIndicatorProjectTemplateDetail();
BeanUtils.copyProperties(secondTemplateDetail, newSecondTemplateDetail);
newSecondTemplateDetail.setTemplateId(newTemplate.getId());
newSecondTemplateDetail.setCreateOn(LocalDateTime.now());
newSecondTemplateDetail.setCreateBy(user.getUsername());
newSecondTemplateDetail.setUpdateOn(LocalDateTime.now());
newSecondTemplateDetail.setUpdateBy(user.getUsername());
// 新的指标Id、parentId要置空
newSecondTemplateDetail.setId(null);
newSecondTemplateDetail.setParentId(null);
indicatorProjectTemplateDetailService.save(newSecondTemplateDetail);
// 关联三级指标
newThirdTemplateDetail.setParentId(newSecondTemplateDetail.getId());
templateDetails.add(newThirdTemplateDetail);
// 再保存关联的一级指标
Long secondParentId = secondTemplateDetail.getParentId();
PerformanceIndicatorProjectTemplateDetail firstTemplateDetail = detailMap.get(secondParentId);
if (Objects.isNull(firstTemplateDetail)){
throw new BizException("二级指标:" + secondTemplateDetail.getName() + "对应的一级指标不存在");
}
PerformanceIndicatorProjectTemplateDetail newFirstTemplateDetail = new PerformanceIndicatorProjectTemplateDetail();
BeanUtils.copyProperties(firstTemplateDetail, newFirstTemplateDetail);
newFirstTemplateDetail.setTemplateId(newTemplate.getId());
newFirstTemplateDetail.setCreateOn(LocalDateTime.now());
newFirstTemplateDetail.setCreateBy(user.getUsername());
newFirstTemplateDetail.setUpdateOn(LocalDateTime.now());
newFirstTemplateDetail.setUpdateBy(user.getUsername());
// 新的指标ID、parentId要置空
newFirstTemplateDetail.setId(null);
newFirstTemplateDetail.setParentId(null);
indicatorProjectTemplateDetailService.save(newFirstTemplateDetail);
// 关联二级指标
newSecondTemplateDetail.setParentId(newFirstTemplateDetail.getId());
templateDetails.add(newSecondTemplateDetail);
}
// 批量更新
if (indicatorProjectTemplateDetailService.updateBatchById(templateDetails)) {
return "模版复制成功";
}
return "模版复制成功";
}
return "模版复制失败";
}


Loading…
Cancel
Save