seatonwan9
2025-08-19 84c6e1df4b6bd48ee0517a33778b514008022875
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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<Object> 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<Object> 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<Object> getApprovalRecordsByOrderId(@ApiParam("订单ID") @PathVariable String orderId) {
        try {
            List<ApprovalRecord> records = approvalRecordService.getApprovalRecordsByOrderId(orderId);
            return Result.success(records);
        } catch (Exception e) {
            log.error("查询订单审批记录失败", e);
            return Result.error("查询订单审批记录失败:" + e.getMessage());
        }
    }
 
    @PostMapping("/approve")
    @ApiOperation("审批订单")
    public Result<Object> 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<Object> 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<Object> 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());
        }
    }
}