From f02d0df2f1dfc7a8b775cf50d45375e57628a5ef Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 10 十一月 2026 11:26:22 +0800
Subject: [PATCH] feat(ncr): 完善NCR处置联动逻辑与关闭校验

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java |   77 +++++++++++++++++++++++++++++++++-----
 1 files changed, 67 insertions(+), 10 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java
index f6ac8c3..1c1637e 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivableService.java
@@ -5,6 +5,7 @@
 import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.receivable.CrmReceivableSaveReqVO;
 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
 import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO;
+import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableItemDO;
 import jakarta.validation.Valid;
 
 import java.math.BigDecimal;
@@ -37,12 +38,29 @@
     void updateReceivable(@Valid CrmReceivableSaveReqVO updateReqVO);
 
     /**
-     * 鏇存柊鍥炴娴佺▼瀹℃壒缁撴灉
+     * 鎻愪氦鍥炴瀹℃壒锛堝垱寤� BPM 娴佺▼瀹炰緥锛�
      *
-     * @param id        鍥炴缂栧彿
+     * @param id     缂栧彿
+     * @param remark 瀹℃壒澶囨敞锛屽彲涓虹┖
+     * @param userId 鍙戣捣浜虹紪鍙�
+     */
+    void submitReceivable(Long id, String remark, Long userId);
+
+    /**
+     * 鏇存柊鍥炴瀹℃壒缁撴灉锛堢敱 BPM 娴佺▼鐘舵�佺洃鍚櫒璋冪敤锛�
+     *
+     * @param id        缂栧彿
      * @param bpmResult BPM 瀹℃壒缁撴灉
      */
     void updateReceivableAuditStatus(Long id, Integer bpmResult);
+
+    /**
+     * 鏇存柊鍥炴鐨勭姸鎬侊紙瀹℃牳/鍙嶅鏍革級
+     *
+     * @param id     缂栧彿
+     * @param status 鐘舵��
+     */
+    void updateReceivableStatus(Long id, Integer status);
 
     /**
      * 鍒犻櫎鍥炴
@@ -50,14 +68,6 @@
      * @param id 缂栧彿
      */
     void deleteReceivable(Long id);
-
-    /**
-     * 鍙戣捣鍥炴瀹℃壒娴佺▼
-     *
-     * @param id     鍥炴缂栧彿
-     * @param userId 鐢ㄦ埛缂栧彿
-     */
-    void submitReceivable(Long id, Long userId);
 
     /**
      * 鑾峰緱鍥炴
@@ -74,6 +84,22 @@
      * @return 鍥炴鍒楄〃
      */
     List<CrmReceivableDO> getReceivableList(Collection<Long> ids);
+
+    /**
+     * 鑾峰緱鍥炴鐨勬牳閿�鏄庣粏
+     *
+     * @param receivableId 鍥炴缂栧彿
+     * @return 鏍搁攢鏄庣粏鍒楄〃
+     */
+    List<CrmReceivableItemDO> getReceivableItemList(Long receivableId);
+
+    /**
+     * 鑾峰緱瀹㈡埛涓嬪叏閮ㄥ洖娆剧殑鏍搁攢鏄庣粏
+     *
+     * @param customerId 瀹㈡埛缂栧彿
+     * @return 鏍搁攢鏄庣粏鍒楄〃锛堟寜鍥炴鍊掑簭锛�
+     */
+    List<CrmReceivableItemDO> getReceivableItemListByCustomerId(Long customerId);
 
     /**
      * 鑾峰緱鍥炴 Map
@@ -123,6 +149,14 @@
     Map<Long, BigDecimal> getReceivablePriceMapByContractId(Collection<Long> contractIds);
 
     /**
+     * 鑾峰緱寮�绁ㄥ凡鍥炴閲戦 Map锛堣崏绋� + 瀹℃壒涓� + 瀹℃壒閫氳繃锛�
+     *
+     * @param invoiceIds 寮�绁ㄧ紪鍙�
+     * @return 宸插洖娆鹃噾棰� Map
+     */
+    Map<Long, BigDecimal> getReceivablePriceMapByInvoiceId(Collection<Long> invoiceIds);
+
+    /**
      * 鏍规嵁鍚堝悓缂栧彿鏌ヨ鍥炴鏁伴噺
      *
      * @param contractId 鍚堝悓缂栧彿
@@ -130,4 +164,27 @@
      */
     Long getReceivableCountByContractId(Long contractId);
 
+    /**
+     * 鏍规嵁鍚堝悓缂栧彿鏌ヨ宸插洖娆鹃噾棰�
+     *
+     * @param contractId 鍚堝悓缂栧彿
+     * @return 宸插洖娆鹃噾棰�
+     */
+    BigDecimal getReceivablePriceByContractId(Long contractId);
+
+    /**
+     * 鑾峰彇鎬诲洖娆鹃噾棰�
+     *
+     * @return 鎬诲洖娆鹃噾棰�
+     */
+    BigDecimal getReceivablePriceSum();
+
+    /**
+     * 鏍规嵁璐熻矗浜烘煡璇㈠洖娆鹃噾棰�
+     *
+     * @param ownerUserId 璐熻矗浜虹紪鍙�
+     * @return 鍥炴閲戦
+     */
+    BigDecimal getReceivablePriceByOwnerUserId(Long ownerUserId);
+
 }

--
Gitblit v1.9.3