From 950d9cf614deec56cdde2bb5bf7118af4ee5833e Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Thu, 9 Jul 2026 15:00:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(perf):=20=E6=9F=A5=E8=AF=A2=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E7=BB=A9=E6=95=88=E8=80=83=E6=A0=B8=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=97=B6=E8=BF=94=E5=9B=9E=E7=BB=B4=E5=BA=A6=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 PerfTemplateDimensionVo 和 PerfTemplateDimension 实体类引用 - 注入 PerfTemplateDimensionMapper 数据访问层实例 - 修改 queryById 方法查询模板详情时关联查询维度明细 - 修改 queryPageList 方法分页查询时批量附加维度明细数据 - 修改 queryList 方法列表查询时批量附加维度明细数据 - 新增 attachDimensionList 私有方法实现批量填充维度明细逻辑 - 在 PerfPositionTemplateVo 中新增 dimensionList 字段存储维度明细列表 - 更新方法注释明确标识查询操作包含维度明细信息 --- .../domain/vo/PerfPositionTemplateVo.java | 6 +++ .../impl/PerfPositionTemplateServiceImpl.java | 45 ++++++++++++++++--- 2 files changed, 46 insertions(+), 5 deletions(-) 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) {