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

---
 src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java            |    8 ++++
 src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java |   27 +++++++++++++
 src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java         |    8 ++++
 src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java  |    2 
 src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java                          |    4 +-
 src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java                        |    2 
 src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java                  |   25 ++++++++++++
 src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java    |   12 ++++++
 src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml                  |   24 ++++++++++++
 9 files changed, 107 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
index d2c5522..d434d69 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PaymentRegistrationController.java
@@ -7,6 +7,7 @@
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.framework.web.page.TableDataInfo;
+import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
 import com.ruoyi.purchase.dto.PaymentLedgerDto;
 import com.ruoyi.purchase.dto.PaymentRegistrationDto;
 import com.ruoyi.purchase.pojo.PaymentRegistration;
@@ -126,4 +127,15 @@
         List<PaymentRegistrationDto> list = paymentRegistrationService.paymentHistoryList(paymentRegistrationDto);
         return getDataTable(list);
     }
+
+    /**
+     * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰�
+     * @param supplierId
+     * @return
+     */
+    @GetMapping("/getPaymentRecordList/{supplierId}")
+    public AjaxResult getPaymentRecordList(@PathVariable Long supplierId) {
+        List<PaymentHistoryRecordVo> paymentRecordList = paymentRegistrationService.getPaymentRecordList(supplierId);
+        return success(paymentRecordList);
+    }
 }
diff --git a/src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java b/src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java
new file mode 100644
index 0000000..18025eb
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/dto/PaymentHistoryRecordVo.java
@@ -0,0 +1,25 @@
+package com.ruoyi.purchase.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+public class PaymentHistoryRecordVo {
+
+    /** 鍙戠敓鏃堕棿 */
+    private LocalDate happenTime;
+
+    /** 鍙戠エ閲戦 */
+    private BigDecimal invoiceAmount;
+
+    /** 绫诲瀷 1 鍙戠エ鐧昏  0 鍥炴鐧昏 */
+    private int type;
+
+    /** 鏈鍥炴閲戦 */
+    private BigDecimal currentPaymentAmount;
+
+    /** 搴斾粯閲戦 */
+    private BigDecimal payableAmount;
+}
diff --git a/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java
index a03a8d2..8dda1fc 100644
--- a/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java
+++ b/src/main/java/com/ruoyi/purchase/mapper/PaymentRegistrationMapper.java
@@ -1,6 +1,7 @@
 package com.ruoyi.purchase.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
 import com.ruoyi.purchase.dto.PaymentRegistrationDto;
 import com.ruoyi.purchase.pojo.PaymentRegistration;
 import org.apache.ibatis.annotations.Param;
@@ -44,4 +45,11 @@
      * @return
      */
     public List<PaymentRegistrationDto> countPaymentTotalByTicketRegId(List<Long> ticketRegistrationIds);
+
+    /**
+     * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰�
+     * @param supplierId
+     * @return
+     */
+    List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId);
 }
diff --git a/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java b/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java
index ba6dad0..c1d33ac 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java
@@ -87,7 +87,7 @@
     /**
      * 鏈鏉ョエ鏁�
      */
-    private Long ticketsNum;
+    private BigDecimal ticketsNum;
 
     /**
      * 鏈鏉ョエ閲戦(鍏�)
@@ -97,7 +97,7 @@
     /**
      * 鏈潵绁ㄦ暟
      */
-    private Long futureTickets;
+    private BigDecimal futureTickets;
 
     /**
      * 鏈潵绁ㄩ噾棰�(鍏�)
diff --git a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
index 2cf9e9d..26e14b6 100644
--- a/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IPaymentRegistrationService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
 import com.ruoyi.purchase.dto.PaymentLedgerDto;
 import com.ruoyi.purchase.dto.PaymentRegistrationDto;
 import com.ruoyi.purchase.pojo.PaymentRegistration;
@@ -79,4 +80,11 @@
      * @return 浠樻鐧昏闆嗗悎
      */
     public List<PaymentRegistrationDto> paymentHistoryList(PaymentRegistrationDto paymentRegistrationDto);
+
+    /**
+     * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰�
+     * @param supplierId
+     * @return
+     */
+    List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId);
 }
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
index 624bc1a..3f96818 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java
@@ -11,6 +11,7 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.framework.security.LoginUser;
+import com.ruoyi.purchase.dto.PaymentHistoryRecordVo;
 import com.ruoyi.purchase.dto.PaymentLedgerDto;
 import com.ruoyi.purchase.dto.PaymentRegistrationDto;
 import com.ruoyi.purchase.mapper.*;
