diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfPositionTemplateVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfPositionTemplateVo.java index 1f68d98b8..8af07c188 100644 --- a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfPositionTemplateVo.java +++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfPositionTemplateVo.java @@ -1,5 +1,6 @@ package com.klp.perf.domain.vo; +import java.util.List; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.klp.common.annotation.ExcelDictFormat; @@ -55,5 +56,10 @@ public class PerfPositionTemplateVo { @ExcelProperty(value = "备注") private String remark; + /** + * 考核维度明细列表 + */ + private List dimensionList; + } diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfPositionTemplateServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfPositionTemplateServiceImpl.java index f3221a8b8..fa8ee8e1f 100644 --- a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfPositionTemplateServiceImpl.java +++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfPositionTemplateServiceImpl.java @@ -11,13 +11,18 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.perf.domain.bo.PerfPositionTemplateBo; import com.klp.perf.domain.vo.PerfPositionTemplateVo; +import com.klp.perf.domain.vo.PerfTemplateDimensionVo; import com.klp.perf.domain.PerfPositionTemplate; +import com.klp.perf.domain.PerfTemplateDimension; import com.klp.perf.mapper.PerfPositionTemplateMapper; +import com.klp.perf.mapper.PerfTemplateDimensionMapper; import com.klp.perf.service.IPerfPositionTemplateService; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.Collections; +import java.util.stream.Collectors; /** * 岗位绩效考核模板Service业务层处理 @@ -30,32 +35,62 @@ import java.util.Collection; public class PerfPositionTemplateServiceImpl implements IPerfPositionTemplateService { private final PerfPositionTemplateMapper baseMapper; + private final PerfTemplateDimensionMapper dimensionMapper; /** - * 查询岗位绩效考核模板 + * 查询岗位绩效考核模板(含维度明细) */ @Override public PerfPositionTemplateVo queryById(Long id){ - return baseMapper.selectVoById(id); + PerfPositionTemplateVo vo = baseMapper.selectVoById(id); + if (vo != null) { + LambdaQueryWrapper dimLqw = Wrappers.lambdaQuery(); + dimLqw.eq(PerfTemplateDimension::getTemplateId, id); + vo.setDimensionList(dimensionMapper.selectVoList(dimLqw)); + } + return vo; } /** - * 查询岗位绩效考核模板列表 + * 查询岗位绩效考核模板列表(含维度明细) */ @Override public TableDataInfo queryPageList(PerfPositionTemplateBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + attachDimensionList(result.getRecords()); return TableDataInfo.build(result); } /** - * 查询岗位绩效考核模板列表 + * 查询岗位绩效考核模板列表(含维度明细) */ @Override public List queryList(PerfPositionTemplateBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + List list = baseMapper.selectVoList(lqw); + attachDimensionList(list); + return list; + } + + /** + * 批量填充维度明细到模板Vo列表 + */ + private void attachDimensionList(List voList) { + if (voList == null || voList.isEmpty()) { + return; + } + List templateIds = voList.stream() + .map(PerfPositionTemplateVo::getId) + .collect(Collectors.toList()); + LambdaQueryWrapper dimLqw = Wrappers.lambdaQuery(); + dimLqw.in(PerfTemplateDimension::getTemplateId, templateIds); + List allDimensions = dimensionMapper.selectVoList(dimLqw); + Map> dimMap = allDimensions.stream() + .collect(Collectors.groupingBy(PerfTemplateDimensionVo::getTemplateId)); + for (PerfPositionTemplateVo vo : voList) { + vo.setDimensionList(dimMap.getOrDefault(vo.getId(), Collections.emptyList())); + } } private LambdaQueryWrapper buildQueryWrapper(PerfPositionTemplateBo bo) {