package cn.iocoder.yudao.module.hrm.dal.mysql.employee;
|
|
import cn.hutool.core.collection.CollUtil;
|
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 org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Select;
|
|
import java.util.Collection;
|
import java.util.List;
|
|
/**
|
* 员工信息 Mapper
|
*
|
* @author 超级管理员
|
*/
|
@Mapper
|
public interface HrmEmployeeMapper extends BaseMapperX<HrmEmployeeDO> {
|
|
default HrmEmployeeDO selectByPhone(String phone) {
|
return selectOne(HrmEmployeeDO::getPhone, phone);
|
}
|
|
/**
|
* 按手机号查询员工,<b>包含已软删除的记录</b>
|
*
|
* <p>用于释放「软删除但仍占用唯一索引」的历史手机号:
|
* hrm_employee.uk_phone 建在 phone 列上(不含 deleted),
|
* 而 {@link #selectByPhone(String)} 会被逻辑删除插件过滤掉 deleted=1 的行,
|
* 导致预校验查不到、写库时却撞唯一索引,最终抛 DuplicateKeyException 变成 500。</p>
|
*/
|
@Select("SELECT * FROM hrm_employee WHERE phone = #{phone} LIMIT 1")
|
HrmEmployeeDO selectByPhoneIncludeDeleted(@Param("phone") String phone);
|
|
default HrmEmployeeDO selectByName(String name) {
|
return selectOne(HrmEmployeeDO::getName, name);
|
}
|
|
default List<HrmEmployeeDO> 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<HrmEmployeeDO> selectByDeptId(Long deptId) {
|
return selectList(HrmEmployeeDO::getDeptId, deptId);
|
}
|
|
default List<HrmEmployeeDO> selectByEmployeeStatus(Integer employeeStatus) {
|
return selectList(HrmEmployeeDO::getEmployeeStatus, employeeStatus);
|
}
|
|
default PageResult<HrmEmployeeDO> selectPage(HrmEmployeePageReqVO reqVO) {
|
return selectPage(reqVO, new LambdaQueryWrapperX<HrmEmployeeDO>()
|
.likeIfPresent(HrmEmployeeDO::getEmployeeNo, reqVO.getEmployeeNo())
|
.likeIfPresent(HrmEmployeeDO::getName, reqVO.getName())
|
.eqIfPresent(HrmEmployeeDO::getDeptId, reqVO.getDeptId())
|
.eqIfPresent(HrmEmployeeDO::getEmployeeStatus, reqVO.getEmployeeStatus())
|
.orderByDesc(HrmEmployeeDO::getId));
|
}
|
|
default List<HrmEmployeeDO> selectListByStatus(Integer employeeStatus) {
|
return selectList(new LambdaQueryWrapperX<HrmEmployeeDO>()
|
.eqIfPresent(HrmEmployeeDO::getEmployeeStatus, employeeStatus)
|
.orderByAsc(HrmEmployeeDO::getName));
|
}
|
|
default List<HrmEmployeeDO> selectListByTeamIds(Collection<Long> teamIds) {
|
return selectList(new LambdaQueryWrapperX<HrmEmployeeDO>()
|
.inIfPresent(HrmEmployeeDO::getTeamId, CollUtil.isNotEmpty(teamIds) ? teamIds : null)
|
.orderByAsc(HrmEmployeeDO::getName));
|
}
|
|
}
|