7 天以前 e1797a873bf114329f4870062201d388155ef014
yudao-module-srm/src/main/java/cn/iocoder/yudao/module/srm/controller/admin/tender/SrmTenderProjectController.java
@@ -5,6 +5,8 @@
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.srm.controller.admin.tender.vo.*;
import cn.iocoder.yudao.module.srm.service.tender.SrmTenderProjectService;
import cn.iocoder.yudao.module.srm.service.tender.SrmTenderProjectServiceImpl;
import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -26,6 +28,9 @@
    @Resource
    private SrmTenderProjectService tenderProjectService;
    @Resource
    private StorageAttachmentApi storageAttachmentApi;
    @PostMapping("/create")
    @Operation(summary = "创建招标项目")
@@ -54,14 +59,27 @@
    @Operation(summary = "获取招标项目详情")
    @PreAuthorize("@ss.hasPermission('srm:tender-project:query')")
    public CommonResult<SrmTenderProjectRespVO> getTenderProject(@RequestParam("id") Long id) {
        return success(BeanUtils.toBean(tenderProjectService.getTenderProject(id), SrmTenderProjectRespVO.class));
        var resp = BeanUtils.toBean(tenderProjectService.getTenderProject(id), SrmTenderProjectRespVO.class);
        enrichAttachments(List.of(resp));
        return success(resp);
    }
    @GetMapping("/page")
    @Operation(summary = "获取招标项目分页")
    @PreAuthorize("@ss.hasPermission('srm:tender-project:query')")
    public CommonResult<PageResult<SrmTenderProjectRespVO>> getTenderProjectPage(@Valid SrmTenderProjectPageReqVO pageReqVO) {
        return success(BeanUtils.toBean(tenderProjectService.getTenderProjectPage(pageReqVO), SrmTenderProjectRespVO.class));
        var pageResult = tenderProjectService.getTenderProjectPage(pageReqVO);
        var respList = BeanUtils.toBean(pageResult.getList(), SrmTenderProjectRespVO.class);
        enrichAttachments(respList);
        return success(new PageResult<>(respList, pageResult.getTotal()));
    }
    // ========== 关联数据填充 ==========
    private void enrichAttachments(List<SrmTenderProjectRespVO> list) {
        if (list == null || list.isEmpty()) return;
        list.forEach(vo -> vo.setAttachmentList(storageAttachmentApi.listAttachments(
                SrmTenderProjectServiceImpl.TENDER_PROJECT_RECORD_TYPE, vo.getId())));
    }
    @PutMapping("/publish")
@@ -96,6 +114,32 @@
        return success(true);
    }
    @PutMapping("/update-info")
    @Operation(summary = "部分更新招标信息(仅发布中/投标中可编辑:招标说明和资质要求)")
    @PreAuthorize("@ss.hasPermission('srm:tender-project:update')")
    public CommonResult<Boolean> updateTenderProjectInfo(@Valid @RequestBody SrmTenderProjectPartialUpdateReqVO updateReqVO) {
        tenderProjectService.updateTenderProjectPartial(updateReqVO);
        return success(true);
    }
    // ========== 简易模式操作 ==========
    @PutMapping("/start-price-comparing")
    @Operation(summary = "开始比价(简易版)")
    @PreAuthorize("@ss.hasPermission('srm:tender-project:update')")
    public CommonResult<Boolean> startPriceComparing(@RequestParam("id") Long id) {
        tenderProjectService.startPriceComparing(id);
        return success(true);
    }
    @PutMapping("/confirm")
    @Operation(summary = "确认中标并生成采购订单(简易版)")
    @PreAuthorize("@ss.hasPermission('srm:tender-project:update')")
    public CommonResult<Boolean> confirmTenderProject(@Valid @RequestBody SrmTenderConfirmReqVO reqVO) {
        tenderProjectService.confirmTenderProject(reqVO.getId(), reqVO.getBidId());
        return success(true);
    }
    // ========== 物料子表 ==========
    @PostMapping("/material/create")