From 86fc2148b726357e42d8072f7f2f3641411cca5f Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期日, 04 一月 2026 17:50:44 +0800
Subject: [PATCH] feat(production): 修改

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java |  125 +++++++++++++++++++++++++++++++++++------
 1 files changed, 107 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index c397b9f..3d51cb0 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -1,23 +1,36 @@
 package com.ruoyi.sales.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.production.mapper.ProcessRouteItemMapper;
+import com.ruoyi.production.mapper.ProcessRouteMapper;
+import com.ruoyi.production.mapper.ProductOrderMapper;
+import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
+import com.ruoyi.production.pojo.ProcessRoute;
+import com.ruoyi.production.pojo.ProcessRouteItem;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
+import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
+import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
+import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
+import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
 import com.ruoyi.sales.pojo.SalesLedger;
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.service.ISalesLedgerProductService;
 import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -35,6 +48,17 @@
 
     private SalesLedgerMapper salesLedgerMapper;
 
+    private PurchaseLedgerMapper purchaseLedgerMapper;
+
+    private ProductOrderMapper productOrderMapper;
+
+    private ProcessRouteItemMapper processRouteItemMapper;
+    private ProductProcessRouteItemMapper productProcessRouteItemMapper;
+    @Autowired
+    private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
+    @Autowired
+    private ProcessRouteMapper processRouteMapper;
+
     @Override
     public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
         return salesLedgerProductMapper.selectById(id);
@@ -43,8 +67,31 @@
     @Override
     public List<SalesLedgerProduct> selectSalesLedgerProductList(SalesLedgerProduct salesLedgerProduct) {
         LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId,salesLedgerProduct.getSalesLedgerId());
-        return salesLedgerProductMapper.selectList(queryWrapper);
+        queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId())
+                .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType());
+        List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(queryWrapper);
+        if (!CollectionUtils.isEmpty(salesLedgerProducts)) {
+            InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto();
+            invoiceRegistrationProductDto.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId().intValue());
+            List<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoList = invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto);
+            // 缁熻寮�绁ㄧ櫥璁颁骇鍝佺殑宸插紑绁ㄦ暟/宸插紑绁ㄩ噾棰�
+            if (!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)) {
+                for (SalesLedgerProduct ledgerProduct : salesLedgerProducts) {
+                    BigDecimal invoiceNum = BigDecimal.ZERO;
+                    BigDecimal invoiceAmount = BigDecimal.ZERO;
+                    for (InvoiceRegistrationProductDto registrationProductDto : invoiceRegistrationProductDtoList) {
+                        if (ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()) {
+                            invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum());
+                            invoiceAmount = invoiceAmount.add(registrationProductDto.getInvoiceAmount());
+                        }
+                    }
+                    ledgerProduct.setInvoiceNum(invoiceNum);
+                    ledgerProduct.setInvoiceAmount(invoiceAmount);
+                }
+            }
+
+        }
+        return salesLedgerProducts;
     }
 
     @Override
@@ -68,6 +115,14 @@
 
         // 2. 鎵ц鍒犻櫎鎿嶄綔
         int result = salesLedgerProductMapper.deleteBatchIds(Arrays.asList(ids));
+        //鍒犻櫎瀵瑰簲鐨勭敓浜ц鍗�
+        for (Long id : ids) {
+            ProductOrder productOrder = productOrderMapper.selectOne(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getProductModelId, id));
+            if (productOrder != null) {
+                productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>().eq(ProductProcessRouteItem::getRouteId, productOrder.getId()));
+                productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getProductModelId, id));
+            }
+        }
 
         // 3. 瀵规瘡涓富琛↖D杩涜閲戦鏇存柊
         for (Long salesLedgerId : mainIds) {
@@ -90,12 +145,36 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int addOrUpdateSalesLedgerProduct(SalesLedgerProduct salesLedgerProduct) {
+        //鏈紑绁ㄦ暟閲�+閲戦
+        salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
+        salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
         int result;
         Long salesLedgerId = salesLedgerProduct.getSalesLedgerId();
-
         if (salesLedgerProduct.getId() == null) {
             result = salesLedgerProductMapper.insert(salesLedgerProduct);
+            ProductOrder productOrder = new ProductOrder();
+            productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
+            productOrder.setProductModelId(salesLedgerProduct.getId());
+            productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId()));
+            productOrderMapper.insert(productOrder);
+
+            ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()));
+            if (processRoute != null) {
+                List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
+                for (ProcessRouteItem processRouteItem : processRouteItems) {
+                    ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
+                    productProcessRouteItem.setProductModelId(productOrder.getProductModelId());
+                    productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
+                    productProcessRouteItem.setRouteId(productOrder.getId());
+                    productProcessRouteItemMapper.insert(productProcessRouteItem);
+                }
+                productOrder.setRouteId(processRoute.getId());
+                productOrderMapper.updateById(productOrder);
+            }
+
+
         } else {
+            salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity());
             result = salesLedgerProductMapper.updateById(salesLedgerProduct);
         }
 
@@ -103,19 +182,29 @@
         if (result > 0 && salesLedgerId != null) {
             // 鏌ヨ璇ヤ富琛ㄤ笅鐨勬墍鏈夊瓙琛ㄦ暟鎹�
             LambdaQueryWrapper<SalesLedgerProduct> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerId);
+            wrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerId)
+                    .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType());
             List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(wrapper);
-
-            // 璋冪敤閫氱敤鏂规硶鏇存柊涓昏〃閲戦
-            updateMainContractAmount(
-                    salesLedgerId,
-                    productList,
-                    SalesLedgerProduct::getTaxInclusiveTotalPrice,
-                    salesLedgerMapper,
-                    SalesLedger.class
-            );
+            if (salesLedgerProduct.getType() == 1) {
+                // 璋冪敤閫氱敤鏂规硶鏇存柊涓昏〃閲戦
+                updateMainContractAmount(
+                        salesLedgerId,
+                        productList,
+                        SalesLedgerProduct::getTaxInclusiveTotalPrice,
+                        salesLedgerMapper,
+                        SalesLedger.class
+                );
+            } else {
+                // 璋冪敤閫氱敤鏂规硶鏇存柊涓昏〃閲戦
+                updateMainContractAmount(
+                        salesLedgerId,
+                        productList,
+                        SalesLedgerProduct::getTaxInclusiveTotalPrice,
+                        purchaseLedgerMapper,
+                        PurchaseLedger.class
+                );
+            }
         }
-
         return result;
     }
 

--
Gitblit v1.9.3