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 createInquiry(@Valid @RequestBody SrmInquirySaveReqVO createReqVO) { return success(inquiryService.createInquiry(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新询价单(仅草稿)") @PreAuthorize("@ss.hasPermission('srm:inquiry:update')") public CommonResult 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 deleteInquiry(@RequestParam("id") Long id) { inquiryService.deleteInquiry(id); return success(true); } @GetMapping("/get") @Operation(summary = "获取询价单详情") @Parameter(name = "id", description = "编号", required = true) public CommonResult getInquiry(@RequestParam("id") Long id) { return success(inquiryService.getInquiryDetail(id)); } @GetMapping("/page") @Operation(summary = "询价单分页查询") public CommonResult> getInquiryPage(@Valid SrmInquiryPageReqVO pageReqVO) { PageResult pageResult = inquiryService.getInquiryPage(pageReqVO); return success(BeanUtils.toBean(pageResult, SrmInquiryRespVO.class)); } @GetMapping("/simple-list") @Operation(summary = "获取询价单精简列表(用于投标保证金选择)") public CommonResult> getInquirySimpleList() { List list = inquiryService.getInquirySimpleList(); return success(BeanUtils.toBean(list, SrmInquiryRespVO.class)); } @PutMapping("/publish") @Operation(summary = "发布询价单:草稿 -> 询价中") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('srm:inquiry:update')") public CommonResult 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 cancelInquiry(@RequestParam("id") Long id) { inquiryService.cancelInquiry(id); return success(true); } @PostMapping("/save-quotes") @Operation(summary = "批量保存供应商报价") @PreAuthorize("@ss.hasPermission('srm:inquiry:quote')") public CommonResult saveQuotes(@Valid @RequestBody SrmInquiryQuoteSaveReqVO saveReqVO) { inquiryService.saveQuotes(saveReqVO); return success(true); } @GetMapping("/compare") @Operation(summary = "获取询价比价视图(产品行 x 供应商报价)") @Parameter(name = "id", description = "编号", required = true) public CommonResult getCompare(@RequestParam("id") Long id) { return success(inquiryService.getCompare(id)); } @PostMapping("/confirm") @Operation(summary = "确认中标并生成采购订单草稿") @PreAuthorize("@ss.hasPermission('srm:inquiry:confirm')") public CommonResult confirmInquiry( @Valid @RequestBody SrmInquiryConfirmReqVO confirmReqVO) { return success(inquiryService.confirmInquiry(confirmReqVO)); } }