package com.sinata.appointment.controller; import com.sinata.appointment.common.Result; import com.sinata.appointment.common.ResultUtil; import com.sinata.appointment.dto.ApprovalFlowNodeVo; import com.sinata.appointment.dto.MiniApprovalActionRequest; import com.sinata.appointment.dto.MiniApprovalAllVo; import com.sinata.appointment.dto.MiniApprovalDetailVo; import com.sinata.appointment.dto.MiniApprovalTodoVo; import com.sinata.appointment.dto.MiniHandlerApprovalActionRequest; import com.sinata.appointment.dto.MiniHandlerApprovalTodoVo; import com.sinata.appointment.service.MiniApprovalAggregateApplicationService; import com.sinata.appointment.service.ApprovalFlowViewApplicationService; import com.sinata.appointment.service.MiniApprovalDetailApplicationService; import com.sinata.appointment.service.MiniHandlerApprovalApplicationService; 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 java.time.LocalDate; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; 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/mini/approvals") @RequiredArgsConstructor public class MiniApprovalController { private final MiniHandlerApprovalApplicationService miniHandlerApprovalApplicationService; private final MiniApprovalAggregateApplicationService miniApprovalAggregateApplicationService; private final MiniApprovalDetailApplicationService miniApprovalDetailApplicationService; private final ApprovalFlowViewApplicationService approvalFlowViewApplicationService; @Operation(summary = "小程序可审批待办列表") @GetMapping("/todo") public Result> myTodo( @RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size, @RequestParam(required = false) String visitorNameKeyword, @RequestParam(required = false) String visitedUserNameKeyword, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate visitDate) { String keyword = visitorNameKeyword != null && !visitorNameKeyword.isBlank() ? visitorNameKeyword : visitedUserNameKeyword; return ResultUtil.page( miniHandlerApprovalApplicationService.pageMyTodoAll( page, size, keyword, visitDate)); } @Operation(summary = "小程序审批统一列表(待办+历史)") @GetMapping("/all") public Result> myAll( @RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size, @RequestParam(required = false) String visitorNameKeyword, @RequestParam(required = false) String visitedUserNameKeyword, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate visitDate) { String keyword = visitorNameKeyword != null && !visitorNameKeyword.isBlank() ? visitorNameKeyword : visitedUserNameKeyword; return ResultUtil.page( miniApprovalAggregateApplicationService.pageMyAll( page, size, keyword, visitDate)); } @Operation(summary = "经办人一级审批待办") @GetMapping("/handler/todo") public Result> myHandlerTodo( @RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size, @RequestParam(required = false) String visitorNameKeyword, @RequestParam(required = false) String visitedUserNameKeyword, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate visitDate) { String keyword = visitorNameKeyword != null && !visitorNameKeyword.isBlank() ? visitorNameKeyword : visitedUserNameKeyword; return ResultUtil.page( miniHandlerApprovalApplicationService.pageMyTodo( page, size, keyword, visitDate)); } @Operation(summary = "经办人一级审批处理") @PostMapping("/handler/action") public Result handlerAction(@Valid @RequestBody MiniHandlerApprovalActionRequest request) { miniHandlerApprovalApplicationService.handleAction(request); return ResultUtil.success(); } @Operation(summary = "小程序其他节点审批处理") @PostMapping("/action") public Result action(@Valid @RequestBody MiniApprovalActionRequest request) { miniHandlerApprovalApplicationService.handleOtherAction(request); return ResultUtil.success(); } @Operation(summary = "预约审批流程树") @GetMapping("/flow-tree") public Result> flowTree( @RequestParam Long orderId, @RequestParam @NotBlank(message = "orderUuid 不能为空") String orderUuid) { return ResultUtil.data(approvalFlowViewApplicationService.treeByOrderId(orderId, orderUuid)); } @Operation(summary = "小程序审批详情") @GetMapping("/detail") public Result detail( @RequestParam(required = false) Long taskId, @RequestParam(required = false) String taskUuid, @RequestParam(required = false) Long orderId, @RequestParam(required = false) String orderUuid) { return ResultUtil.data(miniApprovalDetailApplicationService.detail(taskId, taskUuid, orderId, orderUuid)); } }