From 487b30b77565d9b12f203a1234a93b80a8c59177 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期二, 20 五月 2025 13:58:00 +0800
Subject: [PATCH] 回款台账

---
 src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java |   85 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 69 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
index 3130872..baaeee9 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceRegistrationServiceImpl.java
@@ -12,8 +12,12 @@
 import com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto;
 import com.ruoyi.sales.mapper.InvoiceRegistrationMapper;
 import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
+import com.ruoyi.sales.mapper.InvoiceRegistrationProductRecordMapper;
+import com.ruoyi.sales.mapper.InvoiceRegistrationRecordMapper;
 import com.ruoyi.sales.pojo.InvoiceRegistration;
 import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
+import com.ruoyi.sales.pojo.InvoiceRegistrationProductRecord;
+import com.ruoyi.sales.pojo.InvoiceRegistrationRecord;
 import com.ruoyi.sales.service.InvoiceRegistrationService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.BeanUtils;
@@ -23,6 +27,7 @@
 import org.springframework.util.ObjectUtils;
 
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -35,6 +40,12 @@
     @Autowired
     private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
 
+    @Autowired
+    private InvoiceRegistrationRecordMapper invoiceRegistrationRecordMapper;
+
+    @Autowired
+    private InvoiceRegistrationProductRecordMapper invoiceRegistrationProductRecordMapper;
+
 
     /**
      * 寮�绁ㄧ櫥璁版柊澧�
@@ -44,29 +55,71 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void invoiceRegistrationSaveOrUpdate(InvoiceRegistrationDto invoiceRegistrationDto) {
-        InvoiceRegistration invoiceRegistration = new InvoiceRegistration();
-        BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration);
         List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList();
-        // 鏂板寮�绁ㄧ櫥璁�
-        if(invoiceRegistrationDto.getId() == null){
-            invoiceRegistrationMapper.insert(invoiceRegistration);
-            // 鏂板寮�绁ㄤ骇鍝佺櫥璁�
-            if(CollectionUtils.isNotEmpty(productDtoList)){
+        Integer salesLedgerId = invoiceRegistrationDto.getSalesLedgerId();
+        if (null == salesLedgerId){
+            throw new RuntimeException("鏈叧鑱旈攢鍞悎鍚�");
+        }
+        QueryWrapper<InvoiceRegistration> inRegWrapper = new QueryWrapper<>();
+        inRegWrapper.eq("sales_ledger_id", salesLedgerId);
+        InvoiceRegistration invoiceRegistration = invoiceRegistrationMapper.selectOne(inRegWrapper);
+        Integer invoiceRegistrationId = null;
+        // 鍒ゆ柇鏄惁宸茬粡鍋氳繃鐧昏锛屽鏋滄湁鍚堝苟锛屽鏋滄病鏈夋柊澧�
+        if(ObjectUtils.isEmpty(invoiceRegistration)){
+            InvoiceRegistration insertInvocieReg = new InvoiceRegistration();
+            BeanUtils.copyProperties(invoiceRegistrationDto, insertInvocieReg);
+            invoiceRegistrationMapper.insert(insertInvocieReg);
+            invoiceRegistrationId = insertInvocieReg.getId();
+        }else {
+            invoiceRegistrationId = invoiceRegistration.getId();
+        }
+        // 鏌ヨ浜у搧鏄惁宸茬粡鐧昏
+        if(CollectionUtils.isNotEmpty(productDtoList)){
+            QueryWrapper<InvoiceRegistrationProduct> inRegProductWrapper = new QueryWrapper<>();
+            inRegProductWrapper.eq("invoice_registration_id", invoiceRegistrationId);
+            List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(inRegProductWrapper);
+            if(CollectionUtils.isNotEmpty(invoiceRegistrationProductList)){
+                // 鎵归噺鏇存柊
+                for (InvoiceRegistrationProduct invoiceRegistrationProduct : invoiceRegistrationProductList) {
+                    for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
+                        if( null != invoiceRegistrationProductDto.getId() && null != invoiceRegistrationProduct.getSalesLedgerProductId()
+                                && invoiceRegistrationProductDto.getId() == invoiceRegistrationProduct.getSalesLedgerProductId().longValue() ){
+                            // 璁$畻宸插紑绁ㄦ暟
+                            invoiceRegistrationProduct.setInvoiceNum(invoiceRegistrationProduct.getInvoiceNum() + invoiceRegistrationProductDto.getInvoiceNum());
+                            // 璁$畻宸插紑绁ㄩ噾棰�
+                            invoiceRegistrationProduct.setInvoiceAmount(invoiceRegistrationProduct.getInvoiceAmount().add(invoiceRegistrationProductDto.getInvoiceAmount()));
+//                            // 璁$畻鏈紑绁ㄦ暟
+                            invoiceRegistrationProduct.setNoInvoiceNum(invoiceRegistrationProductDto.getNoInvoiceNum());
+//                            // 璁$畻鏈紑绁ㄩ噾棰� 鍚◣鎬讳环-寮�绁ㄩ噾棰�
+                            invoiceRegistrationProduct.setNoInvoiceAmount(invoiceRegistrationProductDto.getNoInvoiceAmount());
+                            invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct);
+                        }
+                    }
+                }
+            }else {
+                // 鎵归噺鎻掑叆
                 for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
                     InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
                     BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
-                    invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId());
+                    invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistrationId);
+                    invoiceRegistrationProduct.setSalesLedgerProductId(invoiceRegistrationProductDto.getId());
+                    invoiceRegistrationProduct.setId(null);
                     invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct);
                 }
             }
-        // 寮�绁ㄧ櫥璁颁慨鏀�
-        }else {
-            if(CollectionUtils.isNotEmpty(productDtoList)){
-                for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
-                    InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
-                    BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
-                    invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct);
-                }
+        }
+        // 淇濆瓨鏈寮�绁ㄧ櫥璁拌褰�
+        InvoiceRegistrationRecord invoiceRegistrationRecord = new InvoiceRegistrationRecord();
+        BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistrationRecord);
+        invoiceRegistrationRecordMapper.insert(invoiceRegistrationRecord);
+        if(CollectionUtils.isNotEmpty(productDtoList)){
+            for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
+                InvoiceRegistrationProductRecord invoiceRegistrationProductRecord = new InvoiceRegistrationProductRecord();
+                BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProductRecord);
+                invoiceRegistrationProductRecord.setInvoiceRegistrationRecordId(invoiceRegistrationRecord.getId());
+                invoiceRegistrationProductRecord.setSalesLedgerProductId(invoiceRegistrationProductDto.getId());
+                invoiceRegistrationProductRecord.setId(null);
+                invoiceRegistrationProductRecordMapper.insert(invoiceRegistrationProductRecord);
             }
         }
     }

--
Gitblit v1.9.3