From ce3b0a6cf31d2accfb657748b97585e64994724b Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 24 六月 2026 13:41:52 +0800
Subject: [PATCH] 销售台账详细信息中加上退货数量字段
---
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml | 9 ++++
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java | 10 ++--
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 19 ++-------
src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java | 47 +++++++++--------------
4 files changed, 36 insertions(+), 49 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
index 6d45432..9efcc89 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerProductController.java
@@ -7,20 +7,13 @@
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.framework.web.domain.R;
-import com.ruoyi.procurementrecord.service.ProcurementRecordService;
-import com.ruoyi.procurementrecord.utils.StockUtils;
-import com.ruoyi.purchase.dto.SimpleReturnOrderGroupDto;
-import com.ruoyi.purchase.mapper.PurchaseReturnOrderProductsMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
-import java.math.BigDecimal;
import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
/**
* 浜у搧淇℃伅Controller
@@ -34,9 +27,6 @@
public class SalesLedgerProductController extends BaseController
{
private final ISalesLedgerProductService salesLedgerProductService;
- private final ProcurementRecordService procurementRecordService;
- private final StockUtils stockUtils;
- private final PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper;
/**
@@ -45,26 +35,25 @@
@GetMapping("/list")
public AjaxResult list(SalesLedgerProduct salesLedgerProduct) {
List<SalesLedgerProduct> list = salesLedgerProductService.selectSalesLedgerProductList(salesLedgerProduct);
- if (CollUtil.isEmpty(list)) {
- return AjaxResult.success(list);
- }
- List<Long> productIds = list.stream().map(SalesLedgerProduct::getProductModelId).collect(Collectors.toList());
- List<SimpleReturnOrderGroupDto> groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
- Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getProductModelId, item -> item.getSumReturnQuantity()));
-
- list.forEach(item -> {
- if (item.getApproveStatus() != 2) {
- if (item.getHasSufficientStock() == 0) {
- item.setApproveStatus(0);
- } else {
- item.setApproveStatus(1);
+ if (CollUtil.isNotEmpty(list)) {
+ list.forEach(item -> {
+ if (item.getApproveStatus() != 2) {
+ if (item.getHasSufficientStock() == 0) {
+ item.setApproveStatus(0);
+ } else {
+ item.setApproveStatus(1);
+ }
}
- }
- // 缁熻閫�璐ф暟閲�
- BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getProductModelId(), BigDecimal.ZERO);
- item.setReturnQuality(returnQuality);
- item.setAvailableQuality(item.getQuantity().subtract(returnQuality));
- });
+ java.math.BigDecimal returnQuantity = item.getReturnQuantity() == null
+ ? java.math.BigDecimal.ZERO
+ : item.getReturnQuantity();
+ java.math.BigDecimal quantity = item.getQuantity() == null
+ ? java.math.BigDecimal.ZERO
+ : item.getQuantity();
+ item.setReturnQuantity(returnQuantity);
+ item.setAvailableQuality(quantity.subtract(returnQuantity));
+ });
+ }
return AjaxResult.success(list);
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index d9f8eff..4aa9ff5 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -164,11 +164,7 @@
@TableField(exist = false)
private Integer hasSufficientStock;
- // 閫�璐ф暟閲�
- @TableField(exist = false)
- private BigDecimal returnQuality;
-
- // 鍙敤鏁伴噺 quantity - returnQuality
+ // 鍙敤鏁伴噺 quantity - returnQuantity
@TableField(exist = false)
private BigDecimal availableQuality;
@Schema(description = "鍒涘缓鐢ㄦ埛")
@@ -187,6 +183,10 @@
private BigDecimal noQuantity;
@TableField(exist = false)
+ @Schema(description = "閫�璐ф暟閲�")
+ private BigDecimal returnQuantity;
+
+ @TableField(exist = false)
@Schema(description = "瀹℃壒涓暟閲�")
private BigDecimal pendingApprovalQuantity;
}
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..751739c 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;
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
index ec5cca2..b39b720 100644
--- a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -34,6 +34,7 @@
ELSE 0
END as has_sufficient_stock,
(IFNULL(T1.quantity, 0) - IFNULL(t3.shipped_quantity, 0) - IFNULL(t5.pending_approval_quantity, 0)) as no_quantity,
+ IFNULL(t6.return_quantity, 0) as return_quantity,
IFNULL(t5.pending_approval_quantity, 0) as pending_approval_quantity,
CASE
WHEN IFNULL(t3.shipped_quantity, 0) = 0 AND IFNULL(t5.pending_approval_quantity, 0) = 0 THEN '寰呭彂璐�'
@@ -113,6 +114,14 @@
))
GROUP BY si.sales_ledger_product_id
) t5 ON t5.sales_ledger_product_id = T1.id
+ LEFT JOIN (
+ SELECT si.sales_ledger_product_id, IFNULL(SUM(rsp.num), 0) AS return_quantity
+ FROM return_management rm
+ INNER JOIN return_sale_product rsp ON rm.id = rsp.return_management_id
+ INNER JOIN shipping_info si ON rm.shipping_id = si.id
+ WHERE rm.status = 1
+ GROUP BY si.sales_ledger_product_id
+ ) t6 ON t6.sales_ledger_product_id = T1.id
left join product_model pm ON T1.product_model_id = pm.id
left join product p ON pm.product_id = p.id
<where>
--
Gitblit v1.9.3