From d39e4f7d839167c16425086dfa2f8747bccfdff9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 05 十一月 2026 17:39:01 +0800
Subject: [PATCH] feat: 打通销售采购财务闭环并完成累计业务优化

---
 yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)

diff --git a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java
index 8fbb7de..62cea6a 100644
--- a/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java
+++ b/yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java
@@ -24,6 +24,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
+import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
@@ -130,6 +131,31 @@
     }
 
     @Override
+    public void updateReceivablePlanReceipted(Long id, java.math.BigDecimal receiptPrice,
+                                              java.time.LocalDateTime actualTime) {
+        CrmReceivablePlanDO plan = validateReceivablePlanExists(id);
+        BigDecimal receiptedPrice = plan.getReceiptedPrice() == null ? java.math.BigDecimal.ZERO : plan.getReceiptedPrice();
+        receiptedPrice = receiptedPrice.add(receiptPrice == null ? java.math.BigDecimal.ZERO : receiptPrice);
+        // 鐘舵�侊細0鏈洖娆� 10閮ㄥ垎鍥炴 20宸插洖娓�
+        int status = receiptedPrice.compareTo(plan.getPrice()) >= 0 ? 20 : (receiptedPrice.signum() > 0 ? 10 : 0);
+        receivablePlanMapper.updateById(new CrmReceivablePlanDO().setId(id)
+                .setReceiptedPrice(receiptedPrice).setStatus(status)
+                .setActualTime(actualTime != null ? actualTime : java.time.LocalDateTime.now()));
+    }
+
+    @Override
+    public void resetReceivablePlanReceipted(Long id) {
+        validateReceivablePlanExists(id);
+        // updateById 浼氬拷鐣� null锛岄渶鏄惧紡娓呯┖瀹為檯鍥炴鏃堕棿
+        receivablePlanMapper.update(null,
+                new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<CrmReceivablePlanDO>()
+                        .eq(CrmReceivablePlanDO::getId, id)
+                        .set(CrmReceivablePlanDO::getReceiptedPrice, java.math.BigDecimal.ZERO)
+                        .set(CrmReceivablePlanDO::getStatus, 0)
+                        .set(CrmReceivablePlanDO::getActualTime, null));
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     @LogRecord(type = CRM_RECEIVABLE_PLAN_TYPE, subType = CRM_RECEIVABLE_PLAN_DELETE_SUB_TYPE, bizNo = "{{#id}}",
             success = CRM_RECEIVABLE_PLAN_DELETE_SUCCESS)

--
Gitblit v1.9.3