package cn.iocoder.yudao.module.hrm.dal.mysql.employee; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.hrm.controller.admin.employee.vo.HrmEmployeePageReqVO; import cn.iocoder.yudao.module.hrm.dal.dataobject.employee.HrmEmployeeDO; import org.apache.ibatis.annotations.Mapper; import java.util.Collection; import java.util.List; /** * 员工信息 Mapper * * @author 超级管理员 */ @Mapper public interface HrmEmployeeMapper extends BaseMapperX { default HrmEmployeeDO selectByPhone(String phone) { return selectOne(HrmEmployeeDO::getPhone, phone); } default HrmEmployeeDO selectByName(String name) { return selectOne(HrmEmployeeDO::getName, name); } default List selectListByName(String name) { return selectList(HrmEmployeeDO::getName, name); } default HrmEmployeeDO selectByEmployeeNo(String employeeNo) { return selectOne(HrmEmployeeDO::getEmployeeNo, employeeNo); } default HrmEmployeeDO selectByUserId(Long userId) { return selectOne(HrmEmployeeDO::getUserId, userId); } default List selectByDeptId(Long deptId) { return selectList(HrmEmployeeDO::getDeptId, deptId); } default List selectByEmployeeStatus(Integer employeeStatus) { return selectList(HrmEmployeeDO::getEmployeeStatus, employeeStatus); } default PageResult selectPage(HrmEmployeePageReqVO reqVO) { LambdaQueryWrapperX wrapper = new LambdaQueryWrapperX() .likeIfPresent(HrmEmployeeDO::getEmployeeNo, reqVO.getEmployeeNo()) .likeIfPresent(HrmEmployeeDO::getName, reqVO.getName()) .eqIfPresent(HrmEmployeeDO::getDeptId, reqVO.getDeptId()) .eqIfPresent(HrmEmployeeDO::getEmployeeStatus, reqVO.getEmployeeStatus()); appendKeyword(wrapper, reqVO.getKeyword()); wrapper.orderByDesc(HrmEmployeeDO::getId); return selectPage(reqVO, wrapper); } /** * 按部门集合(含子部门)分页查询员工 */ default PageResult selectPageByDeptIds(HrmEmployeePageReqVO reqVO, Collection deptIds) { LambdaQueryWrapperX wrapper = new LambdaQueryWrapperX() .likeIfPresent(HrmEmployeeDO::getEmployeeNo, reqVO.getEmployeeNo()) .likeIfPresent(HrmEmployeeDO::getName, reqVO.getName()) .inIfPresent(HrmEmployeeDO::getDeptId, deptIds) .eqIfPresent(HrmEmployeeDO::getEmployeeStatus, reqVO.getEmployeeStatus()); appendKeyword(wrapper, reqVO.getKeyword()); wrapper.orderByDesc(HrmEmployeeDO::getId); return selectPage(reqVO, wrapper); } /** * 关键词模糊匹配员工编号 / 姓名 / 手机号 */ private void appendKeyword(LambdaQueryWrapperX wrapper, String keyword) { if (StrUtil.isBlank(keyword)) { return; } String kw = keyword.trim(); wrapper.and(w -> w.like(HrmEmployeeDO::getEmployeeNo, kw) .or().like(HrmEmployeeDO::getName, kw) .or().like(HrmEmployeeDO::getPhone, kw)); } default List selectListByStatus(Integer employeeStatus) { return selectList(new LambdaQueryWrapperX() .eqIfPresent(HrmEmployeeDO::getEmployeeStatus, employeeStatus) .orderByAsc(HrmEmployeeDO::getName)); } default Long selectCountBySalaryStructureId(Long salaryStructureId) { return selectCount(HrmEmployeeDO::getSalaryStructureId, salaryStructureId); } }