From 3512270362c77fe45bc68ab7b6f28bd1bd2f8bfb Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期一, 09 六月 2025 11:58:56 +0800 Subject: [PATCH] 分页修改 --- src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java | 3 src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java | 9 +- src/main/java/com/ruoyi/sales/dto/CustomerInteractionDto.java | 25 ++++++++ src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java | 12 +++ src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java | 7 ++ src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java | 8 ++ src/main/resources/mapper/sales/ReceiptPaymentMapper.xml | 47 +++++++++++++++ src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java | 52 +++++++++++++++++ 8 files changed, 155 insertions(+), 8 deletions(-) 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 3c58664..95a51ff 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java +++ b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java @@ -288,6 +288,8 @@ detailPagination.put("pageSize", detailPageSize); detailPagination.put("pages", (int) Math.ceil((double) totalDetails / detailPageSize)); + // 搴斾粯閲戦閫昏緫涓嶉噰鐢ㄥ悎鍚岄噾棰濇敼鎴� 鍙戠エ閲戦鍑忎粯娆鹃噾棰� + payableAmount = invoiceAmount.subtract(paymentAmount); res.put("invoiceAmount", invoiceAmount); res.put("payableAmount", payableAmount); res.put("paymentAmount", paymentAmount); @@ -374,7 +376,6 @@ Collectors.toList() ) ); - BigDecimal amountDateTotal = BigDecimal.ZERO; for (LocalDate localDate : dateListMap.keySet()) { BigDecimal currentPaymentAmount = BigDecimal.ZERO; BigDecimal invoiceAmount = BigDecimal.ZERO; diff --git a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java index 6669842..1630b0b 100644 --- a/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java +++ b/src/main/java/com/ruoyi/sales/controller/ReceiptPaymentController.java @@ -54,14 +54,13 @@ } /** - * 鍥炴鐧昏鍒嗛〉鏌ヨ - * @param page + * 瀹㈡埛寰�鏉ヨ褰曟煡璇� * @param receiptPaymentDto * @return */ - @GetMapping("/listPage") - public AjaxResult receiptPaymentListPage (Page page, ReceiptPaymentDto receiptPaymentDto) { - return AjaxResult.success(receiptPaymentService.receiptPaymentListPage(page,receiptPaymentDto)); + @GetMapping("/customerInteractions") + public AjaxResult customerInteractions (ReceiptPaymentDto receiptPaymentDto) { + return AjaxResult.success(receiptPaymentService.customerInteractions(receiptPaymentDto)); } /** diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java index 43db757..5ac4159 100644 --- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java +++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java @@ -178,12 +178,20 @@ return iPage; } for (SalesLedger salesLedger : iPage.getRecords()) { + boolean existFlag = false; + BigDecimal noInvoiceAmountTotal = BigDecimal.ZERO; for (InvoiceLedgerDto invoiceLedgerDto : invoiceLedgerDtoList) { if (salesLedger.getId().intValue() == invoiceLedgerDto.getSalesLedgerId()) { - BigDecimal noInvoiceAmountTotal = salesLedger.getContractAmount().subtract(invoiceLedgerDto.getInvoiceTotal()); - salesLedger.setNoInvoiceAmountTotal(noInvoiceAmountTotal); + noInvoiceAmountTotal = salesLedger.getContractAmount().subtract(invoiceLedgerDto.getInvoiceTotal()); + existFlag = true; + break; } } + if(existFlag){ + salesLedger.setNoInvoiceAmountTotal(noInvoiceAmountTotal); + }else { + salesLedger.setNoInvoiceAmountTotal(salesLedger.getContractAmount()); + } } return iPage; } diff --git a/src/main/java/com/ruoyi/sales/dto/CustomerInteractionDto.java b/src/main/java/com/ruoyi/sales/dto/CustomerInteractionDto.java new file mode 100644 index 0000000..2ad0a24 --- /dev/null +++ b/src/main/java/com/ruoyi/sales/dto/CustomerInteractionDto.java @@ -0,0 +1,25 @@ +package com.ruoyi.sales.dto; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Data +public class CustomerInteractionDto { + + /** 寮�绁ㄩ噾棰� */ + private BigDecimal invoiceAmount; + + /** 鍥炴閲戦 */ + private BigDecimal receiptAmount; + + /** 搴旀敹閲戦 */ + private BigDecimal unReceiptAmount; + + /** 鍙戠敓鏃ユ湡 */ + private LocalDate happenTime; + + /** 绫诲瀷 1 鍙戠エ鐧昏 0 鍥炴鐧昏 */ + private int type; +} diff --git a/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java b/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java index 65a23ee..2adc300 100644 --- a/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java +++ b/src/main/java/com/ruoyi/sales/mapper/ReceiptPaymentMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.sales.dto.CustomerInteractionDto; import com.ruoyi.sales.dto.InvoiceLedgerDto; import com.ruoyi.sales.dto.ReceiptPaymentDto; import com.ruoyi.sales.pojo.ReceiptPayment; @@ -50,4 +51,10 @@ */ IPage<ReceiptPaymentDto> receiptPaymentHistoryListPage(Page page,@Param("params") ReceiptPaymentDto receiptPaymentDto); + /** + * 瀹㈡埛寰�鏉ヨ褰曟煡璇� + * @param receiptPaymentDto + * @return + */ + List<CustomerInteractionDto> customerInteractions (ReceiptPaymentDto receiptPaymentDto); } diff --git a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java index 18b4fa6..25ddc6f 100644 --- a/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java +++ b/src/main/java/com/ruoyi/sales/service/ReceiptPaymentService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.sales.dto.CustomerInteractionDto; import com.ruoyi.sales.dto.InvoiceLedgerDto; import com.ruoyi.sales.dto.ReceiptPaymentDto; import com.ruoyi.sales.pojo.ReceiptPayment; @@ -77,4 +78,11 @@ * 鏌ヨ鍥炴璁板綍鍒嗛〉 */ IPage<ReceiptPaymentDto> receiptPaymentHistoryListPage(Page page, ReceiptPaymentDto receiptPaymentDto); + + /** + * 瀹㈡埛寰�鏉ヨ褰曟煡璇� + * @param receiptPaymentDto + * @return + */ + List<CustomerInteractionDto> customerInteractions (ReceiptPaymentDto receiptPaymentDto); } 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 1e84cec..3e4de3d 100644 --- a/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java +++ b/src/main/java/com/ruoyi/sales/service/impl/ReceiptPaymentServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.purchase.dto.PaymentHistoryRecordVo; +import com.ruoyi.sales.dto.CustomerInteractionDto; import com.ruoyi.sales.dto.InvoiceLedgerDto; import com.ruoyi.sales.dto.ReceiptPaymentDto; import com.ruoyi.sales.mapper.ReceiptPaymentMapper; @@ -20,6 +22,7 @@ import java.time.LocalDate; import java.time.YearMonth; import java.util.*; +import java.util.stream.Collectors; @Service public class ReceiptPaymentServiceImpl extends ServiceImpl<ReceiptPaymentMapper,ReceiptPayment> implements ReceiptPaymentService { @@ -190,4 +193,53 @@ public IPage<ReceiptPaymentDto> receiptPaymentHistoryListPage(Page page, ReceiptPaymentDto receiptPaymentDto) { return receiptPaymentMapper.receiptPaymentHistoryListPage(page, receiptPaymentDto); } + + /** + * 瀹㈡埛寰�鏉ヨ褰曟煡璇� + * @param receiptPaymentDto + * @return + */ + @Override + public List<CustomerInteractionDto> customerInteractions(ReceiptPaymentDto receiptPaymentDto) { + ArrayList<CustomerInteractionDto> result = new ArrayList<>(); + List<CustomerInteractionDto> customerInteractionDtos = receiptPaymentMapper.customerInteractions(receiptPaymentDto); + if(CollectionUtils.isEmpty(customerInteractionDtos)){ + return result; + } + // 搴旀敹鎬婚噾棰濋噾棰濊绠� + BigDecimal amountTotal = BigDecimal.ZERO; + Map<LocalDate, List<CustomerInteractionDto>> dateListMap = customerInteractionDtos.stream().collect( + Collectors.groupingBy( + CustomerInteractionDto::getHappenTime, + LinkedHashMap::new, + Collectors.toList() + ) + ); + for (LocalDate localDate : dateListMap.keySet()) { + BigDecimal currentReceiptAmount = BigDecimal.ZERO; + BigDecimal invoiceAmount = BigDecimal.ZERO; + BigDecimal currentDateTotal = BigDecimal.ZERO; + List<CustomerInteractionDto> customerInteractionDtoList = dateListMap.get(localDate); + // 璁$畻褰撳ぉ鏀舵鏁� + currentReceiptAmount = customerInteractionDtoList.stream() + .filter(item ->item.getType() == 0) + .map(CustomerInteractionDto::getReceiptAmount) + .reduce(BigDecimal.ZERO,BigDecimal::add); + // 璁$畻褰撳ぉ寮�绁ㄦ暟 + invoiceAmount = customerInteractionDtoList.stream() + .filter(item ->item.getType() == 1) + .map(CustomerInteractionDto::getInvoiceAmount) + .reduce(BigDecimal.ZERO,BigDecimal::add); + // 璁$畻褰撴棩姹囨�� + currentDateTotal = currentDateTotal.add(invoiceAmount).subtract(currentReceiptAmount); + CustomerInteractionDto customerInteractionDto = new CustomerInteractionDto(); + customerInteractionDto.setHappenTime(localDate); + customerInteractionDto.setInvoiceAmount(invoiceAmount); + customerInteractionDto.setReceiptAmount(currentReceiptAmount); + amountTotal = amountTotal.add(currentDateTotal); + customerInteractionDto.setUnReceiptAmount(amountTotal); + result.add(customerInteractionDto); + } + return result; + } } diff --git a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml index 2402490..4ca0202 100644 --- a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml +++ b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml @@ -188,4 +188,51 @@ ORDER BY T1.receipt_payment_date DESC </select> + <select id="customerInteractions" resultType="com.ruoyi.sales.dto.CustomerInteractionDto"> + SELECT + * + FROM + ( + SELECT + receipt_payment_amount AS receiptAmount, + receipt_payment_date AS happenTime, + 0 AS type, + 0 AS invoiceAmount + FROM + receipt_payment + WHERE + invoice_ledger_id IN ( + SELECT + id + FROM + invoice_ledger + WHERE + invoice_registration_product_id IN ( + SELECT + id + FROM + invoice_registration_product + WHERE + sales_ledger_id IN ( SELECT id FROM sales_ledger WHERE customer_id = #{customerId} ))) UNION + SELECT + 0 AS receiptAmount, + invoice_date AS happenTime, + 1 AS type, + invoice_total AS invoiceAmount + FROM + invoice_ledger + WHERE + invoice_registration_product_id IN ( + SELECT + id + FROM + invoice_registration_product + WHERE + sales_ledger_id IN ( SELECT id FROM sales_ledger WHERE customer_id = #{customerId} )) + AND invoice_date IS NOT NULL + ) T1 + ORDER BY + T1.happenTime ASC + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.3