From a90721a1d1e7ec18f2a0a0c5e9688dedf9091610 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 24 六月 2026 17:11:27 +0800
Subject: [PATCH] fix: 优化退货管理中的退款金额计算和实际合同金额处理
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 41 +++++++++++++++++++++++++----------------
1 files changed, 25 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index b3a7727..d19edad 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -38,8 +38,6 @@
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
-import com.ruoyi.purchase.dto.SimpleReturnOrderGroupDto;
-import com.ruoyi.purchase.mapper.PurchaseReturnOrderProductsMapper;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.sales.dto.*;
import com.ruoyi.sales.mapper.CommonFileMapper;
@@ -121,9 +119,6 @@
@Autowired
private ProductionProductMainService productionProductMainService;
@Autowired
- private PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper;
- ;
- @Autowired
private SysUserMapper sysUserMapper;
@Override
@@ -148,17 +143,11 @@
productWrapper.eq(SalesLedgerProduct::getType, type.getCode());
List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(productWrapper);
if (type.equals(SaleEnum.PURCHASE)) {
- // 鏌ヨ閫�璐т俊鎭�
- List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getProductModelId).collect(Collectors.toList());
- List<SimpleReturnOrderGroupDto> groupListByProductIds = new ArrayList<>();
- if(CollectionUtils.isNotEmpty(productIds)){
- groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
- }
- Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getProductModelId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
salesLedgerProducts.forEach(item -> {
- BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getProductModelId(), BigDecimal.ZERO);
- item.setReturnQuality(returnQuality);
- item.setAvailableQuality(item.getQuantity().subtract(returnQuality));
+ BigDecimal returnQuantity = item.getReturnQuantity() == null ? BigDecimal.ZERO : item.getReturnQuantity();
+ item.setReturnQuantity(returnQuantity);
+ BigDecimal quantity = item.getQuantity() == null ? BigDecimal.ZERO : item.getQuantity();
+ item.setAvailableQuality(quantity.subtract(returnQuantity));
});
}
return salesLedgerProducts;
@@ -601,7 +590,18 @@
);
}
- // 5. 淇濆瓨閿�鍞彴璐﹂檮浠�
+ // 5. 鍏滃簳锛氱‘淇濆疄闄呭悎鍚岄噾棰濇湁鍒濆鍊肩瓑浜庡悎鍚岄噾棰�
+ if (salesLedger.getNetContractAmount() == null) {
+ SalesLedger dbLedger = salesLedgerMapper.selectById(salesLedger.getId());
+ if (dbLedger != null && dbLedger.getNetContractAmount() == null && dbLedger.getContractAmount() != null) {
+ SalesLedger updateEntity = new SalesLedger();
+ updateEntity.setId(salesLedger.getId());
+ updateEntity.setNetContractAmount(dbLedger.getContractAmount());
+ salesLedgerMapper.updateById(updateEntity);
+ }
+ }
+
+ // 6. 淇濆瓨閿�鍞彴璐﹂檮浠�
fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.SALES_LEDGER, salesLedger.getId(), salesLedgerDto.getStorageBlobDTOs());
return 1;
@@ -739,6 +739,15 @@
amountField.setAccessible(true);
amountField.set(entity, totalAmount);
+ // 瀹為檯鍚堝悓閲戦鍒濆鍊肩瓑浜庡悎鍚岄噾棰�
+ try {
+ Field netAmountField = mainEntityClass.getDeclaredField("netContractAmount");
+ netAmountField.setAccessible(true);
+ netAmountField.set(entity, totalAmount);
+ } catch (NoSuchFieldException ignored) {
+ // 瀛愮被鍙兘娌℃湁璇ュ瓧娈碉紝蹇界暐
+ }
+
mainMapper.updateById(entity);
} catch (Exception e) {
throw new RuntimeException("鍔ㄦ�佹洿鏂颁富琛ㄩ噾棰濆け璐�", e);
--
Gitblit v1.9.3