package cn.iocoder.yudao.module.hrm.controller.admin.salary; 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.HrmTaxRateConfigRespVO; import cn.iocoder.yudao.module.hrm.controller.admin.salary.vo.HrmTaxRateConfigSaveReqVO; import cn.iocoder.yudao.module.hrm.dal.dataobject.salary.HrmTaxRateConfigDO; import cn.iocoder.yudao.module.hrm.service.salary.HrmTaxRateConfigService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - HRM 个税税率配置") @RestController @RequestMapping("/hrm/salary/tax-rate-config") @Validated public class HrmTaxRateConfigController { @Resource private HrmTaxRateConfigService taxRateConfigService; @PostMapping("/create-list") @Operation(summary = "批量创建个税税率配置(一个税率表包含7个档位)") @PreAuthorize("@ss.hasPermission('hrm:tax-rate:create')") public CommonResult createTaxRateConfigList(@Valid @RequestBody List createReqVOList) { List configList = BeanUtils.toBean(createReqVOList, HrmTaxRateConfigDO.class); taxRateConfigService.createTaxRateConfigList(configList); return success(true); } @PutMapping("/update") @Operation(summary = "更新个税税率配置") @PreAuthorize("@ss.hasPermission('hrm:tax-rate:update')") public CommonResult updateTaxRateConfig(@Valid @RequestBody HrmTaxRateConfigSaveReqVO updateReqVO) { HrmTaxRateConfigDO config = BeanUtils.toBean(updateReqVO, HrmTaxRateConfigDO.class); taxRateConfigService.updateTaxRateConfig(config); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除个税税率配置") @Parameter(name = "id", description = "配置ID", required = true) @PreAuthorize("@ss.hasPermission('hrm:tax-rate:delete')") public CommonResult deleteTaxRateConfig(@RequestParam("id") Long id) { taxRateConfigService.deleteTaxRateConfig(id); return success(true); } @GetMapping("/get") @Operation(summary = "获取个税税率配置") @Parameter(name = "id", description = "配置ID", required = true) @PreAuthorize("@ss.hasPermission('hrm:tax-rate:query')") public CommonResult getTaxRateConfig(@RequestParam("id") Long id) { HrmTaxRateConfigDO config = taxRateConfigService.getTaxRateConfig(id); return success(BeanUtils.toBean(config, HrmTaxRateConfigRespVO.class)); } @GetMapping("/list") @Operation(summary = "获取个税税率配置列表") @PreAuthorize("@ss.hasPermission('hrm:tax-rate:query')") public CommonResult> getTaxRateConfigList() { List list = taxRateConfigService.getTaxRateConfigList(); return success(BeanUtils.toBean(list, HrmTaxRateConfigRespVO.class)); } @GetMapping("/get-effective") @Operation(summary = "获取生效的个税税率配置列表(按级数排序)") @Parameter(name = "effectiveDate", description = "生效日期", required = true) @PreAuthorize("@ss.hasPermission('hrm:tax-rate:query')") public CommonResult> getEffectiveTaxRateConfigList( @RequestParam("effectiveDate") LocalDate effectiveDate) { List list = taxRateConfigService.getEffectiveTaxRateConfigList(effectiveDate); return success(BeanUtils.toBean(list, HrmTaxRateConfigRespVO.class)); } }