package com.webmanage.controller; import com.webmanage.common.Result; import com.webmanage.dto.ApprovalActionDTO; import com.webmanage.dto.ApprovalQueryDTO; import com.webmanage.entity.ApprovalRecord; import com.webmanage.service.ApprovalRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.util.List; /** * 审批管理Controller */ @Slf4j @RestController @RequestMapping("/api/approval") @Api(tags = "审批管理") @Validated public class ApprovalController { @Resource private ApprovalRecordService approvalRecordService; @PostMapping("/page") @ApiOperation("分页查询审批记录") public Result getApprovalRecordPage(@Valid @RequestBody ApprovalQueryDTO queryDTO) { try { return Result.success(approvalRecordService.getApprovalRecordPage(queryDTO)); } catch (Exception e) { log.error("查询审批记录失败", e); return Result.error("查询审批记录失败:" + e.getMessage()); } } @PostMapping("/pending/page") @ApiOperation("分页查询待审批订单") public Result getPendingApprovalPage(@Valid @RequestBody ApprovalQueryDTO queryDTO) { try { return Result.success(approvalRecordService.getPendingApprovalPage(queryDTO)); } catch (Exception e) { log.error("查询待审批订单失败", e); return Result.error("查询待审批订单失败:" + e.getMessage()); } } @GetMapping("/order/{orderId}") @ApiOperation("根据订单ID查询审批记录") public Result getApprovalRecordsByOrderId(@ApiParam("订单ID") @PathVariable String orderId) { try { List records = approvalRecordService.getApprovalRecordsByOrderId(orderId); return Result.success(records); } catch (Exception e) { log.error("查询订单审批记录失败", e); return Result.error("查询订单审批记录失败:" + e.getMessage()); } } @PostMapping("/approve") @ApiOperation("审批订单") public Result approveOrder(@Valid @RequestBody ApprovalActionDTO actionDTO) { try { boolean result = approvalRecordService.approveOrder(actionDTO); if (result) { return Result.success("审批成功"); } else { return Result.error("审批失败"); } } catch (Exception e) { log.error("审批订单失败", e); return Result.error("审批订单失败:" + e.getMessage()); } } @PostMapping("/authorize/{approvalId}") @ApiOperation("授权审批") public Result authorizeApproval(@ApiParam("审批记录ID") @PathVariable Long approvalId, @ApiParam("授权人ID") @RequestParam @NotNull Long authorizerId, @ApiParam("授权人姓名") @RequestParam @NotNull String authorizerName, @ApiParam("授权意见") @RequestParam String authorizationOpinion) { try { boolean result = approvalRecordService.authorizeApproval(approvalId, authorizerId, authorizerName, authorizationOpinion); if (result) { return Result.success("授权成功"); } else { return Result.error("授权失败"); } } catch (Exception e) { log.error("授权审批失败", e); return Result.error("授权审批失败:" + e.getMessage()); } } @GetMapping("/status/{orderId}") @ApiOperation("获取订单当前审批状态") public Result getOrderCurrentApprovalStatus(@ApiParam("订单ID") @PathVariable String orderId) { try { String status = approvalRecordService.getOrderCurrentApprovalStatus(orderId); return Result.success(status); } catch (Exception e) { log.error("获取订单审批状态失败", e); return Result.error("获取订单审批状态失败:" + e.getMessage()); } } }