3 天以前 b852254d90e7d1955db31db154193ec8ee84d8b3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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));
    }
 
}