From b852254d90e7d1955db31db154193ec8ee84d8b3 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 09 九月 2026 10:57:59 +0800
Subject: [PATCH] feat(hrm): 新增员工用工性质、班组归属字段及考勤异常处理优化

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/certificate/HrmCertificateMapper.java |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/certificate/HrmCertificateMapper.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/certificate/HrmCertificateMapper.java
index 2f6adbe..a973b94 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/dal/mysql/certificate/HrmCertificateMapper.java
+++ b/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));
     }
 
 }

--
Gitblit v1.9.3