tuqin
7 天以前 35fcb289fc9772d8e36a8ec903ccb714bfd425c1
fix(hrm): 后端接口权限码与菜单对齐,修复非超管账号操作 403

- 考勤/薪酬核算/薪资发放/社保/个税 等 Controller 的 @PreAuthorize 改为菜单实际使用的子模块级权限码
- 新增 SQL hrm_permission_align_init.sql:补齐菜单缺失的 30 个按钮权限点并授权现有角色
已修改11个文件
已添加1个文件
211 ■■■■■ 文件已修改
sql/mysql/hrm_permission_align_init.sql 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceExceptionController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceHolidayController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceRecordController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceRuleController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceSummaryController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmEmployeeSocialSecurityController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSalaryCalculationController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSalaryPaymentController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSocialSecurityConfigController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSocialSecuritySchemeController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmTaxRateConfigController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/mysql/hrm_permission_align_init.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
-- =============================================
-- HRM æƒé™ç å¯¹é½åˆå§‹åŒ–脚本(可重复执行)
-- èƒŒæ™¯ï¼šåŽç«¯ @PreAuthorize ä½¿ç”¨çš„æƒé™ç åœ¨ system_menu ä¸­ä¸å­˜åœ¨ï¼Œ
--       å¯¼è‡´éžè¶…级管理员调用接口时一律 403(菜单可见但"没有操作权限")。
-- å¤„理:为这些权限码补齐 type=3 çš„æŒ‰é’®æƒé™ç‚¹ï¼ˆä¸æ˜¾ç¤ºåœ¨ä¾§æ ï¼‰ï¼Œå¹¶æŽˆæƒç»™çŽ°æœ‰è§’è‰²ã€‚
--       èœå•可见性仍由各模块父菜单的 role_menu æŽ§åˆ¶ï¼Œä¸ä¼šå› æ­¤æ‰©å¤§å¯è§èŒƒå›´ã€‚
-- =============================================
SET NAMES utf8mb4;
INSERT INTO `system_menu`
(`id`,`name`,`permission`,`type`,`sort`,`parent_id`,`path`,`icon`,`component`,`component_name`,
 `status`,`visible`,`keep_alive`,`always_show`,`creator`,`create_time`,`updater`,`update_time`,`deleted`)
