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