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/controller/PerfEmployeeInfoController.java b/klp-perf/src/main/java/com/klp/perf/controller/PerfEmployeeInfoController.java deleted file mode 100644 index 5d18464cc..000000000 --- a/klp-perf/src/main/java/com/klp/perf/controller/PerfEmployeeInfoController.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.klp.perf.controller; - -import java.util.List; -import java.util.Arrays; - -import lombok.RequiredArgsConstructor; -import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.*; -import org.springframework.web.bind.annotation.*; -import org.springframework.validation.annotation.Validated; -import com.klp.common.annotation.RepeatSubmit; -import com.klp.common.annotation.Log; -import com.klp.common.core.controller.BaseController; -import com.klp.common.core.domain.PageQuery; -import com.klp.common.core.domain.R; -import com.klp.common.core.validate.AddGroup; -import com.klp.common.core.validate.EditGroup; -import com.klp.common.enums.BusinessType; -import com.klp.common.utils.poi.ExcelUtil; -import com.klp.perf.domain.vo.PerfEmployeeInfoVo; -import com.klp.perf.domain.bo.PerfEmployeeInfoBo; -import com.klp.perf.service.IPerfEmployeeInfoService; -import com.klp.common.core.page.TableDataInfo; - -/** - * 员工绩效薪资基本信息 - * - * @author klp - * @date 2026-07-07 - */ -@Validated -@RequiredArgsConstructor -@RestController -@RequestMapping("/perf/employeeInfo") -public class PerfEmployeeInfoController extends BaseController { - - private final IPerfEmployeeInfoService iPerfEmployeeInfoService; - - /** - * 查询员工绩效薪资基本信息列表 - */ - @GetMapping("/list") - public TableDataInfo list(PerfEmployeeInfoBo bo, PageQuery pageQuery) { - return iPerfEmployeeInfoService.queryPageList(bo, pageQuery); - } - - /** - * 导出员工绩效薪资基本信息列表 - */ - @Log(title = "员工绩效薪资基本信息", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(PerfEmployeeInfoBo bo, HttpServletResponse response) { - List list = iPerfEmployeeInfoService.queryList(bo); - ExcelUtil.exportExcel(list, "员工绩效薪资基本信息", PerfEmployeeInfoVo.class, response); - } - - /** - * 获取员工绩效薪资基本信息详细信息 - * - * @param id 主键 - */ - @GetMapping("/{id}") - public R getInfo(@NotNull(message = "主键不能为空") - @PathVariable Long id) { - return R.ok(iPerfEmployeeInfoService.queryById(id)); - } - - /** - * 新增员工绩效薪资基本信息 - */ - @Log(title = "员工绩效薪资基本信息", businessType = BusinessType.INSERT) - @RepeatSubmit() - @PostMapping() - public R add(@Validated(AddGroup.class) @RequestBody PerfEmployeeInfoBo bo) { - return toAjax(iPerfEmployeeInfoService.insertByBo(bo)); - } - - /** - * 修改员工绩效薪资基本信息 - */ - @Log(title = "员工绩效薪资基本信息", businessType = BusinessType.UPDATE) - @RepeatSubmit() - @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody PerfEmployeeInfoBo bo) { - return toAjax(iPerfEmployeeInfoService.updateByBo(bo)); - } - - /** - * 删除员工绩效薪资基本信息 - * - * @param ids 主键串 - */ - @Log(title = "员工绩效薪资基本信息", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] ids) { - return toAjax(iPerfEmployeeInfoService.deleteWithValidByIds(Arrays.asList(ids), true)); - } -} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/PerfEmployeeInfo.java b/klp-perf/src/main/java/com/klp/perf/domain/PerfEmployeeInfo.java deleted file mode 100644 index 64d05d1f7..000000000 --- a/klp-perf/src/main/java/com/klp/perf/domain/PerfEmployeeInfo.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.klp.perf.domain; - -import com.baomidou.mybatisplus.annotation.*; -import com.klp.common.core.domain.BaseEntity; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.math.BigDecimal; - -/** - * 员工绩效薪资基本信息对象 perf_employee_info - * - * @author klp - * @date 2026-07-07 - */ -@Data -@EqualsAndHashCode(callSuper = true) -@TableName("perf_employee_info") -public class PerfEmployeeInfo extends BaseEntity { - - private static final long serialVersionUID=1L; - - /** - * - */ - @TableId(value = "id") - private Long id; - /** - * 关联现有员工表主键 - */ - private Long employeeId; - /** - * 关联 perf_dept.id (冗余,便于按部门查询) - */ - private Long deptId; - /** - * 岗位/工种 - */ - private String positionName; - /** - * 底薪(元) - */ - private BigDecimal baseSalary; - /** - * 岗位绩效基数(元), 默认≈底薪×20% - */ - private BigDecimal perfBase; - /** - * 默认岗位系数(初始值,后续月度由绩效自动覆盖) - */ - private BigDecimal posCoeffDefault; - /** - * 是否在职 1=在职 0=离职 - */ - private Long isActive; - /** - * 删除标志(0=正常,1=已删除) - */ - @TableLogic - private Integer delFlag; - /** - * 备注 - */ - private String remark; - -} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfEmployeeInfoBo.java b/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfEmployeeInfoBo.java deleted file mode 100644 index ed01261b7..000000000 --- a/klp-perf/src/main/java/com/klp/perf/domain/bo/PerfEmployeeInfoBo.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.klp.perf.domain.bo; - -import com.klp.common.core.domain.BaseEntity; -import lombok.Data; -import lombok.EqualsAndHashCode; -import javax.validation.constraints.*; - -import java.math.BigDecimal; - -/** - * 员工绩效薪资基本信息业务对象 perf_employee_info - * - * @author klp - * @date 2026-07-07 - */ - -@Data -@EqualsAndHashCode(callSuper = true) -public class PerfEmployeeInfoBo extends BaseEntity { - - /** - * - */ - private Long id; - - /** - * 关联现有员工表主键 - */ - private Long employeeId; - - /** - * 关联 perf_dept.id (冗余,便于按部门查询) - */ - private Long deptId; - - /** - * 岗位/工种 - */ - private String positionName; - - /** - * 底薪(元) - */ - private BigDecimal baseSalary; - - /** - * 岗位绩效基数(元), 默认≈底薪×20% - */ - private BigDecimal perfBase; - - /** - * 默认岗位系数(初始值,后续月度由绩效自动覆盖) - */ - private BigDecimal posCoeffDefault; - - /** - * 是否在职 1=在职 0=离职 - */ - private Long isActive; - - /** - * 备注 - */ - private String remark; - - -} diff --git a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfEmployeeInfoVo.java b/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfEmployeeInfoVo.java deleted file mode 100644 index 86aa50faa..000000000 --- a/klp-perf/src/main/java/com/klp/perf/domain/vo/PerfEmployeeInfoVo.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.klp.perf.domain.vo; - -import java.math.BigDecimal; -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 lombok.Data; - - -/** - * 员工绩效薪资基本信息视图对象 perf_employee_info - * - * @author klp - * @date 2026-07-07 - */ -@Data -@ExcelIgnoreUnannotated -public class PerfEmployeeInfoVo { - - private static final long serialVersionUID = 1L; - - /** - * - */ - @ExcelProperty(value = "") - private Long id; - - /** - * 关联现有员工表主键 - */ - @ExcelProperty(value = "关联现有员工表主键") - private Long employeeId; - - /** - * 关联 perf_dept.id (冗余,便于按部门查询) - */ - @ExcelProperty(value = "关联 perf_dept.id (冗余,便于按部门查询)") - private Long deptId; - - /** - * 岗位/工种 - */ - @ExcelProperty(value = "岗位/工种") - private String positionName; - - /** - * 底薪(元) - */ - @ExcelProperty(value = "底薪(元)") - private BigDecimal baseSalary; - - /** - * 岗位绩效基数(元), 默认≈底薪×20% - */ - @ExcelProperty(value = "岗位绩效基数(元), 默认≈底薪×20%") - private BigDecimal perfBase; - - /** - * 默认岗位系数(初始值,后续月度由绩效自动覆盖) - */ - @ExcelProperty(value = "默认岗位系数(初始值,后续月度由绩效自动覆盖)") - private BigDecimal posCoeffDefault; - - /** - * 是否在职 1=在职 0=离职 - */ - @ExcelProperty(value = "是否在职 1=在职 0=离职") - private Long isActive; - - /** - * 备注 - */ - @ExcelProperty(value = "备注") - private String remark; - - -} 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/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/mapper/PerfEmployeeInfoMapper.java b/klp-perf/src/main/java/com/klp/perf/mapper/PerfEmployeeInfoMapper.java deleted file mode 100644 index df9a2467e..000000000 --- a/klp-perf/src/main/java/com/klp/perf/mapper/PerfEmployeeInfoMapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.klp.perf.mapper; - -import com.klp.perf.domain.PerfEmployeeInfo; -import com.klp.perf.domain.vo.PerfEmployeeInfoVo; -import com.klp.common.core.mapper.BaseMapperPlus; - -/** - * 员工绩效薪资基本信息Mapper接口 - * - * @author klp - * @date 2026-07-07 - */ -public interface PerfEmployeeInfoMapper extends BaseMapperPlus { - -} diff --git a/klp-perf/src/main/java/com/klp/perf/service/IPerfEmployeeInfoService.java b/klp-perf/src/main/java/com/klp/perf/service/IPerfEmployeeInfoService.java deleted file mode 100644 index 9c76f822c..000000000 --- a/klp-perf/src/main/java/com/klp/perf/service/IPerfEmployeeInfoService.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.klp.perf.service; - -import com.klp.perf.domain.PerfEmployeeInfo; -import com.klp.perf.domain.vo.PerfEmployeeInfoVo; -import com.klp.perf.domain.bo.PerfEmployeeInfoBo; -import com.klp.common.core.page.TableDataInfo; -import com.klp.common.core.domain.PageQuery; - -import java.util.Collection; -import java.util.List; - -/** - * 员工绩效薪资基本信息Service接口 - * - * @author klp - * @date 2026-07-07 - */ -public interface IPerfEmployeeInfoService { - - /** - * 查询员工绩效薪资基本信息 - */ - PerfEmployeeInfoVo queryById(Long id); - - /** - * 查询员工绩效薪资基本信息列表 - */ - TableDataInfo queryPageList(PerfEmployeeInfoBo bo, PageQuery pageQuery); - - /** - * 查询员工绩效薪资基本信息列表 - */ - List queryList(PerfEmployeeInfoBo bo); - - /** - * 新增员工绩效薪资基本信息 - */ - Boolean insertByBo(PerfEmployeeInfoBo bo); - - /** - * 修改员工绩效薪资基本信息 - */ - Boolean updateByBo(PerfEmployeeInfoBo bo); - - /** - * 校验并批量删除员工绩效薪资基本信息信息 - */ - Boolean deleteWithValidByIds(Collection ids, Boolean isValid); -} diff --git a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfEmployeeInfoServiceImpl.java b/klp-perf/src/main/java/com/klp/perf/service/impl/PerfEmployeeInfoServiceImpl.java deleted file mode 100644 index 58ce5e835..000000000 --- a/klp-perf/src/main/java/com/klp/perf/service/impl/PerfEmployeeInfoServiceImpl.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.klp.perf.service.impl; - -import cn.hutool.core.bean.BeanUtil; -import com.klp.common.core.page.TableDataInfo; -import com.klp.common.core.domain.PageQuery; -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 lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import com.klp.perf.domain.bo.PerfEmployeeInfoBo; -import com.klp.perf.domain.vo.PerfEmployeeInfoVo; -import com.klp.perf.domain.PerfEmployeeInfo; -import com.klp.perf.mapper.PerfEmployeeInfoMapper; -import com.klp.perf.service.IPerfEmployeeInfoService; - -import java.util.List; -import java.util.Map; -import java.util.Collection; - -/** - * 员工绩效薪资基本信息Service业务层处理 - * - * @author klp - * @date 2026-07-07 - */ -@RequiredArgsConstructor -@Service -public class PerfEmployeeInfoServiceImpl implements IPerfEmployeeInfoService { - - private final PerfEmployeeInfoMapper baseMapper; - - /** - * 查询员工绩效薪资基本信息 - */ - @Override - public PerfEmployeeInfoVo queryById(Long id){ - return baseMapper.selectVoById(id); - } - - /** - * 查询员工绩效薪资基本信息列表 - */ - @Override - public TableDataInfo queryPageList(PerfEmployeeInfoBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); - } - - /** - * 查询员工绩效薪资基本信息列表 - */ - @Override - public List queryList(PerfEmployeeInfoBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); - } - - private LambdaQueryWrapper buildQueryWrapper(PerfEmployeeInfoBo bo) { - Map params = bo.getParams(); - LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(bo.getEmployeeId() != null, PerfEmployeeInfo::getEmployeeId, bo.getEmployeeId()); - lqw.eq(bo.getDeptId() != null, PerfEmployeeInfo::getDeptId, bo.getDeptId()); - lqw.like(StringUtils.isNotBlank(bo.getPositionName()), PerfEmployeeInfo::getPositionName, bo.getPositionName()); - lqw.eq(bo.getBaseSalary() != null, PerfEmployeeInfo::getBaseSalary, bo.getBaseSalary()); - lqw.eq(bo.getPerfBase() != null, PerfEmployeeInfo::getPerfBase, bo.getPerfBase()); - lqw.eq(bo.getPosCoeffDefault() != null, PerfEmployeeInfo::getPosCoeffDefault, bo.getPosCoeffDefault()); - lqw.eq(bo.getIsActive() != null, PerfEmployeeInfo::getIsActive, bo.getIsActive()); - return lqw; - } - - /** - * 新增员工绩效薪资基本信息 - */ - @Override - public Boolean insertByBo(PerfEmployeeInfoBo bo) { - PerfEmployeeInfo add = BeanUtil.toBean(bo, PerfEmployeeInfo.class); - validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - } - return flag; - } - - /** - * 修改员工绩效薪资基本信息 - */ - @Override - public Boolean updateByBo(PerfEmployeeInfoBo bo) { - PerfEmployeeInfo update = BeanUtil.toBean(bo, PerfEmployeeInfo.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; - } - - /** - * 保存前的数据校验 - */ - private void validEntityBeforeSave(PerfEmployeeInfo entity){ - //TODO 做一些数据校验,如唯一约束 - } - - /** - * 批量删除员工绩效薪资基本信息 - */ - @Override - public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { - if(isValid){ - //TODO 做一些业务上的校验,判断是否需要校验 - } - return baseMapper.deleteBatchIds(ids) > 0; - } -} 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) { 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) { diff --git a/klp-perf/src/main/resources/mapper/perf/PerfEmployeeInfoMapper.xml b/klp-perf/src/main/resources/mapper/perf/PerfEmployeeInfoMapper.xml deleted file mode 100644 index 17bb24965..000000000 --- a/klp-perf/src/main/resources/mapper/perf/PerfEmployeeInfoMapper.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/klp-ui/src/components/HomeModules/QuickAccessGroup.vue b/klp-ui/src/components/HomeModules/QuickAccessGroup.vue index a67540c56..dba44d84b 100644 --- a/klp-ui/src/components/HomeModules/QuickAccessGroup.vue +++ b/klp-ui/src/components/HomeModules/QuickAccessGroup.vue @@ -24,8 +24,8 @@ {{ mergedItemsText }} --> - - + +