From 63ccaee5545740122a9d58983aa75d9da9de7530 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期一, 26 五月 2025 13:46:11 +0800
Subject: [PATCH] 回款登记功能修改

---
 src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java            |   11 +++
 src/main/resources/mapper/sales/InvoiceLedgerMapper.xml                   |   21 ++++--
 src/main/resources/mapper/sales/ReceiptPaymentMapper.xml                  |   81 +++++++++++++++++---------
 src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java  |   14 ----
 src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java |   20 ++++++
 src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java             |    2 
 6 files changed, 97 insertions(+), 52 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java
index f018413..7729ad1 100644
--- a/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java
@@ -41,7 +41,7 @@
      * @param invoiceLedgerDto
      * @return
      */
-    IPage<InvoiceLedgerDto> invoiceLedgerSalesAccount(Page page, InvoiceLedgerDto invoiceLedgerDto);
+    IPage<InvoiceLedgerDto> invoiceLedgerSalesAccount(Page page,@Param("invoiceLedgerDto") InvoiceLedgerDto invoiceLedgerDto);
 
     /**
      * 浜у搧寮�绁ㄥ彴璐﹁鎯�
diff --git a/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java b/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java
index 9801d3d..2914230 100644
--- a/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java
@@ -8,6 +8,8 @@
 import com.ruoyi.sales.pojo.ReceiptPayment;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
+
 public interface ReceiptPaymentMapper extends BaseMapper<ReceiptPayment> {
 
     IPage<ReceiptPaymentDto> receiptPaymentListPage(Page page, @Param("receiptPaymentDto") ReceiptPaymentDto receiptPaymentDto);
@@ -28,4 +30,13 @@
      * @return
      */
     InvoiceLedgerDto invoiceInfo(Integer id);
+
+    /**
+     * 璁$畻鍓嶅灏戞潯鏁版嵁鍥炴閲戦缁煎悎
+     * @param customerId
+     * @param total
+     * @return
+     */
+    BigDecimal getReceiptAmount(@Param("customerId") Integer customerId, @Param("total") long total);
+
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
index f561a72..8d40b1c 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java
@@ -242,20 +242,6 @@
     @Override
     public IPage<InvoiceLedgerDto> invoiceLedgerSalesAccount(Page page, InvoiceLedgerDto invoiceLedgerDto) {
         IPage<InvoiceLedgerDto> invoiceLedgerDtoIPage = invoiceLedgerMapper.invoiceLedgerSalesAccount(page, invoiceLedgerDto);
-//        for (InvoiceLedgerDto record : invoiceLedgerDtoIPage.getRecords()) {
-//            QueryWrapper<ReceiptPayment> queryWrapper = new QueryWrapper<>();
-//            queryWrapper.eq("customer_id", record.getCustomerId());
-//            List<ReceiptPayment> receiptPaymentList = receiptPaymentMapper.selectList(queryWrapper);
-//            BigDecimal totalAmount = BigDecimal.ZERO;
-//            if(!CollectionUtils.isEmpty(receiptPaymentList)){
-//                for (ReceiptPayment receiptPayment : receiptPaymentList) {
-//                    totalAmount = totalAmount.add(receiptPayment.getInvoiceAmount());
-//                }
-//            }
-//            BigDecimal unReceiptPaymentAmount = record.getInvoiceAmount().subtract(totalAmount);
-//            record.setReceiptPaymentAmount(totalAmount);
-//            record.setUnReceiptPaymentAmount(unReceiptPaymentAmount);
-//        }
         return invoiceLedgerDtoIPage;
     }
 
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
index f1038ae..7ee2762 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java
@@ -11,6 +11,8 @@
 import com.ruoyi.sales.service.ReceiptPaymentService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
