From 569483bbc66ad0b141fe946b2c19c0de83bccba4 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 12 二月 2026 15:50:18 +0800
Subject: [PATCH] Merge branch 'dev_New' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New

---
 src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java |   46 ++++++++++++++++++++++++++++++++--------------
 1 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
index e6d8b7b..fda5910 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
@@ -80,37 +80,55 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public AjaxResult updateRecord(ProductRecordDto productRecordDto) {
-        SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(productRecordDto.getSaleLedgerProjectId());
         ProductRecord productRecord = productRecordMapper.selectById(productRecordDto.getId());
+        if (productRecord == null) return AjaxResult.error("璁板綍涓嶅瓨鍦�");
+
+        //  鏇存柊浜у搧鍙拌处
+        SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(productRecord.getSaleLedgerProjectId());
         if (salesLedgerProduct != null) {
-            salesLedgerProduct.setFutureTicketsAmount(salesLedgerProduct.getFutureTicketsAmount().add(productRecord.getTicketsAmount()).subtract(productRecordDto.getTicketsAmount()));
-            salesLedgerProduct.setFutureTickets(salesLedgerProduct.getFutureTickets().add(productRecord.getTicketsNum().subtract(productRecordDto.getTicketsNum())));
+            // 鏈潵绁ㄩ噾棰� = 鍘熸湭鏉ョエ閲戦 + 鏃ц閲戦 - 鏂拌閲戦
+            BigDecimal futureTicketsAmount = salesLedgerProduct.getFutureTicketsAmount()
+                    .add(productRecord.getTicketsAmount())
+                    .subtract(productRecordDto.getTicketsAmount());
+            salesLedgerProduct.setFutureTicketsAmount(futureTicketsAmount);
+
+            // 鏈潵绁ㄦ暟 = 鍘熸湭鏉ョエ鏁� + 鏃ц鏁伴噺 - 鏂拌鏁伴噺
+            BigDecimal futureTickets = salesLedgerProduct.getFutureTickets()
+                    .add(productRecord.getTicketsNum())
+                    .subtract(productRecordDto.getTicketsNum());
+            salesLedgerProduct.setFutureTickets(futureTickets);
+
+            // 鏇存柊浜у搧琛ㄦ湰娆℃暟鍊�
             salesLedgerProduct.setTicketsAmount(productRecordDto.getTicketsAmount());
             salesLedgerProduct.setTicketsNum(productRecordDto.getTicketsNum());
             salesLedgerProductMapper.updateById(salesLedgerProduct);
         }
-        PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(productRecord.getPurchaseLedgerId());
-        if (purchaseLedger != null) {
-            purchaseLedger.setReceiptPaymentAmount(purchaseLedger.getReceiptPaymentAmount());
-        }
-        // 淇敼鍙戠エ鍙�
+
+        //  鏇存柊鏉ョエ鐧昏
         TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(productRecord.getTicketRegistrationId());
-        if(ticketRegistration != null){
+        if (ticketRegistration != null) {
+            // 閲戦 = 鏂伴噾棰� - 鏃ч噾棰�
+            BigDecimal amountDiff = productRecordDto.getTicketsAmount().subtract(productRecord.getTicketsAmount());
+            // 鎬婚噾棰� = 鍘熸�婚噾棰� + 宸��
+            ticketRegistration.setInvoiceAmount(ticketRegistration.getInvoiceAmount().add(amountDiff));
+            // 鏇存柊鍙戠エ鍙�
             ticketRegistration.setInvoiceNumber(productRecordDto.getInvoiceNumber());
-            ticketRegistration.setInvoiceAmount(productRecordDto.getTicketsAmount());
+
             ticketRegistrationMapper.updateById(ticketRegistration);
         }
-        BeanUtils.copyProperties(productRecordDto,productRecord);
+
+        BeanUtils.copyProperties(productRecordDto, productRecord);
+        // 閲嶆柊璁$畻鏈潵绁ㄩ噾棰濓紙鏍规嵁鍓╀綑绁ㄦ暟 * 鍗曚环锛�
         productRecord.setFutureTicketsAmount(productRecord.getFutureTickets().multiply(productRecord.getTaxInclusiveUnitPrice()));
         productRecordMapper.updateById(productRecord);
 
         return AjaxResult.success("淇敼鎴愬姛");
     }
 
-     @Override
+    @Override
     public ProductRecordDto getProductRecordById(ProductRecordDto productRecordDto) {
         List<ProductRecordDto> productRecordDtoList = productRecordMapper.getProductRecordById(productRecordDto);
-        if(CollectionUtils.isNotEmpty(productRecordDtoList)){
+        if (CollectionUtils.isNotEmpty(productRecordDtoList)) {
             ProductRecordDto productRecordDto1 = productRecordDtoList.stream()
                     .filter(item -> item.getId().equals(productRecordDto.getId()))
                     .findFirst()
@@ -121,7 +139,7 @@
                     .filter(item -> item.getProductModelId().equals(productRecordDto.getProductModelId()))
                     .map(ProductRecordDto::getTicketsNum)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
-            if(productRecordDto1 != null){
+            if (productRecordDto1 != null) {
                 productRecordDto1.setFutureTickets(productRecordDto1.getQuantity().subtract(reduce));
                 productRecordDto1.setFutureTicketsAmount(productRecordDto1.getFutureTickets().multiply(productRecordDto1.getTaxInclusiveUnitPrice()));
             }

--
Gitblit v1.9.3