3 天以前 b852254d90e7d1955db31db154193ec8ee84d8b3
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/certificate/HrmCertificateMapper.java
@@ -7,6 +7,9 @@
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
 *
@@ -15,12 +18,40 @@
@Mapper
public interface HrmCertificateMapper extends BaseMapperX<HrmCertificateDO> {
    /**
     * 到期提醒天数
     */
    int REMIND_DAYS = 30;
    default PageResult<HrmCertificateDO> selectPage(HrmCertificatePageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<HrmCertificateDO>()
        LambdaQueryWrapperX<HrmCertificateDO> query = new LambdaQueryWrapperX<HrmCertificateDO>()
                .eqIfPresent(HrmCertificateDO::getEmployeeId, reqVO.getEmployeeId())
                .eqIfPresent(HrmCertificateDO::getCertType, reqVO.getCertType())
                .likeIfPresent(HrmCertificateDO::getCertName, reqVO.getCertName())
                .orderByDesc(HrmCertificateDO::getId));
                .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));
    }
}