From 76bf0caef9a6f4b7daae7e7b1d09b0c9044aebef Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期一, 24 八月 2026 10:07:33 +0800
Subject: [PATCH] 新增请假扣款配置设置

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigServiceImpl.java             |   16 ++++++++
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmLeaveTypeConfigController.java     |   25 +++++++++++-
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/vo/HrmLeaveTypeConfigCreateReqVO.java |   32 ++++++++++++++++
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigService.java                 |   10 +++++
 yudao-module-hrm-api/src/main/java/cn/iocoder/yudao/module/hrm/enums/ErrorCodeConstants.java                             |    1 
 5 files changed, 81 insertions(+), 3 deletions(-)

diff --git a/yudao-module-hrm-api/src/main/java/cn/iocoder/yudao/module/hrm/enums/ErrorCodeConstants.java b/yudao-module-hrm-api/src/main/java/cn/iocoder/yudao/module/hrm/enums/ErrorCodeConstants.java
index c845909..cd8b6d8 100644
--- a/yudao-module-hrm-api/src/main/java/cn/iocoder/yudao/module/hrm/enums/ErrorCodeConstants.java
+++ b/yudao-module-hrm-api/src/main/java/cn/iocoder/yudao/module/hrm/enums/ErrorCodeConstants.java
@@ -102,6 +102,7 @@
     ErrorCode EMPLOYEE_SOCIAL_SECURITY_NOT_EXISTS = new ErrorCode(1_030_005_009, "鍛樺伐绀句繚鍏Н閲戞。妗堜笉瀛樺湪");
     ErrorCode SOCIAL_SECURITY_SCHEME_NOT_EXISTS = new ErrorCode(1_030_005_010, "绀句繚鍏Н閲戞柟妗堜笉瀛樺湪");
     ErrorCode LEAVE_TYPE_CONFIG_NOT_EXISTS = new ErrorCode(1_030_005_011, "璇峰亣绫诲瀷鎵f閰嶇疆涓嶅瓨鍦�");
+    ErrorCode LEAVE_TYPE_CONFIG_TYPE_EXISTS = new ErrorCode(1_030_005_022, "璇ヨ鍋囩被鍨嬫墸娆鹃厤缃凡瀛樺湪");
     ErrorCode SALARY_PAYMENT_EXISTS = new ErrorCode(1_030_005_012, "璇ュ懆鏈熻柂璧勫彂鏀惧彴璐﹀凡瀛樺湪");
     ErrorCode SALARY_CALCULATION_NO_CONFIRMED = new ErrorCode(1_030_005_013, "璇ュ懆鏈熸病鏈夊凡纭鐨勮柂閰牳绠楄褰�");
     ErrorCode SALARY_PAYMENT_ALREADY_PAY = new ErrorCode(1_030_005_014, "钖祫鍙戞斁鍙拌处宸插彂鏀撅紝璇峰嬁閲嶅鎿嶄綔");
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmLeaveTypeConfigController.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmLeaveTypeConfigController.java
index bc1898b..5c1af32 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmLeaveTypeConfigController.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmLeaveTypeConfigController.java
@@ -2,6 +2,7 @@
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.hrm.controller.admin.salary.vo.HrmLeaveTypeConfigCreateReqVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.salary.vo.HrmLeaveTypeConfigRespVO;
 import cn.iocoder.yudao.module.hrm.controller.admin.salary.vo.HrmLeaveTypeConfigSaveReqVO;
 import cn.iocoder.yudao.module.hrm.dal.dataobject.salary.HrmLeaveTypeConfigDO;
@@ -30,7 +31,7 @@
 
     @GetMapping("/list")
     @Operation(summary = "鑾峰彇鎵�鏈夎鍋囩被鍨嬮厤缃垪琛�")
-    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
+    @PreAuthorize("@ss.hasPermission('hrm:leave-type-config:query')")
     public CommonResult<List<HrmLeaveTypeConfigRespVO>> getLeaveTypeConfigList() {
         List<HrmLeaveTypeConfigDO> list = leaveTypeConfigService.getLeaveTypeConfigList();
         return success(BeanUtils.toBean(list, HrmLeaveTypeConfigRespVO.class));
@@ -39,19 +40,37 @@
     @GetMapping("/get")
     @Operation(summary = "鑾峰彇璇峰亣绫诲瀷閰嶇疆")
     @Parameter(name = "leaveType", description = "璇峰亣绫诲瀷", required = true, example = "1")
-    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
+    @PreAuthorize("@ss.hasPermission('hrm:leave-type-config:query')")
     public CommonResult<HrmLeaveTypeConfigRespVO> getLeaveTypeConfig(@RequestParam("leaveType") Integer leaveType) {
         HrmLeaveTypeConfigDO config = leaveTypeConfigService.getLeaveTypeConfig(leaveType);
         return success(BeanUtils.toBean(config, HrmLeaveTypeConfigRespVO.class));
     }
 
+    @PostMapping("/create")
+    @Operation(summary = "鏂板璇峰亣绫诲瀷閰嶇疆")
+    @PreAuthorize("@ss.hasPermission('hrm:leave-type-config:create')")
+    public CommonResult<Long> createLeaveTypeConfig(@Valid @RequestBody HrmLeaveTypeConfigCreateReqVO createReqVO) {
+        HrmLeaveTypeConfigDO config = BeanUtils.toBean(createReqVO, HrmLeaveTypeConfigDO.class);
+        leaveTypeConfigService.createLeaveTypeConfig(config);
+        return success(config.getId());
+    }
+
     @PutMapping("/update")
     @Operation(summary = "鏇存柊璇峰亣绫诲瀷閰嶇疆")
-    @PreAuthorize("@ss.hasPermission('hrm:salary:update')")
+    @PreAuthorize("@ss.hasPermission('hrm:leave-type-config:update')")
     public CommonResult<Boolean> updateLeaveTypeConfig(@Valid @RequestBody HrmLeaveTypeConfigSaveReqVO updateReqVO) {
         HrmLeaveTypeConfigDO config = BeanUtils.toBean(updateReqVO, HrmLeaveTypeConfigDO.class);
         leaveTypeConfigService.updateLeaveTypeConfig(config);
         return success(true);
     }
 
+    @DeleteMapping("/delete")
+    @Operation(summary = "鍒犻櫎璇峰亣绫诲瀷閰嶇疆")
+    @Parameter(name = "id", description = "閰嶇疆ID", required = true)
+    @PreAuthorize("@ss.hasPermission('hrm:leave-type-config:delete')")
+    public CommonResult<Boolean> deleteLeaveTypeConfig(@RequestParam("id") Long id) {
+        leaveTypeConfigService.deleteLeaveTypeConfig(id);
+        return success(true);
+    }
+
 }
