From 60acc8dd204aea9a435ae44205bae7b97feda4b3 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 16 六月 2026 14:37:49 +0800
Subject: [PATCH] fix: 客户往来及明细查询修改
---
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 51 insertions(+), 6 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 eef85aa..293566a 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -34,6 +34,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;
@@ -223,7 +224,7 @@
throw new RuntimeException("瀹㈡埛妗f涓嬫湁閿�鍞悎鍚岋紝璇峰厛鍒犻櫎閿�鍞悎鍚�");
}
// 鏌ヨ鏄惁鏈夊凡鍒嗛厤鐨勫叕娴峰鎴�
- List<Customer> assignedPools = customerMapper.selectList(
+ /*List<Customer> assignedPools = customerMapper.selectList(
new QueryWrapper<Customer>().lambda()
.in(Customer::getId, idList)
.eq(Customer::getType, 1).
@@ -231,7 +232,7 @@
);
if (!assignedPools.isEmpty()) {
throw new RuntimeException("瀹㈡埛妗f涓嬫湁宸插垎閰嶇殑鍏捣瀹㈡埛锛岃鍏堟敹鍥�");
- }
+ }*/
// 鍒犻櫎瀹㈡埛鐨勫悓鏃朵篃闇�瑕佸垹闄ゅ搴旂殑瀹㈡埛璺熼殢銆侀檮浠跺拰鍥炶鎻愰啋
for (Long id : ids) {
customerFollowUpService.deleteByCustomerId(id);
@@ -271,11 +272,11 @@
}
// 鏍规嵁 type 鍙傛暟璁剧疆瀹㈡埛绫诲瀷锛堢娴�/鍏捣锛�
- if (type != null) {
+ /*if (type != null) {
userList.forEach(customer -> {
customer.setType(type);
});
- }
+ }*/
this.saveOrUpdateBatch(userList);
return R.ok(true);
} catch (Exception e) {
@@ -383,12 +384,56 @@
@Override
public IPage<CustomerTransactionsVo> customewTransactions(Page page, String customerName) {
- return customerMapper.customewTransactions(page, customerName);
+ IPage<CustomerTransactionsVo> p = customerMapper.customewTransactions(page, customerName);
+ List<CustomerTransactionsVo> records = p.getRecords();
+ if (!CollectionUtils.isEmpty(records)) {
+ List<Long> customerIds = records.stream().map(CustomerTransactionsVo::getCustomerId).collect(Collectors.toList());
+ List<Map<String, Object>> shippedAmountList = customerMapper.getShippedAmountByCustomerIds(customerIds);
+ Map<Long, BigDecimal> shippedAmountMap = new HashMap<>();
+ for (Map<String, Object> map : shippedAmountList) {
+ if (map.get("outboundAmount") != null) {
+ shippedAmountMap.put(((Number) map.get("customerId")).longValue(), new BigDecimal(String.valueOf(map.get("outboundAmount"))));
+ }
+ }
+ for (CustomerTransactionsVo vo : records) {
+ BigDecimal outboundAmount = shippedAmountMap.getOrDefault(vo.getCustomerId(), BigDecimal.ZERO);
+ vo.setShippedAmount(outboundAmount);
+ BigDecimal contractAmounts = vo.getContractAmounts() == null ? BigDecimal.ZERO : vo.getContractAmounts();
+ BigDecimal unshippedAmount = contractAmounts.subtract(outboundAmount);
+ if (unshippedAmount.compareTo(BigDecimal.ZERO) < 0) {
+ unshippedAmount = BigDecimal.ZERO;
+ }
+ vo.setUnshippedAmount(unshippedAmount);
+ }
+ }
+ return p;
}
@Override
public IPage<CustomerTransactionsDetailsVo> customewTransactionsDetails(Page page, Long customerId) {
- return customerMapper.customewTransactionsDetails(page, customerId);
+ IPage<CustomerTransactionsDetailsVo> p = customerMapper.customewTransactionsDetails(page, customerId);
+ List<CustomerTransactionsDetailsVo> records = p.getRecords();
+ if (!CollectionUtils.isEmpty(records)) {
+ List<Long> salesLedgerIds = records.stream().map(CustomerTransactionsDetailsVo::getSalesLedgerId).collect(Collectors.toList());
+ List<Map<String, Object>> shippedAmountList = customerMapper.getShippedAmountBySalesLedgerIds(salesLedgerIds);
+ Map<Long, BigDecimal> shippedAmountMap = new HashMap<>();
+ for (Map<String, Object> map : shippedAmountList) {
+ if (map.get("outboundAmount") != null) {
+ shippedAmountMap.put(((Number) map.get("salesLedgerId")).longValue(), new BigDecimal(String.valueOf(map.get("outboundAmount"))));
+ }
+ }
+ for (CustomerTransactionsDetailsVo vo : records) {
+ BigDecimal outboundAmount = shippedAmountMap.getOrDefault(vo.getSalesLedgerId(), BigDecimal.ZERO);
+ vo.setShippedAmount(outboundAmount);
+ BigDecimal contractAmount = vo.getContractAmount() == null ? BigDecimal.ZERO : vo.getContractAmount();
+ BigDecimal unshippedAmount = contractAmount.subtract(outboundAmount);
+ if (unshippedAmount.compareTo(BigDecimal.ZERO) < 0) {
+ unshippedAmount = BigDecimal.ZERO;
+ }
+ vo.setUnshippedAmount(unshippedAmount);
+ }
+ }
+ return p;
}
/**
--
Gitblit v1.9.3