From ef3cbc1c6882786e8218b08be3e52ea44587f03b Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 08 十一月 2026 09:45:42 +0800
Subject: [PATCH] feat(hrm): 请假批量导入、加班代申请人、批量排班与节假日区间联动

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java |   44 +++++++++++++++++++++++++++++++++++++-------
 1 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java
index f362ce9..94a3eb2 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/approval/HrmLeaveApplicationController.java
@@ -5,12 +5,14 @@
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationImportExcelVO;
+import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationImportReqVO;
+import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationImportRespVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationPageReqVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationRespVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.HrmLeaveApplicationSaveReqVO;
 import cn.iocoder.yudao.module.hrm.service.approval.HrmLeaveApplicationService;
-import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
-import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -22,6 +24,8 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 
@@ -36,8 +40,6 @@
 
     @Resource
     private HrmLeaveApplicationService leaveApplicationService;
-    @Resource
-    private AdminUserApi adminUserApi;
 
     @PostMapping("/create")
     @Operation(summary = "鍒涘缓璇峰亣鐢宠")
@@ -85,9 +87,8 @@
     @PreAuthorize("@ss.hasPermission('hrm:leave:submit')")
     public CommonResult<Boolean> submitLeaveApplication(@RequestParam("id") Long id,
                                                          @RequestParam("processDefinitionKey") String processDefinitionKey) {
-        // 鑾峰彇褰撳墠鐢ㄦ埛ID
-        AdminUserRespDTO user = adminUserApi.getUser(1L); // TODO: 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
-        leaveApplicationService.submitLeaveApplication(id, processDefinitionKey, user.getId());
+        Long userId = SecurityFrameworkUtils.getLoginUserId();
+        leaveApplicationService.submitLeaveApplication(id, processDefinitionKey, userId);
         return success(true);
     }
 
@@ -98,6 +99,35 @@
         return success(leaveApplicationService.getApproveProcessDefinitionList());
     }
 
+    @GetMapping("/get-import-template")
+    @Operation(summary = "涓嬭浇璇峰亣鐢宠瀵煎叆妯℃澘")
+    @PreAuthorize("@ss.hasPermission('hrm:leave:import')")
+    public void getImportTemplate(HttpServletResponse response) throws IOException {
+        List<HrmLeaveApplicationImportExcelVO> list = List.of(
+                HrmLeaveApplicationImportExcelVO.builder()
+                        .phone("13800138000")
+                        .leaveType("骞村亣")
+                        .startTime(LocalDateTime.of(2026, 10, 8, 9, 0, 0))
+                        .endTime(LocalDateTime.of(2026, 10, 8, 18, 0, 0))
+                        .duration(new BigDecimal("1"))
+                        .reason("瀹朵腑鏈変簨")
+                        .remark("绀轰緥琛岋紝瀵煎叆鍓嶈鍒犻櫎")
+                        .build()
+        );
+        ExcelUtils.write(response, "璇峰亣鐢宠瀵煎叆妯℃澘.xls", "璇峰亣鐢宠鍒楄〃",
+                HrmLeaveApplicationImportExcelVO.class, list);
+    }
+
+    @PostMapping("/import")
+    @Operation(summary = "鎵归噺瀵煎叆璇峰亣鐢宠")
+    @PreAuthorize("@ss.hasPermission('hrm:leave:import')")
+    public CommonResult<HrmLeaveApplicationImportRespVO> importLeaveApplication(
+            @Valid HrmLeaveApplicationImportReqVO importReqVO) throws IOException {
+        List<HrmLeaveApplicationImportExcelVO> list = ExcelUtils.read(
+                importReqVO.getFile(), HrmLeaveApplicationImportExcelVO.class);
+        return success(leaveApplicationService.importLeaveApplicationList(list));
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "瀵煎嚭璇峰亣鐢宠 Excel")
     @PreAuthorize("@ss.hasPermission('hrm:leave:export')")

--
Gitblit v1.9.3