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