From 33d93225f790ff72f8ba5e86f8cf2c3e2db94d0d Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 26 三月 2026 10:43:55 +0800
Subject: [PATCH] feat: 新增宽、高、面积,产品加工绑定

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   36 +++++++++++++++++++++++++++++++++++-
 1 files changed, 35 insertions(+), 1 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 570b2f5..c73e1ea 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -37,6 +37,8 @@
 import com.ruoyi.sales.dto.*;
 import com.ruoyi.sales.mapper.*;
 import com.ruoyi.sales.pojo.*;
+import com.ruoyi.sales.service.ISalesLedgerProductProcessBindService;
+import com.ruoyi.sales.service.ISalesLedgerProductProcessService;
 import com.ruoyi.sales.service.ISalesLedgerService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -110,6 +112,11 @@
     private final ProductionProductInputMapper productionProductInputMapper;
     private final QualityInspectMapper qualityInspectMapper;
     private final RedisTemplate<String, String> redisTemplate;
+
+    private final ISalesLedgerProductProcessService salesLedgerProductProcessService;
+
+    private final ISalesLedgerProductProcessBindService salesLedgerProductProcessBindService;
+
     @Autowired
     private SysDeptMapper sysDeptMapper;
     @Value("${file.upload-dir}")
@@ -154,7 +161,7 @@
             // 鏌ヨ閫�璐т俊鎭�
             List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getId).collect(Collectors.toList());
             List<SimpleReturnOrderGroupDto> groupListByProductIds = new ArrayList<>();
-            if(CollectionUtils.isNotEmpty(productIds)){
+            if (CollectionUtils.isNotEmpty(productIds)) {
                 groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
             }
             Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getSalesLedgerProductId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
@@ -194,6 +201,23 @@
                     .last("limit 1"));
             if (shippingInfo != null) {
                 product.setShippingStatus(shippingInfo.getStatus());
+            }
+            // 鍔犲伐鏄庣粏锛屽厛鏌ind琛ㄨ幏鍙栬浜у搧鍏宠仈鐨勫伐搴忓強鏁伴噺
+            List<SalesLedgerProductProcessBind> bindList = salesLedgerProductProcessBindService.list(
+                    new LambdaQueryWrapper<SalesLedgerProductProcessBind>()
+                            .eq(SalesLedgerProductProcessBind::getSalesLedgerProductId, product.getId()));
+            if (!bindList.isEmpty()) {
+                List<Integer> processIds = bindList.stream()
+                        .map(SalesLedgerProductProcessBind::getSalesLedgerProductProcessId)
+                        .collect(Collectors.toList());
+                Map<Integer, Integer> processQuantityMap = bindList.stream()
+                        .collect(Collectors.toMap(
+                                SalesLedgerProductProcessBind::getSalesLedgerProductProcessId,
+                                SalesLedgerProductProcessBind::getQuantity,
+                                (a, b) -> a));
+                List<SalesLedgerProductProcess> processList = salesLedgerProductProcessService.listByIds(processIds);
+                processList.forEach(p -> p.setQuantity(processQuantityMap.get(p.getId())));
+                product.setSalesProductProcessList(processList);
             }
         }
 
@@ -479,6 +503,8 @@
                         .eq(ShippingInfo::getSalesLedgerProductId, product.getId())
                         .orderByDesc(ShippingInfo::getCreateTime)
                         .last("limit 1"));
+                product.setShippingCarNumber(shippingInfo.getShippingCarNumber());
+                product.setShippingDate(shippingInfo.getShippingDate());
                 if (shippingInfo != null) {
                     product.setShippingStatus(shippingInfo.getStatus());
                 }
@@ -542,6 +568,9 @@
         if (!productIds.isEmpty()) {
             salesLedgerProductMapper.deleteBatchIds(productIds);
         }
+
+        //  娓呴櫎浜у搧鐨勫姞宸�
+        salesLedgerProductProcessBindService.remove(new LambdaQueryWrapper<SalesLedgerProductProcessBind>().in(SalesLedgerProductProcessBind::getSalesLedgerProductId, productIds));
 
         LambdaQueryWrapper<InvoiceRegistrationProduct> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(InvoiceRegistrationProduct::getSalesLedgerId, idList);
@@ -725,6 +754,8 @@
             for (SalesLedgerProduct product : updateList) {
                 product.setType(type.getCode());
                 salesLedgerProductMapper.updateById(product);
+                //  娓呯┖閿�鍞骇鍝佺粦瀹氱殑鍔犲伐
+                salesLedgerProductProcessBindService.updateProductProcessBind(product.getSalesProductProcessList(), product.getId());
             }
         }
         // 鎵ц鎻掑叆鎿嶄綔
@@ -735,6 +766,9 @@
                 salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProductMapper.insert(salesLedgerProduct);
+                //  缁戝畾浜у搧棰濆鍔犲伐
+                //  娓呯┖閿�鍞骇鍝佺粦瀹氱殑鍔犲伐
+                salesLedgerProductProcessBindService.updateProductProcessBind(salesLedgerProduct.getSalesProductProcessList(), salesLedgerProduct.getId());
                 // 娣诲姞鐢熶骇鏁版嵁
                 salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
             }

--
Gitblit v1.9.3