From db46314b9c56256a31c9114bd45d9bd63368cbd8 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 29 七月 2026 18:06:22 +0800
Subject: [PATCH] feat(crm): 实现CRM客户管理查看全部权限功能

---
 yudao-module-srm/src/main/java/cn/iocoder/yudao/module/srm/service/tender/SrmTenderBidServiceImpl.java |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/yudao-module-srm/src/main/java/cn/iocoder/yudao/module/srm/service/tender/SrmTenderBidServiceImpl.java b/yudao-module-srm/src/main/java/cn/iocoder/yudao/module/srm/service/tender/SrmTenderBidServiceImpl.java
index 77b1270..91e6e74 100644
--- a/yudao-module-srm/src/main/java/cn/iocoder/yudao/module/srm/service/tender/SrmTenderBidServiceImpl.java
+++ b/yudao-module-srm/src/main/java/cn/iocoder/yudao/module/srm/service/tender/SrmTenderBidServiceImpl.java
@@ -51,6 +51,10 @@
         if (!supplierApplyMapper.existsApprovedBySupplierId(createReqVO.getSupplierId())) {
             throw ServiceExceptionUtil.exception(ErrorCodeConstants.BID_SUPPLIER_NOT_APPROVED);
         }
+        // 鏍¢獙鎶曟爣缂栧彿鏄惁閲嶅
+        if (tenderBidMapper.existsByBidNo(createReqVO.getBidNo())) {
+            throw ServiceExceptionUtil.exception(ErrorCodeConstants.BID_NO_EXISTS);
+        }
         // 鏍¢獙渚涘簲鍟嗘槸鍚﹀凡鍙備笌鎶曟爣
         SrmTenderBidDO existing = tenderBidMapper.selectByTenderAndSupplier(createReqVO.getTenderProjectId(), createReqVO.getSupplierId());
         if (existing != null) {
@@ -88,12 +92,15 @@
     @Override
     public Long createQuote(SrmSupplierQuoteSaveReqVO createReqVO) {
         // 鏍¢獙鎶曟爣鐘舵�侊紙鎾ゆ爣鍚庝笉鍏佽鎶ヤ环锛�
-        validateBidNotWithdrawn(createReqVO.getBidId());
+        SrmTenderBidDO bid = validateBidNotWithdrawn(createReqVO.getBidId());
         // 鏍¢獙鍚屼竴鎶曟爣涓嬬墿鏂欎笉鍙噸澶嶆姤浠�
         if (supplierQuoteMapper.existsByBidAndMaterial(createReqVO.getBidId(), createReqVO.getTenderMaterialId())) {
             throw ServiceExceptionUtil.exception(ErrorCodeConstants.QUOTE_MATERIAL_DUPLICATE);
         }
         SrmSupplierQuoteDO quote = BeanUtils.toBean(createReqVO, SrmSupplierQuoteDO.class);
+        // 浠庢姇鏍囪褰曚腑鑾峰彇鎷涙爣椤圭洰ID鍜屼緵搴斿晢ID锛岄伩鍏嶅墠绔仐婕忓鑷存暟鎹簱绾︽潫澶辫触
+        quote.setTenderProjectId(bid.getTenderProjectId());
+        quote.setSupplierId(bid.getSupplierId());
         supplierQuoteMapper.insert(quote);
         return quote.getId();
     }
@@ -128,11 +135,12 @@
         return bid;
     }
 
-    private void validateBidNotWithdrawn(Long bidId) {
+    private SrmTenderBidDO validateBidNotWithdrawn(Long bidId) {
         SrmTenderBidDO bid = validateBidExists(bidId);
         if (BidStatusEnum.WITHDRAWN.getCode().equals(bid.getBidStatus())) {
             throw ServiceExceptionUtil.exception(ErrorCodeConstants.BID_WITHDRAWN_CANNOT_QUOTE);
         }
+        return bid;
     }
 
     private void validateTenderStatus(Long tenderProjectId) {

--
Gitblit v1.9.3