tuqin
8 天以前 de754f277f7cef20206c5f30fee6e033c426a554
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.mes.dal.mysql.safety;
 
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.mes.controller.admin.safety.vo.certificate.MesSafetyCertificatePageReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.safety.MesSafetyCertificateDO;
import org.apache.ibatis.annotations.Mapper;
 
import java.time.LocalDate;
import java.util.List;
 
/**
 * 安全生产 - 安全资格证书 Mapper
 *
 * @author 超级管理员
 */
@Mapper
public interface MesSafetyCertificateMapper extends BaseMapperX<MesSafetyCertificateDO> {
 
    default PageResult<MesSafetyCertificateDO> selectPage(MesSafetyCertificatePageReqVO reqVO) {
        LambdaQueryWrapperX<MesSafetyCertificateDO> wrapper = new LambdaQueryWrapperX<MesSafetyCertificateDO>()
                .eqIfPresent(MesSafetyCertificateDO::getUserId, reqVO.getUserId())
                .eqIfPresent(MesSafetyCertificateDO::getCertType, reqVO.getCertType())
                .likeIfPresent(MesSafetyCertificateDO::getCertNo, reqVO.getCertNo())
                .eqIfPresent(MesSafetyCertificateDO::getStatus, reqVO.getStatus());
        // 只看即将到期(含已过期):expireDate 在今天+30 之前
        if (Boolean.TRUE.equals(reqVO.getExpiringSoon())) {
            LocalDate today = LocalDate.now();
            wrapper.isNotNull(MesSafetyCertificateDO::getExpireDate)
                    .le(MesSafetyCertificateDO::getExpireDate, today.plusDays(30));
        }
        wrapper.orderByAsc(MesSafetyCertificateDO::getExpireDate)
                .orderByDesc(MesSafetyCertificateDO::getId);
        return selectPage(reqVO, wrapper);
    }
 
    default MesSafetyCertificateDO selectByCertNo(String certNo) {
        return selectOne(MesSafetyCertificateDO::getCertNo, certNo);
    }
 
    /**
     * 统计有效但已过期的证书数量
     */
    default Long selectCountExpired(LocalDate today) {
        return selectCount(new LambdaQueryWrapperX<MesSafetyCertificateDO>()
                .eq(MesSafetyCertificateDO::getStatus, MesSafetyCertificateDO.STATUS_VALID)
                .isNotNull(MesSafetyCertificateDO::getExpireDate)
                .lt(MesSafetyCertificateDO::getExpireDate, today));
    }
 
    default List<MesSafetyCertificateDO> selectAllList() {
        return selectList(new LambdaQueryWrapperX<MesSafetyCertificateDO>()
                .orderByAsc(MesSafetyCertificateDO::getExpireDate));
    }
 
}