@@ -68,7 +70,23 @@
      */
     @Override
     public IPage<ReceiptPaymentDto> receiptPaymentListPage(Page page, ReceiptPaymentDto receiptPaymentDto) {
-        return receiptPaymentMapper.receiptPaymentListPage(page, receiptPaymentDto);
+        // 璁$畻鍒嗛〉鍓峱age.current-1 * limit鏉℃暟鐨勭患鍚堣绠楀凡缁忔敹鍥炵殑鍥炴閲戦
+        // 璁$畻宸茬粡鍒嗛〉鐨勬潯鏁�
+        long total = (page.getCurrent() - 1) * page.getSize();
+        BigDecimal receiptAmount = receiptPaymentMapper.getReceiptAmount(receiptPaymentDto.getCustomerId(), total);
+        if(ObjectUtils.isEmpty(receiptAmount)){
+            receiptAmount = BigDecimal.ZERO;
+        }
+        IPage<ReceiptPaymentDto> iPage = receiptPaymentMapper.receiptPaymentListPage(page, receiptPaymentDto);
+        // 寮�绁ㄦ�婚噾棰�
+        BigDecimal invoiceTotal = CollectionUtils.isEmpty(iPage.getRecords()) ? BigDecimal.ZERO : iPage.getRecords().get(0).getInvoiceTotal();
+        // 褰撳墠搴旀敹閲戦
+        BigDecimal currentUnReceiptAmount = invoiceTotal.subtract(receiptAmount);
+        for (ReceiptPaymentDto record : iPage.getRecords()) {
+            currentUnReceiptAmount = currentUnReceiptAmount.subtract(record.getReceiptPaymentAmount());
+            record.setNoReceiptAmount(currentUnReceiptAmount);
+        }
+        return iPage;
     }
 
     /**
diff --git a/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml b/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
index 11d1538..7bc19bd 100644
--- a/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml
@@ -111,15 +111,22 @@
 
     <select id="invoiceLedgerSalesAccount" resultType="com.ruoyi.sales.dto.InvoiceLedgerDto">
         SELECT
-            customer_id,
-            T2.customer_name,
-            SUM( invoice_amount ) invoiceAmount
+            T4.id,T4.customer_name ,
+            SUM(invoice_total) AS invoice_total,
+            IFNULL( T5.receipt_payment_amount , 0 ) AS receipt_payment_amount,
+            (invoice_total - receipt_payment_amount) AS unReceipt_payment_amount
         FROM
             invoice_ledger T1
-                LEFT JOIN customer T2 ON T1.customer_id = T2.id
-        GROUP BY
-            customer_id,
-            T2.customer_name;
+                LEFT JOIN invoice_registration_product T2 ON T1.invoice_registration_product_id = T2.id
+                LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id
+                LEFT JOIN customer T4 ON T4.id = T3.customer_id
+                LEFT JOIN ( SELECT invoice_ledger_id, SUM( receipt_payment_amount ) AS receipt_payment_amount FROM receipt_payment GROUP BY invoice_ledger_id ) T5 ON T5.invoice_ledger_id = T1.id
+        <where>
+            <if test="invoiceLedgerDto.searchText != null and invoiceLedgerDto.searchText != '' ">
+                T4.customer_name LIKE CONCAT ('%',#{invoiceLedgerDto.searchText},'%')
+            </if>
+        </where>
+        GROUP BY T4.id,T4.customer_name
     </select>
 
     <select id="invoiceLedgerProductInfo" resultType="com.ruoyi.sales.dto.InvoiceRegistrationProductDto">
diff --git a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
index a282e1a..8d185da 100644
--- a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
+++ b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -5,39 +5,31 @@
 <mapper namespace="com.ruoyi.sales.mapper.ReceiptPaymentMapper">
     <select id="receiptPaymentListPage" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
         SELECT
-            T1.id                 ,
-            T1.sales_ledger_id        ,
-            T1.sales_contract_no      ,
-            T1.customer_id            ,
-            T1.invoice_no             ,
-            T1.invoice_amount         ,
-            T1.tax_rate               ,
-            T1.receipt_payment_type   ,
-            T1.receipt_payment_amount ,
-            T1.registrant             ,
-            T1.receipt_payment_date   ,
-            T1.create_time            ,
-            T1.create_user            ,
-            T1.update_time            ,
-            T1.update_user            ,
-            T1.tenant_id,
-            T3.customer_contract_no,
-            T2.customer_name
-        FROM receipt_payment T1
-        LEFT JOIN customer T2 ON T1.customer_id = T2.id
-        LEFT JOIN sales_ledger T3 ON T1.sales_ledger_id = T3.id
+            T4.customer_id,
+            IFNULL(T5.invoice_total,0) AS invoice_total,
+            T1.receipt_payment_amount,
+            T1.receipt_payment_date
+        FROM
+            receipt_payment T1
+        LEFT JOIN invoice_ledger T2 ON T1.invoice_ledger_id = T2.id
+        LEFT JOIN invoice_registration_product T3 ON T2.invoice_registration_product_id = T3.id
+        LEFT JOIN sales_ledger T4 ON T4.id = T3.sales_ledger_id
+        LEFT JOIN (
+            SELECT
+                T3.customer_id,
+                SUM( invoice_total ) AS invoice_total
+            FROM
+                invoice_ledger T1
+            LEFT JOIN invoice_registration_product T2 ON T1.invoice_registration_product_id = T2.id
+            LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id
+            GROUP BY T3.customer_id
+        ) T5 ON T5.customer_id = T4.customer_id
         <where>
-            <if test="receiptPaymentDto.searchText != null and receiptPaymentDto.searchText != ''">
-                AND (
-                T2.customer_name LIKE CONCAT('%',#{receiptPaymentDto.searchText},'%')
-                OR T1.sales_contract_no LIKE CONCAT('%',#{receiptPaymentDto.searchText},'%')
-                )
-            </if>
             <if test="receiptPaymentDto.customerId != null">
-                AND T1.customer_id = #{receiptPaymentDto.customerId}
+                AND T4.customer_id = #{receiptPaymentDto.customerId}
             </if>
         </where>
-        ORDER BY  T1.receipt_payment_date ASC
+        ORDER BY T1.receipt_payment_date ASC
     </select>
 
     <select id="receiptPaymentInfo" resultType="com.ruoyi.sales.dto.ReceiptPaymentDto">
@@ -119,4 +111,35 @@
         WHERE T1.id = #{id}
     </select>
 
+    <select id="getReceiptAmount" resultType="java.math.BigDecimal">
+        SELECT
+            SUM( receipt_payment_amount ) AS total_amount
+        FROM
+            (
+                SELECT
+                    T1.receipt_payment_amount
+                FROM
+                    receipt_payment T1
+                        LEFT JOIN invoice_ledger T2 ON T1.invoice_ledger_id = T2.id
+                        LEFT JOIN invoice_registration_product T3 ON T2.invoice_registration_product_id = T3.id
+                        LEFT JOIN sales_ledger T4 ON T4.id = T3.sales_ledger_id
+                        LEFT JOIN (
+                        SELECT
+                            T3.customer_id,
+                            SUM( invoice_total ) AS invoice_total
+                        FROM
+                            invoice_ledger T1
+                                LEFT JOIN invoice_registration_product T2 ON T1.invoice_registration_product_id = T2.id
+                                LEFT JOIN sales_ledger T3 ON T3.id = T2.sales_ledger_id
+                        GROUP BY
+                            T3.customer_id
+                    ) T5 ON T5.customer_id = T4.customer_id
+                WHERE
+                    T4.customer_id = #{customerId}
+
+                ORDER BY
+                    T1.receipt_payment_date ASC
+                    LIMIT #{total} ) AS limited_rows
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3