\ No newline at end of file
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/vo/HrmLeaveTypeConfigCreateReqVO.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/vo/HrmLeaveTypeConfigCreateReqVO.java
new file mode 100644
index 0000000..1e7bb89
--- /dev/null
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/vo/HrmLeaveTypeConfigCreateReqVO.java
@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.hrm.controller.admin.salary.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Schema(description = "绠$悊鍚庡彴 - 璇峰亣绫诲瀷鎵f閰嶇疆鏂板 Request VO")
+@Data
+public class HrmLeaveTypeConfigCreateReqVO {
+
+    @Schema(description = "璇峰亣绫诲瀷锛�1-浜嬪亣, 2-鐥呭亣, 3-骞村亣, 4-濠氬亣, 5-浜у亣, 6-涓у亣", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "璇峰亣绫诲瀷涓嶈兘涓虹┖")
+    private Integer leaveType;
+
+    @Schema(description = "绫诲瀷鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "浜嬪亣")
+    @NotBlank(message = "绫诲瀷鍚嶇О涓嶈兘涓虹┖")
+    private String name;
+
+    @Schema(description = "鎵f姣斾緥锛�0-1涔嬮棿锛屽0.5琛ㄧず鎵�50%锛�", requiredMode = Schema.RequiredMode.REQUIRED, example = "0.5")
+    @NotNull(message = "鎵f姣斾緥涓嶈兘涓虹┖")
+    private BigDecimal deductionRatio;
+
+    @Schema(description = "澶囨敞")
+    private String remark;
+
+    @Schema(description = "鐘舵�侊細0-鍚敤, 1-绂佺敤")
+    private Integer status;
+
+}
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigService.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigService.java
index c73c853..fbcfda7 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigService.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigService.java
@@ -22,8 +22,18 @@
     HrmLeaveTypeConfigDO getLeaveTypeConfig(Integer leaveType);
 
     /**
+     * 鏂板璇峰亣绫诲瀷閰嶇疆
+     */
+    void createLeaveTypeConfig(HrmLeaveTypeConfigDO config);
+
+    /**
      * 鏇存柊璇峰亣绫诲瀷閰嶇疆
      */
     void updateLeaveTypeConfig(HrmLeaveTypeConfigDO config);
 
+    /**
+     * 鍒犻櫎璇峰亣绫诲瀷閰嶇疆
+     */
+    void deleteLeaveTypeConfig(Long id);
+
 }
\ No newline at end of file
diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigServiceImpl.java
index 4374c44..0b48e62 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmLeaveTypeConfigServiceImpl.java
@@ -10,6 +10,7 @@
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.LEAVE_TYPE_CONFIG_NOT_EXISTS;
+import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.LEAVE_TYPE_CONFIG_TYPE_EXISTS;
 
 /**
  * 璇峰亣绫诲瀷鎵f閰嶇疆 Service 瀹炵幇绫�
@@ -34,11 +35,26 @@
     }
 
     @Override
+    public void createLeaveTypeConfig(HrmLeaveTypeConfigDO config) {
+        // 鏍¢獙鍚屼竴璇峰亣绫诲瀷鍙厑璁稿瓨鍦ㄤ竴鏉¢厤缃�
+        if (leaveTypeConfigMapper.selectCount(HrmLeaveTypeConfigDO::getLeaveType, config.getLeaveType()) > 0) {
+            throw exception(LEAVE_TYPE_CONFIG_TYPE_EXISTS);
+        }
+        leaveTypeConfigMapper.insert(config);
+    }
+
+    @Override
     public void updateLeaveTypeConfig(HrmLeaveTypeConfigDO config) {
         validateLeaveTypeConfigExists(config.getId());
         leaveTypeConfigMapper.updateById(config);
     }
 
+    @Override
+    public void deleteLeaveTypeConfig(Long id) {
+        validateLeaveTypeConfigExists(id);
+        leaveTypeConfigMapper.deleteById(id);
+    }
+
     private void validateLeaveTypeConfigExists(Long id) {
         if (leaveTypeConfigMapper.selectById(id) == null) {
             throw exception(LEAVE_TYPE_CONFIG_NOT_EXISTS);

--
Gitblit v1.9.3