gaoluyang
5 天以前 8168aef3c7557c9e1361892270a1ebe35dbddba5
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package cn.iocoder.yudao.module.srm.controller.admin.inquiry;
 
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.srm.controller.admin.inquiry.vo.*;
import cn.iocoder.yudao.module.srm.dal.dataobject.SrmInquiryDO;
import cn.iocoder.yudao.module.srm.service.inquiry.SrmInquiryService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
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 static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
@Tag(name = "管理后台 - SRM 询价比价")
@RestController
@RequestMapping("/srm/inquiry")
@Validated
public class SrmInquiryController {
 
    @Resource
    private SrmInquiryService inquiryService;
 
    @PostMapping("/create")
    @Operation(summary = "创建询价单")
    @PreAuthorize("@ss.hasPermission('srm:inquiry:create')")
    public CommonResult<Long> createInquiry(@Valid @RequestBody SrmInquirySaveReqVO createReqVO) {
        return success(inquiryService.createInquiry(createReqVO));
    }
 
    @PostMapping("/create-from-request")
    @Operation(summary = "由采购申请发起询价")
    @Parameter(name = "requestId", description = "采购申请编号", required = true)
    @PreAuthorize("@ss.hasPermission('srm:inquiry:create')")
    public CommonResult<Long> createInquiryFromPurchaseRequest(@RequestParam("requestId") Long requestId) {
        return success(inquiryService.createInquiryFromPurchaseRequest(requestId));
    }
 
    @PutMapping("/update")
    @Operation(summary = "更新询价单(仅草稿)")
    @PreAuthorize("@ss.hasPermission('srm:inquiry:update')")
    public CommonResult<Boolean> updateInquiry(@Valid @RequestBody SrmInquirySaveReqVO updateReqVO) {
        inquiryService.updateInquiry(updateReqVO);
        return success(true);
    }
 
    @DeleteMapping("/delete")
    @Operation(summary = "删除询价单(仅草稿)")
    @Parameter(name = "id", description = "编号", required = true)
    @PreAuthorize("@ss.hasPermission('srm:inquiry:delete')")
    public CommonResult<Boolean> deleteInquiry(@RequestParam("id") Long id) {
        inquiryService.deleteInquiry(id);
        return success(true);
    }
 
    @GetMapping("/get")
    @Operation(summary = "获取询价单详情")
    @Parameter(name = "id", description = "编号", required = true)
    public CommonResult<SrmInquiryRespVO> getInquiry(@RequestParam("id") Long id) {
        return success(inquiryService.getInquiryDetail(id));
    }
 
    @GetMapping("/page")
    @Operation(summary = "询价单分页查询")
    public CommonResult<PageResult<SrmInquiryRespVO>> getInquiryPage(@Valid SrmInquiryPageReqVO pageReqVO) {
        PageResult<SrmInquiryDO> pageResult = inquiryService.getInquiryPage(pageReqVO);
        return success(BeanUtils.toBean(pageResult, SrmInquiryRespVO.class));
    }
 
    @GetMapping("/simple-list")
    @Operation(summary = "获取询价单精简列表(用于投标保证金选择)")
    public CommonResult<List<SrmInquiryRespVO>> getInquirySimpleList() {
        List<SrmInquiryDO> list = inquiryService.getInquirySimpleList();
        return success(BeanUtils.toBean(list, SrmInquiryRespVO.class));
    }
 
    @PutMapping("/submit-approval")
    @Operation(summary = "提交询价审核")
    @PreAuthorize("@ss.hasPermission('srm:inquiry:confirm')")
    public CommonResult<Boolean> submitApproval(@RequestParam("id") Long id) {
        inquiryService.submitApproval(id, cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId());
        return success(true);
    }
 
    @PutMapping("/publish")
    @Operation(summary = "发布询价单:草稿 -> 询价中")
    @Parameter(name = "id", description = "编号", required = true)
    @PreAuthorize("@ss.hasPermission('srm:inquiry:update')")
    public CommonResult<Boolean> publishInquiry(@RequestParam("id") Long id) {
        inquiryService.publishInquiry(id);
        return success(true);
    }
 
    @PutMapping("/cancel")
    @Operation(summary = "取消询价单")
    @Parameter(name = "id", description = "编号", required = true)
    @PreAuthorize("@ss.hasPermission('srm:inquiry:update')")
    public CommonResult<Boolean> cancelInquiry(@RequestParam("id") Long id) {
        inquiryService.cancelInquiry(id);
        return success(true);
    }
 
    @PostMapping("/save-quotes")
    @Operation(summary = "批量保存供应商报价")
    @PreAuthorize("@ss.hasPermission('srm:inquiry:quote')")
    public CommonResult<Boolean> saveQuotes(@Valid @RequestBody SrmInquiryQuoteSaveReqVO saveReqVO) {
        inquiryService.saveQuotes(saveReqVO);
        return success(true);
    }
 
    @GetMapping("/compare")
    @Operation(summary = "获取询价比价视图(产品行 x 供应商报价)")
    @Parameter(name = "id", description = "编号", required = true)
    public CommonResult<SrmInquiryRespVO> getCompare(@RequestParam("id") Long id) {
        return success(inquiryService.getCompare(id));
    }
 
    @PostMapping("/confirm")
    @Operation(summary = "确认中标并生成采购订单草稿")
    @PreAuthorize("@ss.hasPermission('srm:inquiry:confirm')")
    public CommonResult<SrmInquiryConfirmRespVO> confirmInquiry(
            @Valid @RequestBody SrmInquiryConfirmReqVO confirmReqVO) {
        return success(inquiryService.confirmInquiry(confirmReqVO));
    }
 
}