From 44683931d3ca09cf2a062b6ef6cffb4624a18c4d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 24 八月 2026 12:29:36 +0800
Subject: [PATCH] feat(approve): 支持审批流程多选部门功能

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 52 insertions(+), 3 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 30a7690..6f780b0 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -31,6 +31,7 @@
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
+import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.service.ProductionProductMainService;
 import com.ruoyi.project.system.domain.SysDept;
@@ -44,6 +45,7 @@
 import com.ruoyi.sales.mapper.*;
 import com.ruoyi.sales.pojo.*;
 import com.ruoyi.sales.service.ISalesLedgerService;
+import com.ruoyi.sales.service.SalesLedgerProductionRefService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
@@ -166,6 +168,10 @@
     private SysUserMapper sysUserMapper;
     @Autowired
     private CustomerPrivatePoolMapper customerPrivatePoolMapper;
+    @Autowired
+    private SalesLedgerProductionRefService salesLedgerProductionRefService;
+    @Autowired
+    private SalesLedgerProductionRefMapper salesLedgerProductionRefMapper;
 
     @Override
     public List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto) {
@@ -212,7 +218,8 @@
         if (salesLedger == null) {
             throw new BaseException("鍙拌处涓嶅瓨鍦�");
         }
-
+        List<ProductOrderDto> productionOrdersBySalesLedgerId = getProductionOrdersBySalesLedgerId(salesLedger.getId());
+        salesLedger.setProductionOrders(productionOrdersBySalesLedgerId);
         // 2. 鏌ヨ瀛愯〃
         LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
         productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId());
@@ -551,6 +558,24 @@
         return resultDto;
     }
 
+    @Override
+    public List<ProductOrderDto> getProductionOrdersBySalesLedgerId(Long salesLedgerId) {
+        List<Long> productOrderIds = salesLedgerProductionRefMapper.getProductionOrderIdsBySalesLedgerId(salesLedgerId);
+        if (productOrderIds == null || productOrderIds.isEmpty()) {
+            return Collections.emptyList();
+        }
+        return productOrderMapper.listByProductOrderId(productOrderIds);
+    }
+
+    @Override
+    public void getProductionOrders(List<SalesLedger> records) {
+        List<Long> ledgerIdList = records.stream()
+                .map(SalesLedger::getId)
+                .collect(Collectors.toList());
+
+
+    }
+
     /**
      * 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕
      */
@@ -691,7 +716,10 @@
                 );
             }
 
-            // 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
+            //5. 缁戝畾閿�鍞鍗曞拰鐢熶骇璁㈠崟
+            bindSalesOrderAndProductionOrder(salesLedgerDto.getProductionOrderIds(), salesLedger.getId());
+
+            // 6. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
             if (salesLedgerDto.getTempFileIds() != null && !salesLedgerDto.getTempFileIds().isEmpty()) {
                 migrateTempFilesToFormal(salesLedger.getId(), salesLedgerDto.getTempFileIds());
             }
@@ -703,10 +731,31 @@
         }
     }
 
+    private void bindSalesOrderAndProductionOrder(List<Long> productionOrderIds, Long salesLedgerId) {
+        // 鍏堝垹闄よ閿�鍞彴璐︽墍鏈夋棫鍏宠仈
+        LambdaQueryWrapper<SalesLedgerProductionRef> deleteWrapper = Wrappers.lambdaQuery();
+        deleteWrapper.eq(SalesLedgerProductionRef::getSalesLedgerId, salesLedgerId);
+        salesLedgerProductionRefMapper.delete(deleteWrapper);
+
+        if (productionOrderIds == null || productionOrderIds.isEmpty()) {
+            return;
+        }
+        List<SalesLedgerProductionRef> refList = productionOrderIds.stream()
+                .map(productOrderId -> {
+                    SalesLedgerProductionRef ref = new SalesLedgerProductionRef();
+                    ref.setSalesLedgerId(salesLedgerId);
+                    ref.setProductOrderId(productOrderId);
+                    return ref;
+                })
+                .collect(Collectors.toList());
+        salesLedgerProductionRefService.saveBatch(refList);
+    }
+
     public void addApproveByPurchase(LoginUser loginUser, SalesLedger salesLedger) throws Exception {
         ApproveProcessVO approveProcessVO = new ApproveProcessVO();
         approveProcessVO.setApproveType(9);
         approveProcessVO.setApproveDeptId(loginUser.getDeptIds()[0]);
+        approveProcessVO.setApproveDeptIdArray(Collections.singletonList(loginUser.getDeptIds()[0]));
         approveProcessVO.setApproveReason(salesLedger.getSalesContractNo());
         approveProcessVO.setApproveUserIds(salesLedger.getApproveUserIds());
         approveProcessVO.setApproveUser(loginUser.getUserId());
@@ -817,7 +866,7 @@
                 salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
                 salesLedgerProductMapper.insert(salesLedgerProduct);
                 // 娣诲姞鐢熶骇鏁版嵁
-                salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
+                //salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
             }
         }
     }

--
Gitblit v1.9.3