diff --git a/klp-perf/pom.xml b/klp-perf/pom.xml
index 383f73a92..98e4c75d2 100644
--- a/klp-perf/pom.xml
+++ b/klp-perf/pom.xml
@@ -22,6 +22,10 @@
com.klp
klp-common
+
+ com.klp
+ klp-wms
+
diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfSalaryVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfSalaryVo.java
index ae34c92bf..f482dff5b 100644
--- a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfSalaryVo.java
+++ b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfSalaryVo.java
@@ -7,6 +7,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
+import com.klp.domain.WmsEmployeeInfo;
import lombok.Data;
@@ -208,5 +209,8 @@ public class PerfSalaryVo {
@ExcelProperty(value = "备注")
private String remark;
-
+ /**
+ * 关联员工简要信息 (联查 wms_employee_info)
+ */
+ private WmsEmployeeInfo wmsEmployeeInfo;
}
diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfSalaryServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfSalaryServiceImpl.java
index d6d65bcc4..01991b73d 100644
--- a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfSalaryServiceImpl.java
+++ b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfSalaryServiceImpl.java
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.klp.common.utils.StringUtils;
+import com.klp.domain.WmsEmployeeInfo;
+import com.klp.mapper.WmsEmployeeInfoMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.perf.domain.bo.PerfSalaryBo;
@@ -18,6 +20,8 @@ import com.klp.perf.service.IPerfSalaryService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
+import java.util.function.Function;
+import java.util.stream.Collectors;
/**
* 月度薪资计算记录Service业务层处理
@@ -30,9 +34,10 @@ import java.util.Collection;
public class PerfSalaryServiceImpl implements IPerfSalaryService {
private final PerfSalaryMapper baseMapper;
+ private final WmsEmployeeInfoMapper employeeMapper;
/**
- * 查询月度薪资计算记录
+ * 查询月度薪资计算记录(含员工信息)
*/
@Override
public PerfSalaryVo queryById(Long id){
@@ -40,22 +45,52 @@ public class PerfSalaryServiceImpl implements IPerfSalaryService {
}
/**
- * 查询月度薪资计算记录列表
+ * 查询月度薪资计算记录列表(含员工信息)
*/
@Override
public TableDataInfo queryPageList(PerfSalaryBo bo, PageQuery pageQuery) {
LambdaQueryWrapper lqw = buildQueryWrapper(bo);
Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ attachEmployeeInfo(result.getRecords());
return TableDataInfo.build(result);
}
/**
- * 查询月度薪资计算记录列表
+ * 查询月度薪资计算记录列表(含员工信息)
*/
@Override
public List queryList(PerfSalaryBo bo) {
LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- return baseMapper.selectVoList(lqw);
+ List list = baseMapper.selectVoList(lqw);
+ attachEmployeeInfo(list);
+ return list;
+ }
+
+ /**
+ * 批量填充员工简要信息 (避免 N+1 查询)
+ */
+ private void attachEmployeeInfo(List voList) {
+ if (voList == null || voList.isEmpty()) {
+ return;
+ }
+ List employeeIds = voList.stream()
+ .map(PerfSalaryVo::getEmployeeId)
+ .filter(id -> id != null)
+ .distinct()
+ .collect(Collectors.toList());
+ if (employeeIds.isEmpty()) {
+ return;
+ }
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.in(WmsEmployeeInfo::getInfoId, employeeIds);
+ List employees = employeeMapper.selectList(lqw);
+ Map empMap = employees.stream()
+ .collect(Collectors.toMap(WmsEmployeeInfo::getInfoId, Function.identity()));
+ for (PerfSalaryVo vo : voList) {
+ if (vo.getEmployeeId() != null) {
+ vo.setWmsEmployeeInfo(empMap.get(vo.getEmployeeId()));
+ }
+ }
}
private LambdaQueryWrapper buildQueryWrapper(PerfSalaryBo bo) {