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/controller/admin/attendance/HrmAttendanceSummaryController.java |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceSummaryController.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceSummaryController.java
index a684c8a..d13d078 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceSummaryController.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceSummaryController.java
@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.hrm.controller.admin.attendance;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -47,7 +48,7 @@
 
     @GetMapping("/page")
     @Operation(summary = "鑾峰緱鑰冨嫟缁熻姹囨�诲垎椤�")
-    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
+    @PreAuthorize("@ss.hasPermission('hrm:attendance-summary:query')")
     public CommonResult<PageResult<HrmAttendanceSummaryRespVO>> getAttendanceSummaryPage(@Valid HrmAttendanceSummaryPageReqVO pageReqVO) {
         PageResult<HrmAttendanceSummaryDO> pageResult = attendanceSummaryService.getAttendanceSummaryPage(pageReqVO);
         List<HrmAttendanceSummaryRespVO> list = BeanUtils.toBean(pageResult.getList(), HrmAttendanceSummaryRespVO.class);
@@ -96,7 +97,7 @@
 
     @GetMapping("/get")
     @Operation(summary = "鑾峰緱鍛樺伐鏈堝害鑰冨嫟姹囨��")
-    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
+    @PreAuthorize("@ss.hasPermission('hrm:attendance-summary:query')")
     public CommonResult<HrmAttendanceSummaryRespVO> getMonthlySummary(
             @RequestParam("userId") Long userId,
             @RequestParam("yearMonth") String yearMonth) {
@@ -122,7 +123,7 @@
     @PostMapping("/generate")
     @Operation(summary = "鐢熸垚鏈堝害鑰冨嫟姹囨��")
     @Parameter(name = "yearMonth", description = "骞存湀锛屾牸寮忥細yyyy-MM", required = true)
-    @PreAuthorize("@ss.hasPermission('hrm:attendance:calculate')")
+    @PreAuthorize("@ss.hasPermission('hrm:attendance-summary:generate')")
     public CommonResult<Boolean> generateMonthlySummary(@RequestParam("yearMonth") String yearMonth,
                                                           @RequestParam(value = "deptId", required = false) Long deptId,
                                                           @RequestParam(value = "userId", required = false) Long userId) {
@@ -138,7 +139,7 @@
 
     @GetMapping("/export-excel")
     @Operation(summary = "瀵煎嚭鑰冨嫟缁熻姹囨�� Excel")
-    @PreAuthorize("@ss.hasPermission('hrm:attendance:export')")
+    @PreAuthorize("@ss.hasPermission('hrm:attendance-summary:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportAttendanceSummaryExcel(@Valid HrmAttendanceSummaryPageReqVO pageReqVO,
                                                HttpServletResponse response) throws IOException {
@@ -149,7 +150,15 @@
         if (CollUtil.isNotEmpty(data)) {
             fillUserInfo(data, pageResult.getList());
         }
-        ExcelUtils.write(response, "鑰冨嫟缁熻姹囨��.xls", "鏁版嵁", HrmAttendanceSummaryRespVO.class, data);
+        // 鏂囦欢鍚嶅甫涓婄瓫閫夋潯浠讹紝閬垮厤瀵煎嚭澶氫釜鏈堜唤鏁版嵁鏃惰璇涓恒�岄噸澶嶃��
+        String fileName = "鑰冨嫟缁熻姹囨��";
+        if (StrUtil.isNotBlank(pageReqVO.getYearMonth())) {
+            fileName = fileName + "_" + pageReqVO.getYearMonth();
+        } else if (pageReqVO.getStartDate() != null) {
+            fileName = fileName + "_" + pageReqVO.getStartDate()
+                    + "_" + (pageReqVO.getEndDate() != null ? pageReqVO.getEndDate() : "鑷充粖");
+        }
+        ExcelUtils.write(response, fileName + ".xls", "鏁版嵁", HrmAttendanceSummaryRespVO.class, data);
     }
 
 }
\ No newline at end of file

--
Gitblit v1.9.3