feat(perf): 查询岗位绩效考核模板时返回维度明细数据

- 添加 PerfTemplateDimensionVo 和 PerfTemplateDimension 实体类引用
- 注入 PerfTemplateDimensionMapper 数据访问层实例
- 修改 queryById 方法查询模板详情时关联查询维度明细
- 修改 queryPageList 方法分页查询时批量附加维度明细数据
- 修改 queryList 方法列表查询时批量附加维度明细数据
- 新增 attachDimensionList 私有方法实现批量填充维度明细逻辑
- 在 PerfPositionTemplateVo 中新增 dimensionList 字段存储维度明细列表
- 更新方法注释明确标识查询操作包含维度明细信息
This commit is contained in:
2026-07-09 15:00:01 +08:00
parent 39dae0b357
commit 950d9cf614
2 changed files with 46 additions and 5 deletions

View File

@@ -1,5 +1,6 @@
package com.klp.perf.domain.vo; package com.klp.perf.domain.vo;
import java.util.List;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.annotation.ExcelDictFormat;
@@ -55,5 +56,10 @@ public class PerfPositionTemplateVo {
@ExcelProperty(value = "备注") @ExcelProperty(value = "备注")
private String remark; private String remark;
/**
* 考核维度明细列表
*/
private List<PerfTemplateDimensionVo> dimensionList;
} }

View File

@@ -11,13 +11,18 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.klp.perf.domain.bo.PerfPositionTemplateBo; import com.klp.perf.domain.bo.PerfPositionTemplateBo;
import com.klp.perf.domain.vo.PerfPositionTemplateVo; 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.PerfPositionTemplate;
import com.klp.perf.domain.PerfTemplateDimension;
import com.klp.perf.mapper.PerfPositionTemplateMapper; import com.klp.perf.mapper.PerfPositionTemplateMapper;
import com.klp.perf.mapper.PerfTemplateDimensionMapper;
import com.klp.perf.service.IPerfPositionTemplateService; import com.klp.perf.service.IPerfPositionTemplateService;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.stream.Collectors;
/** /**
* 岗位绩效考核模板Service业务层处理 * 岗位绩效考核模板Service业务层处理
@@ -30,32 +35,62 @@ import java.util.Collection;
public class PerfPositionTemplateServiceImpl implements IPerfPositionTemplateService { public class PerfPositionTemplateServiceImpl implements IPerfPositionTemplateService {
private final PerfPositionTemplateMapper baseMapper; private final PerfPositionTemplateMapper baseMapper;
private final PerfTemplateDimensionMapper dimensionMapper;
/** /**
* 查询岗位绩效考核模板 * 查询岗位绩效考核模板(含维度明细)
*/ */
@Override @Override
public PerfPositionTemplateVo queryById(Long id){ public PerfPositionTemplateVo queryById(Long id){
return baseMapper.selectVoById(id); PerfPositionTemplateVo vo = baseMapper.selectVoById(id);
if (vo != null) {
LambdaQueryWrapper<PerfTemplateDimension> dimLqw = Wrappers.lambdaQuery();
dimLqw.eq(PerfTemplateDimension::getTemplateId, id);
vo.setDimensionList(dimensionMapper.selectVoList(dimLqw));
}
return vo;
} }
/** /**
* 查询岗位绩效考核模板列表 * 查询岗位绩效考核模板列表(含维度明细)
*/ */
@Override @Override
public TableDataInfo<PerfPositionTemplateVo> queryPageList(PerfPositionTemplateBo bo, PageQuery pageQuery) { public TableDataInfo<PerfPositionTemplateVo> queryPageList(PerfPositionTemplateBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<PerfPositionTemplate> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<PerfPositionTemplate> lqw = buildQueryWrapper(bo);
Page<PerfPositionTemplateVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<PerfPositionTemplateVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
attachDimensionList(result.getRecords());
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
/** /**
* 查询岗位绩效考核模板列表 * 查询岗位绩效考核模板列表(含维度明细)
*/ */
@Override @Override
public List<PerfPositionTemplateVo> queryList(PerfPositionTemplateBo bo) { public List<PerfPositionTemplateVo> queryList(PerfPositionTemplateBo bo) {
LambdaQueryWrapper<PerfPositionTemplate> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<PerfPositionTemplate> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw); List<PerfPositionTemplateVo> list = baseMapper.selectVoList(lqw);
attachDimensionList(list);
return list;
}
/**
* 批量填充维度明细到模板Vo列表
*/
private void attachDimensionList(List<PerfPositionTemplateVo> voList) {
if (voList == null || voList.isEmpty()) {
return;
}
List<Long> templateIds = voList.stream()
.map(PerfPositionTemplateVo::getId)
.collect(Collectors.toList());
LambdaQueryWrapper<PerfTemplateDimension> dimLqw = Wrappers.lambdaQuery();
dimLqw.in(PerfTemplateDimension::getTemplateId, templateIds);
List<PerfTemplateDimensionVo> allDimensions = dimensionMapper.selectVoList(dimLqw);
Map<Long, List<PerfTemplateDimensionVo>> dimMap = allDimensions.stream()
.collect(Collectors.groupingBy(PerfTemplateDimensionVo::getTemplateId));
for (PerfPositionTemplateVo vo : voList) {
vo.setDimensionList(dimMap.getOrDefault(vo.getId(), Collections.emptyList()));
}
} }
private LambdaQueryWrapper<PerfPositionTemplate> buildQueryWrapper(PerfPositionTemplateBo bo) { private LambdaQueryWrapper<PerfPositionTemplate> buildQueryWrapper(PerfPositionTemplateBo bo) {