From 892e590cf8c579a235db630ddbe31a59930420af Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期四, 05 六月 2025 10:13:29 +0800
Subject: [PATCH] 付款登记功能开发

---
 src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java           |    7 +++
 src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java |   28 +++++++++++++-
 src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java                 |    3 +
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java     |    4 +
 src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java                       |   10 ++++
 src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java                    |    8 ++++
 src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml                 |   15 +++++++
 7 files changed, 71 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java b/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java
index a036f29..b34494d 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java
@@ -36,4 +36,7 @@
     private String registrant;
 
     private String searchText;
+
+    // 宸蹭粯娆炬�婚噾棰�
+    private BigDecimal paymentAmountTotal;
 }
diff --git a/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java
index 4127059..a03a8d2 100644
--- a/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java
+++ b/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java
@@ -37,4 +37,11 @@
      * @return 浠樻鐧昏闆嗗悎
      */
     public List<PaymentRegistrationDto> paymentHistoryList(@Param("params") PaymentRegistrationDto paymentRegistrationDto);
+
+    /**
+     * 璁$畻姣忓紶鍙戠エ鐨勫凡寮�绁ㄩ噾棰�
+     * @param ticketRegistrationIds
+     * @return
+     */
+    public List<PaymentRegistrationDto> countPaymentTotalByTicketRegId(List<Long> ticketRegistrationIds);
 }
diff --git a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
index a297f3f..d4b49c2 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -132,4 +133,11 @@
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
 
+    @ApiModelProperty(value = "宸蹭粯娆炬�婚噾棰�")
+    @TableField(exist = false)
+    private BigDecimal paymentAmountTotal;
+
+    @ApiModelProperty(value = "鏈粯娆炬�婚噾棰�")
+    @TableField(exist = false)
+    private BigDecimal unPaymentAmountTotal;
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 3be1a26..db32be5 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -374,10 +374,12 @@
                 .eq(SalesLedgerProduct::getType, 2);
         List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper);
         productList.forEach(product -> {
-            product.setFutureTickets(product.getFutureTickets() != null ? product.getFutureTickets() : product.getQuantity().longValue());
+            product.setFutureTickets(product.getFutureTickets() != null ? product.getFutureTickets() : product.getQuantity());
             product.setFutureTicketsAmount(product.getFutureTicketsAmount() != null ? product.getFutureTicketsAmount() : product.getTaxInclusiveTotalPrice());
             product.setTicketsNum(null);
             product.setTicketsAmount(null);
+            product.setTempFutureTickets(product.getFutureTickets());
+            product.setTempFutureTicketsAmount(product.getFutureTicketsAmount());
         });
         resultDto.setProductData(productList);
         return resultDto;
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
index c9d189f..f007f6e 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -9,7 +9,9 @@
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
+import com.ruoyi.purchase.dto.PaymentRegistrationDto;
 import com.ruoyi.purchase.dto.TicketRegistrationDto;
+import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
 import com.ruoyi.purchase.mapper.ProductRecordMapper;
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.mapper.TicketRegistrationMapper;
@@ -24,6 +26,7 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -66,6 +69,9 @@
 
     private final ProductRecordMapper productRecordMapper;
 
+    @Autowired
+    private PaymentRegistrationMapper paymentRegistrationMapper;
+
     @Value("${file.upload-dir}")
     private String uploadDir;
 
@@ -78,7 +84,26 @@
                     .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName())
                     .eq(TicketRegistration::getIssueDate, ticketRegistration.getIssueDate());
         }
-        return ticketRegistrationMapper.selectList(queryWrapper);
+        List<TicketRegistration> ticketRegistrationList = ticketRegistrationMapper.selectList(queryWrapper);
+        // 璁$畻宸蹭粯娆鹃噾棰�
+        if(CollectionUtils.isNotEmpty(ticketRegistrationList)){
+            List<Long> ids = ticketRegistrationList.stream().map(TicketRegistration::getId).collect(Collectors.toList());
+            List<PaymentRegistrationDto> paymentRegistrationDtoList = paymentRegistrationMapper.countPaymentTotalByTicketRegId(ids);
+            for (TicketRegistration registration : ticketRegistrationList) {
+                for (PaymentRegistrationDto paymentRegistrationDto : paymentRegistrationDtoList) {
+                    if(registration.getId().equals(paymentRegistrationDto.getTicketRegistrationId())){
+                        BigDecimal paymentAmountTotal = paymentRegistrationDto.getPaymentAmountTotal();
+                        BigDecimal invoiceAmount = registration.getInvoiceAmount();
+                        registration.setPaymentAmountTotal(paymentAmountTotal);
+                        BigDecimal subtractAmount = invoiceAmount.subtract(paymentAmountTotal);
+                        registration.setUnPaymentAmountTotal(subtractAmount);
+                        break;
+                    }
+                }
+            }
+        }
+
+        return ticketRegistrationList;
     }
 
     @Override
@@ -275,7 +300,6 @@
                 product.setFutureTickets(
                         product.getQuantity()
                                 .subtract(BigDecimal.valueOf(product.getTicketsNum()))
-                                .longValueExact() // 浣跨敤 exact 鏂规硶纭繚鏃犲皬鏁伴儴鍒�
                 );
 
                 // 璁$畻 futureTicketsAmount
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index 3949cd7..84aef39 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -105,7 +105,7 @@
     /**
      * 鏈潵绁ㄦ暟
      */
-    private Long futureTickets;
+    private BigDecimal futureTickets;
 
     /**
      * 鏈潵绁ㄩ噾棰�(鍏�)
@@ -153,4 +153,12 @@
     @ApiModelProperty(value = "涓存椂鏈紑绁ㄩ噾棰�")
     @TableField(exist = false)
     private BigDecimal tempnoInvoiceAmount;
+
+    @ApiModelProperty(value = "涓存椂鏈潵绁ㄦ暟")
+    @TableField(exist = false)
+    private BigDecimal tempFutureTickets;
+
+    @ApiModelProperty(value = "涓存椂鏈潵绁ㄩ噾棰�")
+    @TableField(exist = false)
+    private BigDecimal tempFutureTicketsAmount;
 }
diff --git a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
index aad93c5..16e4960 100644
--- a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
+++ b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -110,4 +110,19 @@
         ORDER BY T1.payment_date,T1.create_time DESC
     </select>
 
+    <select id="countPaymentTotalByTicketRegId" resultType="com.ruoyi.purchase.dto.PaymentRegistrationDto">
+        SELECT
+            IFNULL(SUM(current_payment_amount),0) AS paymentAmountTotal,
+            ticket_registration_id
+        FROM
+            payment_registration
+        <where>
+            ticket_registration_id IN
+            <foreach collection="ticketRegistrationIds" separator="," open="(" close=")" item="item">
+                #{item}
+            </foreach>
+        </where>
+        GROUP BY ticket_registration_id
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3