@@ -201,6 +202,7 @@
         for (SupplierManage supplierManage : supplierManages) {
             Map<String, Object> res = new HashMap<>();
             res.put("supplierName", supplierManage.getSupplierName());
+            res.put("supplierId", supplierManage.getId());
 
             // 搴斾粯閲戦璁$畻
             BigDecimal payableAmount = BigDecimal.ZERO;
@@ -266,7 +268,6 @@
                                             new LambdaQueryWrapper<ProductRecord>().eq(ProductRecord::getTicketRegistrationId, ticketRegistration.getId())
                                     ).stream()
                                     .map(ProductRecord::getTicketsNum)
-                                    .map(BigDecimal::new)
                                     .filter(Objects::nonNull)
                                     .reduce(BigDecimal.ZERO, BigDecimal::add);
                             detail.put("voteCount", voteCount);
@@ -354,6 +355,30 @@
         return paymentRegistrationMapper.paymentHistoryList(paymentRegistrationDto);
     }
 
+    /**
+     * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰�
+     * @param supplierId
+     * @return
+     */
+    @Override
+    public List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId) {
+        List<PaymentHistoryRecordVo> paymentRecordList = paymentRegistrationMapper.getPaymentRecordList(supplierId);
+        if(!CollectionUtils.isEmpty(paymentRecordList)) {
+            // 搴斾粯閲戦璁$畻
+            BigDecimal amountTotal = BigDecimal.ZERO;
+            for (PaymentHistoryRecordVo paymentHistoryRecordVo : paymentRecordList) {
+                if(paymentHistoryRecordVo.getType() == 0){
+                    amountTotal = amountTotal.subtract(paymentHistoryRecordVo.getCurrentPaymentAmount());
+                }
+                if(paymentHistoryRecordVo.getType() == 1){
+                    amountTotal = amountTotal.add(paymentHistoryRecordVo.getInvoiceAmount());
+                }
+                paymentHistoryRecordVo.setPayableAmount(amountTotal);
+            }
+        }
+        return paymentRecordList;
+    }
+
     // 鎵归噺鏌ヨ閲囪喘鍙拌处锛堝綋鏈堬級
     private Map<Long, List<PurchaseLedger>> batchQueryPurchaseLedgers(List<Long> supplierIds, LocalDate startDate, LocalDate endDate) {
         LambdaQueryWrapper<PurchaseLedger> query = new LambdaQueryWrapper<>();
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 f007f6e..bba3bdf 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -299,7 +299,7 @@
                 // 璁$畻 futureTickets锛堢洿鎺ヤ娇鐢� BigDecimal 璁$畻锛岄伩鍏嶇簿搴︿涪澶憋級
                 product.setFutureTickets(
                         product.getQuantity()
-                                .subtract(BigDecimal.valueOf(product.getTicketsNum()))
+                                .subtract(product.getTicketsNum())
                 );
 
                 // 璁$畻 futureTicketsAmount
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index 84aef39..7b478d1 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -95,7 +95,7 @@
     /**
      * 鏈鏉ョエ鏁�
      */
-    private Long ticketsNum;
+    private BigDecimal ticketsNum;
 
     /**
      * 鏈鏉ョエ閲戦(鍏�)
diff --git a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
index 16e4960..26a405b 100644
--- a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
+++ b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -125,4 +125,28 @@
         GROUP BY ticket_registration_id
     </select>
 
+    <select id="getPaymentRecordList" resultType="com.ruoyi.purchase.dto.PaymentHistoryRecordVo">
+        SELECT * FROM(
+             SELECT
+                 T1.issue_date AS happenTime,
+                 IFNULL(T1.invoice_amount,0) AS invoiceAmount,
+                 '1' AS type,
+                 0 AS currentPaymentAmount
+             FROM
+                 ticket_registration T1
+                     LEFT JOIN purchase_ledger T2 ON T1.purchase_ledger_id = T2.id
+             WHERE T2.supplier_id = #{supplierId}
+             UNION
+             SELECT
+                 payment_date AS happenTime,
+                 0 AS invoiceAmount,
+                 '0' AS type,
+                 current_payment_amount AS currentPaymentAmount
+             FROM payment_registration
+             WHERE supplier_id = #{supplierId}
+        ) T1
+        ORDER BY T1.happenTime ASC
+
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3