package cn.iocoder.yudao.module.hrm.dal.mysql.certificate;
|
|
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.certificate.vo.HrmCertificatePageReqVO;
|
import cn.iocoder.yudao.module.hrm.dal.dataobject.certificate.HrmCertificateDO;
|
import org.apache.ibatis.annotations.Mapper;
|
|
import java.time.LocalDate;
|
import java.util.List;
|
|
/**
|
* HRM 证书资质 Mapper
|
*
|
* @author xiaoyi
|
*/
|
@Mapper
|
public interface HrmCertificateMapper extends BaseMapperX<HrmCertificateDO> {
|
|
/**
|
* 到期提醒天数
|
*/
|
int REMIND_DAYS = 30;
|
|
default PageResult<HrmCertificateDO> selectPage(HrmCertificatePageReqVO reqVO) {
|
LambdaQueryWrapperX<HrmCertificateDO> query = new LambdaQueryWrapperX<HrmCertificateDO>()
|
.eqIfPresent(HrmCertificateDO::getEmployeeId, reqVO.getEmployeeId())
|
.eqIfPresent(HrmCertificateDO::getCertType, reqVO.getCertType())
|
.likeIfPresent(HrmCertificateDO::getCertName, reqVO.getCertName());
|
// 到期类型筛选(配合合规列表/待办提醒):1=即将到期,2=已过期
|
if (reqVO.getExpiryType() != null) {
|
LocalDate today = LocalDate.now();
|
if (reqVO.getExpiryType() == 1) { // 即将到期
|
query.between(HrmCertificateDO::getExpireDate, today, today.plusDays(REMIND_DAYS));
|
} else if (reqVO.getExpiryType() == 2) { // 已过期
|
query.isNotNull(HrmCertificateDO::getExpireDate)
|
.lt(HrmCertificateDO::getExpireDate, today);
|
}
|
}
|
return selectPage(reqVO, query.orderByDesc(HrmCertificateDO::getId));
|
}
|
|
/**
|
* 查询有效期落在 [start, end] 之间的证书(到期提醒用)
|
*
|
* @param start 起始日期
|
* @param end 截止日期
|
* @return 即将到期证书列表
|
*/
|
default List<HrmCertificateDO> selectListByExpireDateBetween(LocalDate start, LocalDate end) {
|
return selectList(new LambdaQueryWrapperX<HrmCertificateDO>()
|
.isNotNull(HrmCertificateDO::getExpireDate)
|
.between(HrmCertificateDO::getExpireDate, start, end));
|
}
|
|
}
|