package com.sinata.appointment.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; import com.sinata.appointment.common.Result; import com.sinata.appointment.common.ResultUtil; import com.sinata.appointment.dto.ApprovalFlowNodeVo; import com.sinata.appointment.dto.ApprovalActionRequest; import com.sinata.appointment.entity.ApprovalTask; import com.sinata.appointment.service.ApprovalFlowViewApplicationService; import com.sinata.appointment.service.ApprovalApplicationService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @Tag(name = "审批") @RestController @RequestMapping("/api/approvals") @RequiredArgsConstructor public class ApprovalController { private final ApprovalApplicationService approvalApplicationService; private final ApprovalFlowViewApplicationService approvalFlowViewApplicationService; @Operation(summary = "我的待办") @GetMapping("/todo") @SaCheckPermission("approvals:page") public Result> todo( @RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size) { return ResultUtil.page(approvalApplicationService.pageMyTodo(page, size)); } @Operation(summary = "处理审批") @PostMapping("/action") @SaCheckPermission("approvals:action") public Result action(@Valid @RequestBody ApprovalActionRequest request) { approvalApplicationService.handleAction(request); return ResultUtil.success(); } @Operation(summary = "预约审批流程树") @GetMapping("/flow-tree") @SaCheckPermission(value = {"appointments:detail", "approvals:page"}, mode = SaMode.OR) public Result> flowTree( @RequestParam Long orderId, @RequestParam @NotBlank(message = "orderUuid 不能为空") String orderUuid) { return ResultUtil.data(approvalFlowViewApplicationService.treeByOrderId(orderId, orderUuid)); } }