From a378f38df1785cbc8c9f1d55ace6a37952d2f65b Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 10 八月 2026 14:01:56 +0800
Subject: [PATCH] feat(crm): 新增开票功能并完善权限查询

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
index d875b2d..88705a1 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
@@ -19,6 +19,8 @@
 import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractConfigDO;
 import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
 import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractProductDO;
+import cn.iocoder.yudao.module.crm.dal.dataobject.quotation.CrmSaleQuotationDO;
+import cn.iocoder.yudao.module.crm.dal.dataobject.quotation.CrmSaleQuotationProductDO;
 import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractMapper;
 import cn.iocoder.yudao.module.crm.dal.mysql.contract.CrmContractProductMapper;
 import cn.iocoder.yudao.module.crm.dal.redis.no.CrmNoRedisDAO;
@@ -28,11 +30,12 @@
 import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission;
 import cn.iocoder.yudao.module.crm.service.business.CrmBusinessService;
 import cn.iocoder.yudao.module.crm.service.contact.CrmContactService;
+import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
-import cn.iocoder.yudao.module.crm.service.product.CrmProductService;
+import cn.iocoder.yudao.module.crm.service.quotation.CrmSaleQuotationService;
 import cn.iocoder.yudao.module.crm.service.receivable.CrmReceivableService;
 import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
 import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderCreateReqDTO;
@@ -99,9 +102,9 @@
     @Resource
     private CrmPermissionService crmPermissionService;
     @Resource
-    private CrmProductService productService;
-    @Resource
     private CrmCustomerService customerService;
+    @Resource
+    private CrmCustomerApi customerApi;
     @Resource
     private CrmBusinessService businessService;
     @Resource
@@ -123,6 +126,9 @@
     private ErpSaleOrderApi saleOrderApi;
     @Resource
     private MdmItemApi mdmItemApi;
+    @Resource
+    @Lazy // 寤惰繜鍔犺浇锛岄伩鍏嶅惊鐜緷璧栵紙quotation 鍐呴儴寮曠敤浜� contractService锛�
+    private CrmSaleQuotationService crmSaleQuotationService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -274,6 +280,11 @@
 
         // 2.1 鍒犻櫎鍚堝悓
         contractMapper.deleteById(id);
+        // 2.2 鍒犻櫎鍚堝悓鏃讹紝瑙i櫎鍏宠仈鐨勬姤浠峰崟寮曠敤
+        CrmSaleQuotationDO quotation = crmSaleQuotationService.getByContractId(id);
+        if (quotation != null) {
+            crmSaleQuotationService.clearContractReference(quotation.getId());
+        }
         // 2.2 鍒犻櫎鏁版嵁鏉冮檺
         crmPermissionService.deletePermission(CrmBizTypeEnum.CRM_CONTRACT.getType(), id);
 
@@ -471,8 +482,10 @@
                 return PageResult.empty();
             }
         }
-        // 2. 鏌ヨ鍒嗛〉
-        return contractMapper.selectPage(pageReqVO, userId, config);
+        // 2. 鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑瀹㈡埛 ID 鍒楄〃
+        List<Long> permittedCustomerIds = customerApi.getPermittedCustomerIds();
+        // 3. 鏌ヨ鍒嗛〉
+        return contractMapper.selectPage(pageReqVO, userId, config, permittedCustomerIds);
     }
 
     @Override

--
Gitblit v1.9.3