package cn.iocoder.yudao.module.hrm.controller.admin.approval; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.security.core.service.SecurityFrameworkService; import cn.iocoder.yudao.module.hrm.controller.admin.approval.vo.*; import cn.iocoder.yudao.module.hrm.service.approval.HrmOvertimeApplicationService; import io.swagger.v3.oas.annotations.Operation; 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.util.List; import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - HRM 加班申请") @RestController @RequestMapping("/hrm/overtime") @Validated public class HrmOvertimeApplicationController { @Resource private HrmOvertimeApplicationService service; @Resource private SecurityFrameworkService securityFrameworkService; @PostMapping("/create") @PreAuthorize("@ss.hasPermission('hrm:overtime:create')") public CommonResult create(@Valid @RequestBody HrmOvertimeApplicationSaveReqVO reqVO) { return success(service.create(reqVO, SecurityFrameworkUtils.getLoginUserId())); } @PutMapping("/update") @PreAuthorize("@ss.hasPermission('hrm:overtime:update')") public CommonResult update(@Valid @RequestBody HrmOvertimeApplicationSaveReqVO reqVO) { service.update(reqVO, SecurityFrameworkUtils.getLoginUserId()); return success(true); } @DeleteMapping("/delete") @PreAuthorize("@ss.hasPermission('hrm:overtime:delete')") public CommonResult delete(@RequestParam Long id) { service.delete(id, SecurityFrameworkUtils.getLoginUserId()); return success(true); } @GetMapping("/get") @PreAuthorize("@ss.hasAnyPermissions('hrm:overtime:query', 'bpm:task:query')") public CommonResult get(@RequestParam Long id) { return success(service.getDetail(id, SecurityFrameworkUtils.getLoginUserId(), canManage())); } @GetMapping("/current-applicant") @PreAuthorize("@ss.hasPermission('hrm:overtime:create')") public CommonResult currentApplicant() { return success(service.getCurrentApplicant(SecurityFrameworkUtils.getLoginUserId())); } @GetMapping("/page") @PreAuthorize("@ss.hasPermission('hrm:overtime:query')") public CommonResult> page(@Valid HrmOvertimeApplicationPageReqVO reqVO) { if (!canManage()) { reqVO.setUserId(SecurityFrameworkUtils.getLoginUserId()); } return success(service.getPage(reqVO)); } @PostMapping("/submit") @PreAuthorize("@ss.hasPermission('hrm:overtime:submit')") public CommonResult submit(@RequestParam Long id, @RequestParam String processDefinitionKey) { service.submit(id, processDefinitionKey, SecurityFrameworkUtils.getLoginUserId()); return success(true); } @PostMapping("/cancel") @PreAuthorize("@ss.hasPermission('hrm:overtime:cancel')") public CommonResult cancel(@RequestParam Long id) { service.cancel(id, SecurityFrameworkUtils.getLoginUserId()); return success(true); } @GetMapping("/approve-process-definition-list") @PreAuthorize("@ss.hasPermission('hrm:overtime:query')") public CommonResult>> processes() { return success(service.getApproveProcessDefinitionList()); } private boolean canManage() { return securityFrameworkService.hasPermission("hrm:overtime:manage"); } }