From 684e4306a08feeae188070f264148e6765da8dcf Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 20 九月 2026 19:25:15 +0800
Subject: [PATCH] feat(account): 更新往来付款回款流水表及接口

---
 src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
index 5a4d19a..78cb8ba 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -23,6 +23,7 @@
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
 import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.sales.dto.CustomerDepositAmountDto;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesQuotationMapper;
 import com.ruoyi.sales.pojo.SalesLedger;
@@ -38,6 +39,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.math.BigDecimal;
 import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -117,7 +119,37 @@
             customerVo.setFollowUpList(followUpDtoList);
         }
 
+        fillDepositAmount(Collections.singletonList(customerVo));
+
         return customerVo;
+    }
+
+    /**
+     * 濉唬鍌ㄩ噾棰濓紙璇ュ鎴峰叏閮ㄣ�岀被鍨�=浠e偍銆嶇殑閿�鍞彴璐﹀悎鍚岄噾棰濈疮璁★級骞跺垽鏂槸鍚﹀凡瓒呬俊鎵樺熀閲�
+     */
+    private void fillDepositAmount(List<CustomerVo> records) {
+        if (CollectionUtils.isEmpty(records)) {
+            return;
+        }
+        List<Long> customerIds = records.stream()
+                .map(CustomerVo::getId)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+        Map<Long, BigDecimal> depositAmountMap = customerIds.isEmpty()
+                ? Collections.emptyMap()
+                : salesLedgerMapper.selectDepositAmountByCustomerIds(customerIds).stream()
+                .filter(item -> item.getCustomerId() != null)
+                .collect(Collectors.toMap(
+                        CustomerDepositAmountDto::getCustomerId,
+                        item -> item.getDepositTotalAmount() == null ? BigDecimal.ZERO : item.getDepositTotalAmount(),
+                        (existing, replacement) -> existing));
+
+        records.forEach(customer -> {
+            BigDecimal depositTotalAmount = depositAmountMap.getOrDefault(customer.getId(), BigDecimal.ZERO);
+            customer.setDepositTotalAmount(depositTotalAmount);
+            customer.setExceedsTrustFund(customer.getTrustFund() != null
+                    && depositTotalAmount.compareTo(customer.getTrustFund()) > 0);
+        });
     }
 
     /**
@@ -168,6 +200,8 @@
                     c.setUserIds(userIds);
                 }
             });
+
+            fillDepositAmount(records);
         }
 
         return customerPage;

--
Gitblit v1.9.3