From ab01a0f611c0adb97662bc8f548ca4a911ec8045 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期五, 06 六月 2025 17:37:39 +0800
Subject: [PATCH] 分页修改

---
 src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java |   79 +++++++++++++++++++++++++++++++++++++--
 1 files changed, 75 insertions(+), 4 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 ec355bd..3c58664 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.*;
@@ -46,8 +47,6 @@
     private PaymentRegistrationMapper paymentRegistrationMapper;
 
     private PurchaseLedgerMapper purchaseLedgerMapper;
-
-    private InvoicePurchaseMapper invoicePurchaseMapper;
 
     private SalesLedgerMapper salesLedgerMapper;
 
@@ -203,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;
@@ -214,7 +214,7 @@
                     .map(PurchaseLedger::getId)
                     .filter(Objects::nonNull)
                     .flatMap(id -> salesLedgerProductMapper.selectList(
-                            new QueryWrapper<SalesLedgerProduct>().eq("sales_ledger_id", id)
+                            new QueryWrapper<SalesLedgerProduct>().eq("sales_ledger_id", id).eq("type",2)
                     ).stream())
                     .collect(Collectors.toList());
             payableAmount = salesLedgerProducts.stream()
@@ -268,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);
@@ -345,6 +344,78 @@
         return result;
     }
 
+    /**
+     * 鏌ヨ浠樻鐧昏鍒楄〃
+     *
+     * @param paymentRegistrationDto 浠樻鐧昏
+     * @return 浠樻鐧昏闆嗗悎
+     */
+    @Override
+    public List<PaymentRegistrationDto> paymentHistoryList(PaymentRegistrationDto paymentRegistrationDto) {
+        return paymentRegistrationMapper.paymentHistoryList(paymentRegistrationDto);
+    }
+
+    /**
+     * 鏌ヨ渚涘簲鍟嗗線鏉ヨ褰�
+     * @param supplierId
+     * @return
+     */
+    @Override
+    public List<PaymentHistoryRecordVo> getPaymentRecordList(Long supplierId) {
+        List<PaymentHistoryRecordVo> paymentRecordList = paymentRegistrationMapper.getPaymentRecordList(supplierId);
+        List<PaymentHistoryRecordVo> result = new ArrayList<>();
+        // 搴斾粯鎬婚噾棰濋噾棰濊绠�
+        BigDecimal amountTotal = BigDecimal.ZERO;
+        if(CollectionUtils.isNotEmpty(paymentRecordList)) {
+            Map<LocalDate, List<PaymentHistoryRecordVo>> dateListMap = paymentRecordList.stream().collect(
+                                                                        Collectors.groupingBy(
+                                                                                PaymentHistoryRecordVo::getHappenTime,
+                                                                                LinkedHashMap::new,
+                                                                                Collectors.toList()
+                                                                        )
+                                                                        );
+            BigDecimal amountDateTotal = BigDecimal.ZERO;
+            for (LocalDate localDate : dateListMap.keySet()) {
+                BigDecimal currentPaymentAmount = BigDecimal.ZERO;
+                BigDecimal invoiceAmount = BigDecimal.ZERO;
+                BigDecimal currentDateTotal = BigDecimal.ZERO;
+                List<PaymentHistoryRecordVo> paymentHistoryRecordVos = dateListMap.get(localDate);
+                // 璁$畻褰撳ぉ姹囨鏁�
+                currentPaymentAmount = paymentHistoryRecordVos.stream()
+                                            .filter(item ->item.getType() == 0)
+                                            .map(PaymentHistoryRecordVo::getCurrentPaymentAmount)
+                                            .reduce(BigDecimal.ZERO,BigDecimal::add);
+                // 璁$畻浠婂ぉ鏉ョエ鏁�
+                invoiceAmount = paymentHistoryRecordVos.stream()
+                        .filter(item ->item.getType() == 1)
+                        .map(PaymentHistoryRecordVo::getInvoiceAmount)
+                        .reduce(BigDecimal.ZERO,BigDecimal::add);
+                // 璁$畻褰撴棩姹囨��
+                currentDateTotal = currentDateTotal.add(invoiceAmount).subtract(currentPaymentAmount);
+                PaymentHistoryRecordVo paymentHistoryRecordVo = new PaymentHistoryRecordVo();
+                paymentHistoryRecordVo.setHappenTime(localDate);
+                paymentHistoryRecordVo.setCurrentPaymentAmount(currentPaymentAmount);
+                paymentHistoryRecordVo.setInvoiceAmount(invoiceAmount);
+                amountTotal = amountTotal.add(currentDateTotal);
+                paymentHistoryRecordVo.setPayableAmount(amountTotal);
+                result.add(paymentHistoryRecordVo);
+            }
+
+        }
+        return result;
+    }
+
+    /**
+     * 鏌ヨ浠樻鐧昏鍒楄〃鍒嗛〉
+     *
+     * @param paymentRegistrationDto 浠樻鐧昏
+     * @return 浠樻鐧昏闆嗗悎
+     */
+    @Override
+    public IPage<PaymentRegistrationDto> paymentHistoryListPage(Page page, PaymentRegistrationDto paymentRegistrationDto) {
+        return paymentRegistrationMapper.paymentHistoryListPage(page, paymentRegistrationDto);
+    }
+
     // 鎵归噺鏌ヨ閲囪喘鍙拌处锛堝綋鏈堬級
     private Map<Long, List<PurchaseLedger>> batchQueryPurchaseLedgers(List<Long> supplierIds, LocalDate startDate, LocalDate endDate) {
         LambdaQueryWrapper<PurchaseLedger> query = new LambdaQueryWrapper<>();

--
Gitblit v1.9.3