VALUES
-- è€ƒå‹¤ç®¡ç†ï¼ˆ6010 ä¸‹çš„子菜单)
(602800,'考勤规则查询','hrm:attendance-rule:query',3,10,6013,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602801,'考勤记录查询','hrm:attendance-record:query',3,10,6011,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602802,'考勤异常查询','hrm:attendance-exception:query',3,10,6012,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602803,'考勤异常修改','hrm:attendance-exception:update',3,11,6012,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602804,'考勤异常删除','hrm:attendance-exception:delete',3,12,6012,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602805,'节假日配置查询','hrm:attendance-holiday:query',3,10,6014,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602806,'考勤统计查询','hrm:attendance-summary:query',3,10,6015,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- äººäº‹å®¡æ‰¹ï¼ˆ6002 ä¸‹çš„子菜单)
(602807,'请假申请导出','hrm:leave:export',3,10,6003,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602808,'调岗申请查询','hrm:transfer:query',3,10,6004,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602809,'调岗申请导出','hrm:transfer:export',3,11,6004,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602810,'离职申请查询','hrm:resignation:query',3,10,6005,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602811,'离职申请导出','hrm:resignation:export',3,11,6005,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602812,'加班申请查询','hrm:overtime:query',3,10,1065211,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- å‘˜å·¥åˆåŒ
(602813,'合同导入','hrm:employee-contract:import',3,10,1063105,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- è–ªé…¬æ ¸ç®—(6021)
(602814,'薪酬核算查询','hrm:salary-calculation:query',3,10,6021,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602815,'薪酬核算删除','hrm:salary-calculation:delete',3,11,6021,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- è–ªèµ„发放(6022)
(602816,'薪资发放查询','hrm:salary-payment:query',3,10,6022,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602817,'薪资发放生成','hrm:salary-payment:generate',3,11,6022,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602818,'薪资发放删除','hrm:salary-payment:delete',3,12,6022,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- å‘˜å·¥ç¤¾ä¿å…¬ç§¯é‡‘档案(6023)
(602819,'社保档案查询','hrm:employee-social-security:query',3,10,6023,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- ç¤¾ä¿å…¬ç§¯é‡‘方案(602445)
(602820,'社保方案查询','hrm:social-security-scheme:query',3,10,602445,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- ç¤¾ä¿é…ç½®ï¼ˆæŒ‚在薪酬管理 6020)
(602821,'社保配置查询','hrm:social-security-config:query',3,30,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602822,'社保配置新增','hrm:social-security-config:create',3,31,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602823,'社保配置修改','hrm:social-security-config:update',3,32,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602824,'社保配置删除','hrm:social-security-config:delete',3,33,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- ä¸ªç¨Žç¨ŽçŽ‡é…ç½®ï¼ˆ6024)
(602825,'个税税率查询','hrm:tax-rate-config:query',3,10,6024,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
-- è–ªé…¬ç»“构(菜单中暂无该页面,权限点挂薪酬管理下)
(602826,'薪酬结构查询','hrm:salary-structure:query',3,40,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602827,'薪酬结构新增','hrm:salary-structure:create',3,41,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602828,'薪酬结构修改','hrm:salary-structure:update',3,42,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0'),
(602829,'薪酬结构删除','hrm:salary-structure:delete',3,43,6020,'','','',NULL,0,b'1',b'1',b'1','1',NOW(),'1',NOW(),b'0')
ON DUPLICATE KEY UPDATE
`name` = VALUES(`name`), `permission` = VALUES(`permission`), `type` = VALUES(`type`),
`parent_id` = VALUES(`parent_id`), `status` = VALUES(`status`), `deleted` = b'0';
-- æŽˆæƒç»™çŽ°æœ‰å…¨éƒ¨è§’è‰²ï¼ˆèœå•å¯è§æ€§ä»ç”±çˆ¶èœå•æŽ§åˆ¶ï¼Œä¸ä¼šå› æ­¤æ‰©å¤§å¯è§èŒƒå›´ï¼‰
INSERT INTO `system_role_menu` (`role_id`, `menu_id`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
SELECT r.id, m.id, '1', NOW(), '1', NOW(), b'0'
FROM `system_role` r
JOIN `system_menu` m ON m.id BETWEEN 602800 AND 602829 AND m.deleted = b'0'
WHERE r.deleted = b'0'
  AND NOT EXISTS (
      SELECT 1 FROM `system_role_menu` rm
      WHERE rm.role_id = r.id AND rm.menu_id = m.id AND rm.deleted = b'0'
  );
SELECT 'HRM æƒé™ç å¯¹é½åˆå§‹åŒ–完成' AS result;
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceExceptionController.java
@@ -45,14 +45,14 @@
    @PostMapping("/create")
    @Operation(summary = "新增考勤异常申请")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:create')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-exception:create')")
    public CommonResult<Long> createAttendanceException(@Valid @RequestBody HrmAttendanceExceptionSaveReqVO createReqVO) {
        return success(attendanceExceptionService.createAttendanceException(createReqVO));
    }
    @PutMapping("/update")
    @Operation(summary = "更新考勤异常申请")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:update')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-exception:update')")
    public CommonResult<Boolean> updateAttendanceException(@Valid @RequestBody HrmAttendanceExceptionSaveReqVO updateReqVO) {
        attendanceExceptionService.updateAttendanceException(updateReqVO);
        return success(true);
@@ -61,7 +61,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除考勤异常申请")
    @Parameter(name = "id", description = "申请ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-exception:delete')")
    public CommonResult<Boolean> deleteAttendanceException(@RequestParam("id") Long id) {
        attendanceExceptionService.deleteAttendanceException(id);
        return success(true);
@@ -70,7 +70,7 @@
    @GetMapping("/get")
    @Operation(summary = "获得考勤异常申请")
    @Parameter(name = "id", description = "申请ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-exception:query')")
    public CommonResult<HrmAttendanceExceptionRespVO> getAttendanceException(@RequestParam("id") Long id) {
        HrmAttendanceExceptionDO attendanceException = attendanceExceptionService.getAttendanceException(id);
        if (attendanceException == null) {
@@ -96,7 +96,7 @@
    @GetMapping("/page")
    @Operation(summary = "获得考勤异常申请分页")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-exception:query')")
    public CommonResult<PageResult<HrmAttendanceExceptionRespVO>> getAttendanceExceptionPage(@Valid HrmAttendanceExceptionPageReqVO pageReqVO) {
        PageResult<HrmAttendanceExceptionDO> pageResult = attendanceExceptionService.getAttendanceExceptionPage(pageReqVO);
        List<HrmAttendanceExceptionRespVO> list = BeanUtils.toBean(pageResult.getList(), HrmAttendanceExceptionRespVO.class);
@@ -145,7 +145,7 @@
    @PostMapping("/submit")
    @Operation(summary = "提交考勤异常申请")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:submit')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-exception:submit')")
    public CommonResult<Boolean> submitAttendanceException(
            @RequestParam("id") Long id,
            @RequestParam("processDefinitionKey") String processDefinitionKey) {
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceHolidayController.java
@@ -38,14 +38,14 @@
    @PostMapping("/create")
    @Operation(summary = "新增节假日配置")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:create')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-holiday:create')")
    public CommonResult<Long> createAttendanceHoliday(@Valid @RequestBody HrmAttendanceHolidaySaveReqVO createReqVO) {
        return success(attendanceHolidayService.createAttendanceHoliday(createReqVO));
    }
    @PutMapping("/update")
    @Operation(summary = "更新节假日配置")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:update')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-holiday:update')")
    public CommonResult<Boolean> updateAttendanceHoliday(@Valid @RequestBody HrmAttendanceHolidaySaveReqVO updateReqVO) {
        attendanceHolidayService.updateAttendanceHoliday(updateReqVO);
        return success(true);
@@ -54,7 +54,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除节假日配置")
    @Parameter(name = "id", description = "节假日ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-holiday:delete')")
    public CommonResult<Boolean> deleteAttendanceHoliday(@RequestParam("id") Long id) {
        attendanceHolidayService.deleteAttendanceHoliday(id);
        return success(true);
@@ -63,7 +63,7 @@
    @GetMapping("/get")
    @Operation(summary = "获得节假日配置")
    @Parameter(name = "id", description = "节假日ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-holiday:query')")
    public CommonResult<HrmAttendanceHolidayRespVO> getAttendanceHoliday(@RequestParam("id") Long id) {
        HrmAttendanceHolidayDO attendanceHoliday = attendanceHolidayService.getAttendanceHoliday(id);
        return success(BeanUtils.toBean(attendanceHoliday, HrmAttendanceHolidayRespVO.class));
@@ -71,7 +71,7 @@
    @GetMapping("/page")
    @Operation(summary = "获得节假日配置分页")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-holiday:query')")
    public CommonResult<PageResult<HrmAttendanceHolidayRespVO>> getAttendanceHolidayPage(@Valid HrmAttendanceHolidayPageReqVO pageReqVO) {
        PageResult<HrmAttendanceHolidayDO> pageResult = attendanceHolidayService.getAttendanceHolidayPage(pageReqVO);
        return success(BeanUtils.toBean(pageResult, HrmAttendanceHolidayRespVO.class));
@@ -79,7 +79,7 @@
    @GetMapping("/export-excel")
    @Operation(summary = "导出节假日配置 Excel")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:export')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-holiday:export')")
    @ApiAccessLog(operateType = EXPORT)
    public void exportAttendanceHolidayExcel(@Valid HrmAttendanceHolidayPageReqVO pageReqVO,
                                               HttpServletResponse response) throws IOException {
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceRecordController.java
@@ -56,7 +56,7 @@
    @PostMapping("/clock-in")
    @Operation(summary = "上班打卡")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:clock')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-record:clock')")
    public CommonResult<HrmAttendanceRecordRespVO> clockIn(@RequestParam("location") String location) {
        Long loginUserId = getLoginUserId();
        HrmEmployeeDO employee = employeeService.getEmployeeByUserId(loginUserId);
@@ -77,7 +77,7 @@
    @PostMapping("/clock-out")
    @Operation(summary = "下班打卡")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:clock')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-record:clock')")
    public CommonResult<HrmAttendanceRecordRespVO> clockOut(@RequestParam("location") String location) {
        Long loginUserId = getLoginUserId();
        HrmEmployeeDO employee = employeeService.getEmployeeByUserId(loginUserId);
@@ -102,7 +102,7 @@
    @GetMapping("/page")
    @Operation(summary = "获得考勤记录分页")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-record:query')")
    public CommonResult<PageResult<HrmAttendanceRecordRespVO>> getAttendanceRecordPage(@Valid HrmAttendanceRecordPageReqVO pageReqVO) {
        PageResult<HrmAttendanceRecordDO> pageResult = attendanceRecordService.getAttendanceRecordPage(pageReqVO);
        // è½¬æ¢ä¸º VO
@@ -157,7 +157,7 @@
    @GetMapping("/get")
    @Operation(summary = "获得考勤记录")
    @Parameter(name = "id", description = "记录ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-record:query')")
    public CommonResult<HrmAttendanceRecordRespVO> getAttendanceRecord(@RequestParam("id") Long id) {
        HrmAttendanceRecordDO attendanceRecord = attendanceRecordService.getAttendanceRecord(id);
        if (attendanceRecord == null) {
@@ -281,7 +281,7 @@
    @GetMapping("/export-excel")
    @Operation(summary = "导出考勤记录 Excel")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:export')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-record:export')")
    @ApiAccessLog(operateType = EXPORT)
    public void exportAttendanceRecordExcel(@Valid HrmAttendanceRecordPageReqVO pageReqVO,
                                              HttpServletResponse response) throws IOException {
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceRuleController.java
@@ -44,14 +44,14 @@
    @PostMapping("/create")
    @Operation(summary = "新增考勤规则")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:create')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-rule:create')")
    public CommonResult<Long> createAttendanceRule(@Valid @RequestBody HrmAttendanceRuleSaveReqVO createReqVO) {
        return success(attendanceRuleService.createAttendanceRule(createReqVO));
    }
    @PutMapping("/update")
    @Operation(summary = "更新考勤规则")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:update')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-rule:update')")
    public CommonResult<Boolean> updateAttendanceRule(@Valid @RequestBody HrmAttendanceRuleSaveReqVO updateReqVO) {
        attendanceRuleService.updateAttendanceRule(updateReqVO);
        return success(true);
@@ -60,7 +60,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除考勤规则")
    @Parameter(name = "id", description = "规则ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-rule:delete')")
    public CommonResult<Boolean> deleteAttendanceRule(@RequestParam("id") Long id) {
        attendanceRuleService.deleteAttendanceRule(id);
        return success(true);
@@ -69,7 +69,7 @@
    @GetMapping("/get")
    @Operation(summary = "获得考勤规则")
    @Parameter(name = "id", description = "规则ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-rule:query')")
    public CommonResult<HrmAttendanceRuleRespVO> getAttendanceRule(@RequestParam("id") Long id) {
        HrmAttendanceRuleDO attendanceRule = attendanceRuleService.getAttendanceRule(id);
        if (attendanceRule == null) {
@@ -88,7 +88,7 @@
    @GetMapping("/page")
    @Operation(summary = "获得考勤规则分页")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-rule:query')")
    public CommonResult<PageResult<HrmAttendanceRuleRespVO>> getAttendanceRulePage(@Valid HrmAttendanceRulePageReqVO pageReqVO) {
        PageResult<HrmAttendanceRuleDO> pageResult = attendanceRuleService.getAttendanceRulePage(pageReqVO);
        List<HrmAttendanceRuleRespVO> list = BeanUtils.toBean(pageResult.getList(), HrmAttendanceRuleRespVO.class);
@@ -111,7 +111,7 @@
    @GetMapping("/list")
    @Operation(summary = "获得考勤规则列表")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:query')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-rule:query')")
    public CommonResult<List<HrmAttendanceRuleRespVO>> getAttendanceRuleList() {
        List<HrmAttendanceRuleDO> list = attendanceRuleService.getAttendanceRuleList();
        return success(BeanUtils.toBean(list, HrmAttendanceRuleRespVO.class));
@@ -119,7 +119,7 @@
    @GetMapping("/export-excel")
    @Operation(summary = "导出考勤规则 Excel")
    @PreAuthorize("@ss.hasPermission('hrm:attendance:export')")
    @PreAuthorize("@ss.hasPermission('hrm:attendance-rule:export')")
    @ApiAccessLog(operateType = EXPORT)
    public void exportAttendanceRuleExcel(@Valid HrmAttendanceRulePageReqVO pageReqVO,
                                            HttpServletResponse response) throws IOException {
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/attendance/HrmAttendanceSummaryController.java
@@ -47,7 +47,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 +96,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 +122,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 +138,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 {
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmEmployeeSocialSecurityController.java
@@ -46,7 +46,7 @@
    @PostMapping("/create")
    @Operation(summary = "创建员工社保公积金档案")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:create')")
    @PreAuthorize("@ss.hasPermission('hrm:employee-social-security:create')")
    public CommonResult<Long> createEmployeeSocialSecurity(@Valid @RequestBody HrmEmployeeSocialSecuritySaveReqVO createReqVO) {
        HrmEmployeeSocialSecurityDO socialSecurity = BeanUtils.toBean(createReqVO, HrmEmployeeSocialSecurityDO.class);
        return success(employeeSocialSecurityService.createEmployeeSocialSecurity(socialSecurity));
@@ -54,7 +54,7 @@
    @PutMapping("/update")
    @Operation(summary = "更新员工社保公积金档案")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:update')")
    @PreAuthorize("@ss.hasPermission('hrm:employee-social-security:update')")
    public CommonResult<Boolean> updateEmployeeSocialSecurity(@Valid @RequestBody HrmEmployeeSocialSecuritySaveReqVO updateReqVO) {
        HrmEmployeeSocialSecurityDO socialSecurity = BeanUtils.toBean(updateReqVO, HrmEmployeeSocialSecurityDO.class);
        employeeSocialSecurityService.updateEmployeeSocialSecurity(socialSecurity);
@@ -64,7 +64,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除员工社保公积金档案")
    @Parameter(name = "id", description = "档案ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:employee-social-security:delete')")
    public CommonResult<Boolean> deleteEmployeeSocialSecurity(@RequestParam("id") Long id) {
        employeeSocialSecurityService.deleteEmployeeSocialSecurity(id);
        return success(true);
@@ -73,7 +73,7 @@
    @GetMapping("/get")
    @Operation(summary = "获取员工社保公积金档案")
    @Parameter(name = "id", description = "档案ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:employee-social-security:query')")
    public CommonResult<HrmEmployeeSocialSecurityRespVO> getEmployeeSocialSecurity(@RequestParam("id") Long id) {
        HrmEmployeeSocialSecurityDO socialSecurity = employeeSocialSecurityService.getEmployeeSocialSecurity(id);
        if (socialSecurity == null) {
@@ -88,7 +88,7 @@
    @GetMapping("/page")
    @Operation(summary = "获取员工社保公积金档案分页")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:employee-social-security:query')")
    public CommonResult<PageResult<HrmEmployeeSocialSecurityRespVO>> getEmployeeSocialSecurityPage(
            @Valid HrmEmployeeSocialSecurityPageReqVO pageReqVO) {
        PageResult<HrmEmployeeSocialSecurityDO> pageResult = employeeSocialSecurityService.getEmployeeSocialSecurityPage(pageReqVO);
@@ -157,7 +157,7 @@
    @GetMapping("/list-by-user")
    @Operation(summary = "获取员工社保公积金档案历史列表")
    @Parameter(name = "userId", description = "系统用户ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:employee-social-security:query')")
    public CommonResult<List<HrmEmployeeSocialSecurityRespVO>> getEmployeeSocialSecurityList(
            @RequestParam("userId") Long userId) {
        List<HrmEmployeeSocialSecurityDO> list = employeeSocialSecurityService.getEmployeeSocialSecurityList(userId);
@@ -174,7 +174,7 @@
    @GetMapping("/get-latest")
    @Operation(summary = "获取员工最新生效的社保公积金档案")
    @Parameter(name = "userId", description = "系统用户ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:employee-social-security:query')")
    public CommonResult<HrmEmployeeSocialSecurityRespVO> getLatestEmployeeSocialSecurity(
            @RequestParam("userId") Long userId) {
        HrmEmployeeSocialSecurityDO socialSecurity = employeeSocialSecurityService.getLatestEmployeeSocialSecurity(userId);
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSalaryCalculationController.java
@@ -48,7 +48,7 @@
    @GetMapping("/page")
    @Operation(summary = "获得薪酬核算分页")
    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:query')")
    public CommonResult<PageResult<HrmSalaryCalculationRespVO>> getSalaryCalculationPage(@Valid HrmSalaryCalculationPageReqVO pageReqVO) {
        PageResult<HrmSalaryCalculationDO> pageResult = salaryCalculationService.getSalaryCalculationPage(pageReqVO);
        // è½¬æ¢ä¸º VO
@@ -100,7 +100,7 @@
    @GetMapping("/get")
    @Operation(summary = "获得薪酬核算")
    @Parameter(name = "id", description = "核算ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:query')")
    public CommonResult<HrmSalaryCalculationRespVO> getSalaryCalculation(@RequestParam("id") Long id) {
        HrmSalaryCalculationDO salaryCalculation = salaryCalculationService.getSalaryCalculation(id);
        if (salaryCalculation == null) {
@@ -127,7 +127,7 @@
    @Operation(summary = "执行薪酬核算")
    @Parameter(name = "period", description = "核算周期", required = true, example = "2024-01")
    @Parameter(name = "deptId", description = "部门ID,为空则核算所有部门", example = "1")
    @PreAuthorize("@ss.hasPermission('hrm:salary:calculate')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:calculate')")
    public CommonResult<Boolean> calculateSalary(@RequestParam("period") String period,
                                                  @RequestParam(value = "deptId", required = false) Long deptId) {
        salaryCalculationService.calculateSalary(period, deptId);
@@ -136,7 +136,7 @@
    @PostMapping("/confirm")
    @Operation(summary = "批量确认薪酬核算")
    @PreAuthorize("@ss.hasPermission('hrm:salary:confirm')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:confirm')")
    public CommonResult<Boolean> confirmSalaryCalculation(@RequestBody Map<String, List<Long>> request) {
        List<Long> ids = request.get("ids");
        salaryCalculationService.confirmSalaryCalculation(ids);
@@ -145,7 +145,7 @@
    @PostMapping("/revoke")
    @Operation(summary = "批量撤销薪酬核算确认")
    @PreAuthorize("@ss.hasPermission('hrm:salary:confirm')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:confirm')")
    public CommonResult<Boolean> revokeSalaryCalculation(@RequestBody Map<String, List<Long>> request) {
        List<Long> ids = request.get("ids");
        salaryCalculationService.revokeSalaryCalculation(ids);
@@ -155,7 +155,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除薪酬核算记录")
    @Parameter(name = "id", description = "核算ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:salary:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:delete')")
    public CommonResult<Boolean> deleteSalaryCalculation(@RequestParam("id") Long id) {
        salaryCalculationService.deleteSalaryCalculation(id);
        return success(true);
@@ -163,7 +163,7 @@
    @GetMapping("/export-excel")
    @Operation(summary = "导出薪酬核算 Excel")
    @PreAuthorize("@ss.hasPermission('hrm:salary:export')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:export')")
    @ApiAccessLog(operateType = EXPORT)
    public void exportSalaryCalculationExcel(@Valid HrmSalaryCalculationPageReqVO pageReqVO,
                                               HttpServletResponse response) throws IOException {
@@ -183,7 +183,7 @@
    @Operation(summary = "预览部门下所有员工的薪资核算信息")
    @Parameter(name = "period", description = "核算周期", required = true, example = "2024-01")
    @Parameter(name = "deptId", description = "部门ID,为空则查询全部", example = "1")
    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:query')")
    public CommonResult<List<HrmSalaryCalculationRespVO>> previewSalaryCalculation(
            @RequestParam("period") String period,
            @RequestParam(value = "deptId", required = false) Long deptId) {
@@ -200,7 +200,7 @@
    @PostMapping("/save")
    @Operation(summary = "批量保存薪酬核算记录")
    @PreAuthorize("@ss.hasPermission('hrm:salary:calculate')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:calculate')")
    public CommonResult<Boolean> saveSalaryCalculation(@Valid @RequestBody HrmSalaryCalculationSaveReqVO saveReqVO) {
        // è½¬æ¢ä¸º DO åˆ—表
        List<HrmSalaryCalculationDO> calculationList = saveReqVO.getList().stream()
@@ -217,7 +217,7 @@
    @PutMapping("/update")
    @Operation(summary = "修改薪酬核算记录", description = "仅待确认状态可修改;实发工资由后端按收入/扣除项重算")
    @PreAuthorize("@ss.hasPermission('hrm:salary:calculate')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-calculation:calculate')")
    public CommonResult<Boolean> updateSalaryCalculation(@Valid @RequestBody HrmSalaryCalculationRespVO updateReqVO) {
        HrmSalaryCalculationDO calculation = BeanUtils.toBean(updateReqVO, HrmSalaryCalculationDO.class);
        salaryCalculationService.updateSalaryCalculation(calculation);
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSalaryPaymentController.java
@@ -47,7 +47,7 @@
    @GetMapping("/page")
    @Operation(summary = "获得薪资发放分页")
    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:query')")
    public CommonResult<PageResult<HrmSalaryPaymentRespVO>> getSalaryPaymentPage(@Valid HrmSalaryPaymentPageReqVO pageReqVO) {
        PageResult<HrmSalaryPaymentDO> pageResult = salaryPaymentService.getSalaryPaymentPage(pageReqVO);
        return success(BeanUtils.toBean(pageResult, HrmSalaryPaymentRespVO.class));
@@ -56,7 +56,7 @@
    @GetMapping("/get")
    @Operation(summary = "获得薪资发放")
    @Parameter(name = "id", description = "发放ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:query')")
    public CommonResult<HrmSalaryPaymentRespVO> getSalaryPayment(@RequestParam("id") Long id) {
        HrmSalaryPaymentDO salaryPayment = salaryPaymentService.getSalaryPayment(id);
        HrmSalaryPaymentRespVO respVO = BeanUtils.toBean(salaryPayment, HrmSalaryPaymentRespVO.class);
@@ -67,7 +67,7 @@
    @PostMapping("/generate")
    @Operation(summary = "生成薪资发放台账")
    @Parameter(name = "period", description = "核算周期", required = true, example = "2024-01")
    @PreAuthorize("@ss.hasPermission('hrm:salary:generate')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:generate')")
    public CommonResult<Long> generatePayment(@RequestParam("period") String period) {
        return success(salaryPaymentService.generatePayment(period));
    }
@@ -75,7 +75,7 @@
    @PostMapping("/pay")
    @Operation(summary = "发放薪资(整个台账)")
    @Parameter(name = "id", description = "发放台账ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:salary:pay')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:pay')")
    public CommonResult<Boolean> paySalary(@RequestParam("id") Long id) {
        salaryPaymentService.paySalary(id);
        return success(true);
@@ -83,7 +83,7 @@
    @PostMapping("/pay-detail")
    @Operation(summary = "批量发放薪资明细")
    @PreAuthorize("@ss.hasPermission('hrm:salary:pay')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:pay')")
    public CommonResult<Boolean> paySalaryDetail(@RequestBody Map<String, List<Long>> request) {
        List<Long> detailIds = request.get("detailIds");
        salaryPaymentService.paySalaryDetail(detailIds);
@@ -92,7 +92,7 @@
    @PostMapping("/revoke-detail")
    @Operation(summary = "批量撤销薪资发放明细")
    @PreAuthorize("@ss.hasPermission('hrm:salary:pay')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:pay')")
    public CommonResult<Boolean> revokeSalaryPaymentDetail(@RequestBody Map<String, List<Long>> request) {
        List<Long> detailIds = request.get("detailIds");
        salaryPaymentService.revokeSalaryPaymentDetail(detailIds);
@@ -102,7 +102,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除薪资发放台账")
    @Parameter(name = "id", description = "发放台账ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:salary:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:delete')")
    public CommonResult<Boolean> deleteSalaryPayment(@RequestParam("id") Long id) {
        salaryPaymentService.deleteSalaryPayment(id);
        return success(true);
@@ -110,7 +110,7 @@
    @GetMapping("/detail/page")
    @Operation(summary = "获得薪资发放明细分页")
    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:query')")
    public CommonResult<PageResult<HrmSalaryPaymentDetailRespVO>> getSalaryPaymentDetailPage(@Valid HrmSalaryPaymentDetailPageReqVO pageReqVO) {
        PageResult<HrmSalaryPaymentDetailDO> pageResult = salaryPaymentService.getSalaryPaymentDetailPage(pageReqVO);
        List<HrmSalaryPaymentDetailRespVO> list = BeanUtils.toBean(pageResult.getList(), HrmSalaryPaymentDetailRespVO.class);
@@ -124,7 +124,7 @@
    @GetMapping("/detail/list")
    @Operation(summary = "获得薪资发放明细列表")
    @Parameter(name = "paymentId", description = "发放台账ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:salary:query')")
    @PreAuthorize("@ss.hasPermission('hrm:salary-payment:query')")
    public CommonResult<List<HrmSalaryPaymentDetailRespVO>> getSalaryPaymentDetailList(@RequestParam("paymentId") Long paymentId) {
        List<HrmSalaryPaymentDetailDO> detailList = salaryPaymentService.getSalaryPaymentDetailListByPaymentId(paymentId);
        List<HrmSalaryPaymentDetailRespVO> list = BeanUtils.toBean(detailList, HrmSalaryPaymentDetailRespVO.class);
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSocialSecurityConfigController.java
@@ -31,7 +31,7 @@
    @PostMapping("/create")
    @Operation(summary = "创建社保公积金配置")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:create')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-config:create')")
    public CommonResult<Long> createSocialSecurityConfig(@Valid @RequestBody HrmSocialSecurityConfigSaveReqVO createReqVO) {
        HrmSocialSecurityConfigDO config = BeanUtils.toBean(createReqVO, HrmSocialSecurityConfigDO.class);
        return success(socialSecurityConfigService.createSocialSecurityConfig(config));
@@ -39,7 +39,7 @@
    @PutMapping("/update")
    @Operation(summary = "更新社保公积金配置")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:update')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-config:update')")
    public CommonResult<Boolean> updateSocialSecurityConfig(@Valid @RequestBody HrmSocialSecurityConfigSaveReqVO updateReqVO) {
        HrmSocialSecurityConfigDO config = BeanUtils.toBean(updateReqVO, HrmSocialSecurityConfigDO.class);
        socialSecurityConfigService.updateSocialSecurityConfig(config);
@@ -49,7 +49,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除社保公积金配置")
    @Parameter(name = "id", description = "配置ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-config:delete')")
    public CommonResult<Boolean> deleteSocialSecurityConfig(@RequestParam("id") Long id) {
        socialSecurityConfigService.deleteSocialSecurityConfig(id);
        return success(true);
@@ -58,7 +58,7 @@
    @GetMapping("/get")
    @Operation(summary = "获取社保公积金配置")
    @Parameter(name = "id", description = "配置ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-config:query')")
    public CommonResult<HrmSocialSecurityConfigRespVO> getSocialSecurityConfig(@RequestParam("id") Long id) {
        HrmSocialSecurityConfigDO config = socialSecurityConfigService.getSocialSecurityConfig(id);
        return success(BeanUtils.toBean(config, HrmSocialSecurityConfigRespVO.class));
@@ -66,7 +66,7 @@
    @GetMapping("/list")
    @Operation(summary = "获取社保公积金配置列表")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-config:query')")
    public CommonResult<List<HrmSocialSecurityConfigRespVO>> getSocialSecurityConfigList() {
        List<HrmSocialSecurityConfigDO> list = socialSecurityConfigService.getSocialSecurityConfigList();
        return success(BeanUtils.toBean(list, HrmSocialSecurityConfigRespVO.class));
@@ -75,7 +75,7 @@
    @GetMapping("/get-effective")
    @Operation(summary = "获取生效的社保公积金配置")
    @Parameter(name = "effectiveDate", description = "生效日期", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-config:query')")
    public CommonResult<HrmSocialSecurityConfigRespVO> getEffectiveSocialSecurityConfig(
            @RequestParam("effectiveDate") LocalDate effectiveDate) {
        HrmSocialSecurityConfigDO config = socialSecurityConfigService.getEffectiveSocialSecurityConfig(effectiveDate);
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmSocialSecuritySchemeController.java
@@ -30,7 +30,7 @@
    @PostMapping("/create")
    @Operation(summary = "创建社保公积金方案")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:create')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-scheme:create')")
    public CommonResult<Long> createScheme(@Valid @RequestBody HrmSocialSecuritySchemeSaveReqVO createReqVO) {
        HrmSocialSecuritySchemeDO scheme = BeanUtils.toBean(createReqVO, HrmSocialSecuritySchemeDO.class);
        return success(schemeService.createScheme(scheme));
@@ -38,7 +38,7 @@
    @PutMapping("/update")
    @Operation(summary = "更新社保公积金方案")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:update')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-scheme:update')")
    public CommonResult<Boolean> updateScheme(@Valid @RequestBody HrmSocialSecuritySchemeSaveReqVO updateReqVO) {
        HrmSocialSecuritySchemeDO scheme = BeanUtils.toBean(updateReqVO, HrmSocialSecuritySchemeDO.class);
        schemeService.updateScheme(scheme);
@@ -48,7 +48,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除社保公积金方案")
    @Parameter(name = "id", description = "方案ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-scheme:delete')")
    public CommonResult<Boolean> deleteScheme(@RequestParam("id") Long id) {
        schemeService.deleteScheme(id);
        return success(true);
@@ -57,7 +57,7 @@
    @GetMapping("/get")
    @Operation(summary = "获取社保公积金方案")
    @Parameter(name = "id", description = "方案ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-scheme:query')")
    public CommonResult<HrmSocialSecuritySchemeRespVO> getScheme(@RequestParam("id") Long id) {
        HrmSocialSecuritySchemeDO scheme = schemeService.getScheme(id);
        return success(BeanUtils.toBean(scheme, HrmSocialSecuritySchemeRespVO.class));
@@ -66,7 +66,7 @@
    @GetMapping("/list")
    @Operation(summary = "获取社保公积金方案列表")
    @Parameter(name = "status", description = "状态")
    @PreAuthorize("@ss.hasPermission('hrm:social-security:query')")
    @PreAuthorize("@ss.hasPermission('hrm:social-security-scheme:query')")
    public CommonResult<List<HrmSocialSecuritySchemeRespVO>> getSchemeList(
            @RequestParam(value = "status", required = false) Integer status) {
        List<HrmSocialSecuritySchemeDO> list = schemeService.getSchemeList(status);
yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/controller/admin/salary/HrmTaxRateConfigController.java
@@ -31,7 +31,7 @@
    @PostMapping("/create-list")
    @Operation(summary = "批量创建个税税率配置(一个税率表包含7个档位)")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate:create')")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate-config:create')")
    public CommonResult<Boolean> createTaxRateConfigList(@Valid @RequestBody List<HrmTaxRateConfigSaveReqVO> createReqVOList) {
        List<HrmTaxRateConfigDO> configList = BeanUtils.toBean(createReqVOList, HrmTaxRateConfigDO.class);
        taxRateConfigService.createTaxRateConfigList(configList);
@@ -40,7 +40,7 @@
    @PutMapping("/update")
    @Operation(summary = "更新个税税率配置")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate:update')")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate-config:update')")
    public CommonResult<Boolean> updateTaxRateConfig(@Valid @RequestBody HrmTaxRateConfigSaveReqVO updateReqVO) {
        HrmTaxRateConfigDO config = BeanUtils.toBean(updateReqVO, HrmTaxRateConfigDO.class);
        taxRateConfigService.updateTaxRateConfig(config);
@@ -50,7 +50,7 @@
    @DeleteMapping("/delete")
    @Operation(summary = "删除个税税率配置")
    @Parameter(name = "id", description = "配置ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate:delete')")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate-config:delete')")
    public CommonResult<Boolean> deleteTaxRateConfig(@RequestParam("id") Long id) {
        taxRateConfigService.deleteTaxRateConfig(id);
        return success(true);
@@ -59,7 +59,7 @@
    @GetMapping("/get")
    @Operation(summary = "获取个税税率配置")
    @Parameter(name = "id", description = "配置ID", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate:query')")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate-config:query')")
    public CommonResult<HrmTaxRateConfigRespVO> getTaxRateConfig(@RequestParam("id") Long id) {
        HrmTaxRateConfigDO config = taxRateConfigService.getTaxRateConfig(id);
        return success(BeanUtils.toBean(config, HrmTaxRateConfigRespVO.class));
@@ -67,7 +67,7 @@
    @GetMapping("/list")
    @Operation(summary = "获取个税税率配置列表")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate:query')")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate-config:query')")
    public CommonResult<List<HrmTaxRateConfigRespVO>> getTaxRateConfigList() {
        List<HrmTaxRateConfigDO> list = taxRateConfigService.getTaxRateConfigList();
        return success(BeanUtils.toBean(list, HrmTaxRateConfigRespVO.class));
@@ -76,7 +76,7 @@
    @GetMapping("/get-effective")
    @Operation(summary = "获取生效的个税税率配置列表(按级数排序)")
    @Parameter(name = "effectiveDate", description = "生效日期", required = true)
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate:query')")
    @PreAuthorize("@ss.hasPermission('hrm:tax-rate-config:query')")
    public CommonResult<List<HrmTaxRateConfigRespVO>> getEffectiveTaxRateConfigList(
            @RequestParam("effectiveDate") LocalDate effectiveDate) {
        List<HrmTaxRateConfigDO> list = taxRateConfigService.getEffectiveTaxRateConfigList(effectiveDate);