From ba100c651a81162a9a9a4533ff4d072f2889171a Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期五, 06 十一月 2026 09:38:46 +0800
Subject: [PATCH] fix(hrm): 考勤统计支持员工姓名搜索;缺卡统计补全(与考勤记录联动)
---
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceSummaryServiceImpl.java | 31 +++++++++++++++++++++++++++++++
1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceSummaryServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceSummaryServiceImpl.java
index ab7ec40..f51d71b 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceSummaryServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceSummaryServiceImpl.java
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.hrm.service.attendance;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.hrm.controller.admin.attendance.vo.HrmAttendanceSummaryPageReqVO;
@@ -206,12 +207,35 @@
if (pageReqVO.getStartDate() != null) {
return getAttendanceSummaryByDateRange(pageReqVO);
}
+ // 鍛樺伐濮撳悕妯$硦鎼滅储锛氬厛鎸夊鍚嶆煡鍑哄憳宸D锛屽啀鎸� ID 闆嗗悎杩囨护锛堟眹鎬昏〃鐨� user_id 瀛樼殑鏄憳宸D锛�
+ Set<Long> nameMatchedIds = resolveEmployeeIdsByName(pageReqVO.getUserName());
+ if (nameMatchedIds != null && nameMatchedIds.isEmpty()) {
+ // 濮撳悕鎼滀笉鍒颁换浣曞憳宸ユ椂鐩存帴杩斿洖绌猴紝閬垮厤閫�鍖栨垚鏌ュ叏閮�
+ return PageResult.empty();
+ }
return attendanceSummaryMapper.selectPage(pageReqVO, new LambdaQueryWrapperX<HrmAttendanceSummaryDO>()
.eqIfPresent(HrmAttendanceSummaryDO::getUserId, pageReqVO.getUserId())
+ .inIfPresent(HrmAttendanceSummaryDO::getUserId, nameMatchedIds)
.eqIfPresent(HrmAttendanceSummaryDO::getDeptId, pageReqVO.getDeptId())
.eqIfPresent(HrmAttendanceSummaryDO::getYearMonth, pageReqVO.getYearMonth())
.orderByDesc(HrmAttendanceSummaryDO::getYearMonth)
.orderByAsc(HrmAttendanceSummaryDO::getDeptId));
+ }
+
+ /**
+ * 鎸夊憳宸ュ鍚嶆ā绯婂尮閰嶏紝杩斿洖鍛樺伐ID闆嗗悎
+ *
+ * @return null 琛ㄧず鏈紶濮撳悕锛堜笉鍙備笌杩囨护锛夛紱绌洪泦鍚堣〃绀轰紶浜嗗鍚嶄絾娌℃湁浠讳綍鍛樺伐鍖归厤
+ */
+ private Set<Long> resolveEmployeeIdsByName(String userName) {
+ if (StrUtil.isBlank(userName)) {
+ return null;
+ }
+ List<HrmEmployeeDO> matched = employeeService.getEmployeeListByNameLike(userName.trim());
+ if (CollUtil.isEmpty(matched)) {
+ return Collections.emptySet();
+ }
+ return matched.stream().map(HrmEmployeeDO::getId).collect(Collectors.toSet());
}
/**
@@ -243,6 +267,13 @@
.filter(e -> reqVO.getUserId().equals(e.getId()))
.toList();
}
+ // 鍛樺伐濮撳悕妯$硦杩囨护
+ if (StrUtil.isNotBlank(reqVO.getUserName())) {
+ String keyword = reqVO.getUserName().trim();
+ employees = employees.stream()
+ .filter(e -> e.getName() != null && e.getName().contains(keyword))
+ .toList();
+ }
if (CollUtil.isEmpty(employees)) {
return PageResult.empty();
}
--
Gitblit v1.9.3