From 97857de7bc536e459f8d5de78494c03cebc3171e Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 19 六月 2025 11:37:12 +0800
Subject: [PATCH] 2025-06-19修改

---
 src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java |   95 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 81 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
index c9d189f..f572cf2 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -1,7 +1,10 @@
 package com.ruoyi.purchase.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
@@ -9,7 +12,9 @@
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.other.mapper.TempFileMapper;
 import com.ruoyi.other.pojo.TempFile;
+import com.ruoyi.purchase.dto.PaymentRegistrationDto;
 import com.ruoyi.purchase.dto.TicketRegistrationDto;
+import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
 import com.ruoyi.purchase.mapper.ProductRecordMapper;
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
 import com.ruoyi.purchase.mapper.TicketRegistrationMapper;
@@ -24,6 +29,7 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -66,6 +72,9 @@
 
     private final ProductRecordMapper productRecordMapper;
 
+    @Autowired
+    private PaymentRegistrationMapper paymentRegistrationMapper;
+
     @Value("${file.upload-dir}")
     private String uploadDir;
 
@@ -78,7 +87,27 @@
                     .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName())
                     .eq(TicketRegistration::getIssueDate, ticketRegistration.getIssueDate());
         }
-        return ticketRegistrationMapper.selectList(queryWrapper);
+        List<TicketRegistration> ticketRegistrationList = ticketRegistrationMapper.selectList(queryWrapper);
+        // 璁$畻宸蹭粯娆鹃噾棰�
+        if (CollectionUtils.isNotEmpty(ticketRegistrationList)) {
+            List<Long> ids = ticketRegistrationList.stream().map(TicketRegistration::getId).collect(Collectors.toList());
+            List<PaymentRegistrationDto> paymentRegistrationDtoList = paymentRegistrationMapper.countPaymentTotalByTicketRegId(ids);
+            for (TicketRegistration registration : ticketRegistrationList) {
+                BigDecimal paymentAmountTotal = BigDecimal.ZERO;
+                for (PaymentRegistrationDto paymentRegistrationDto : paymentRegistrationDtoList) {
+                    if (registration.getId().equals(paymentRegistrationDto.getTicketRegistrationId())) {
+                        paymentAmountTotal = paymentRegistrationDto.getPaymentAmountTotal();
+                        break;
+                    }
+                }
+                BigDecimal invoiceAmount = registration.getInvoiceAmount();
+                BigDecimal subtractAmount = invoiceAmount.subtract(paymentAmountTotal);
+                registration.setPaymentAmountTotal(paymentAmountTotal);
+                registration.setUnPaymentAmountTotal(subtractAmount);
+            }
+        }
+
+        return ticketRegistrationList;
     }
 
     @Override
@@ -110,13 +139,13 @@
 
         // 6. 澧炲姞閲囪喘鍙拌处浜у搧寮�绁ㄨ褰�
         List<SalesLedgerProduct> salesLedgerProducts = ticketRegistrationDto.getProductData();
-        if (CollectionUtils.isNotEmpty(salesLedgerProducts)){
+        if (CollectionUtils.isNotEmpty(salesLedgerProducts)) {
             for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) {
                 ProductRecord productRecord = new ProductRecord();
                 productRecord.setTicketRegistrationId(ticketRegistration.getId());
                 productRecord.setPurchaseLedgerId(ticketRegistrationDto.getPurchaseLedgerId());
                 productRecord.setCreatedAt(DateUtils.getNowDate());
-                BeanUtils.copyProperties(salesLedgerProduct,productRecord);
+                BeanUtils.copyProperties(salesLedgerProduct, productRecord);
                 productRecord.setId(null);
                 productRecord.setType("2");
                 productRecordMapper.insert(productRecord);
@@ -229,8 +258,8 @@
     @Override
     public List getTicketNo(TicketRegistrationDto ticketRegistrationDto) {
         LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.select(TicketRegistration::getId,TicketRegistration::getInvoiceNumber,TicketRegistration::getInvoiceAmount)
-                .eq(TicketRegistration::getPurchaseLedgerId,ticketRegistrationDto.getId());
+        queryWrapper.select(TicketRegistration::getId, TicketRegistration::getInvoiceNumber, TicketRegistration::getInvoiceAmount)
+                .eq(TicketRegistration::getPurchaseLedgerId, ticketRegistrationDto.getId());
         List<Map<String, Object>> result = ticketRegistrationMapper.selectMaps(queryWrapper);
         // 灏嗕笅鍒掔嚎鍛藉悕杞崲涓洪┘宄板懡鍚�
         return result.stream().map(map -> map.entrySet().stream()
@@ -238,6 +267,44 @@
                         entry -> underlineToCamel(entry.getKey()),
                         Map.Entry::getValue))
         ).collect(Collectors.toList());
+    }
+
+    @Override
+    public IPage<TicketRegistration> selectTicketRegistrationListPage(Page page, TicketRegistration ticketRegistration) {
+        LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotBlank(ticketRegistration.getPurchaseContractNumber())) {
+            queryWrapper.like(TicketRegistration::getPurchaseContractNumber, ticketRegistration.getPurchaseContractNumber())
+                    .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName());
+        }
+        if (!ObjectUtils.isEmpty(ticketRegistration.getIssueDateStart())&&!ObjectUtils.isEmpty(ticketRegistration.getIssueDateEnd())) {
+            queryWrapper.between(TicketRegistration::getIssueDate,LocalDate.parse(ticketRegistration.getIssueDateStart(), DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalDate.parse(ticketRegistration.getIssueDateEnd(), DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        }
+        IPage<TicketRegistration> ticketRegistrationIPage = ticketRegistrationMapper.selectPage(page, queryWrapper);
+        // 璁$畻宸蹭粯娆鹃噾棰�
+        if (CollectionUtils.isNotEmpty(ticketRegistrationIPage.getRecords())) {
+            List<Long> ids = ticketRegistrationIPage.getRecords().stream().map(TicketRegistration::getId).collect(Collectors.toList());
+            List<PaymentRegistrationDto> paymentRegistrationDtoList = paymentRegistrationMapper.countPaymentTotalByTicketRegId(ids);
+            for (TicketRegistration registration : ticketRegistrationIPage.getRecords()) {
+                BigDecimal paymentAmountTotal = BigDecimal.ZERO;
+                for (PaymentRegistrationDto paymentRegistrationDto : paymentRegistrationDtoList) {
+                    if (registration.getId().equals(paymentRegistrationDto.getTicketRegistrationId())) {
+                        paymentAmountTotal = paymentRegistrationDto.getPaymentAmountTotal();
+                        break;
+                    }
+                }
+                BigDecimal invoiceAmount = registration.getInvoiceAmount();
+                BigDecimal subtractAmount = invoiceAmount.subtract(paymentAmountTotal);
+                registration.setPaymentAmountTotal(paymentAmountTotal);
+                registration.setUnPaymentAmountTotal(subtractAmount);
+            }
+        }
+        if (!ObjectUtils.isEmpty(ticketRegistration.getStatus())) {
+
+            if (ticketRegistration.getStatus()) {
+                ticketRegistrationIPage.getRecords().removeIf(receiptPaymentDto1 -> new BigDecimal("0.00").equals(receiptPaymentDto1.getUnPaymentAmountTotal()));
+            }
+        }
+        return ticketRegistrationIPage;
     }
 
     private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
@@ -272,17 +339,17 @@
                 }
 
                 // 璁$畻 futureTickets锛堢洿鎺ヤ娇鐢� BigDecimal 璁$畻锛岄伩鍏嶇簿搴︿涪澶憋級
-                product.setFutureTickets(
-                        product.getQuantity()
-                                .subtract(BigDecimal.valueOf(product.getTicketsNum()))
-                                .longValueExact() // 浣跨敤 exact 鏂规硶纭繚鏃犲皬鏁伴儴鍒�
-                );
+//                product.setFutureTickets(
+//                        product.getQuantity()
+//                                .subtract(product.getTicketsNum())
+//                );
+
 
                 // 璁$畻 futureTicketsAmount
-                product.setFutureTicketsAmount(
-                        product.getTaxInclusiveTotalPrice()
-                                .subtract(product.getTicketsAmount())
-                );
+//                product.setFutureTicketsAmount(
+//                        product.getTaxInclusiveTotalPrice()
+//                                .subtract(product.getTicketsAmount())
+//                );
                 product.setType(type);
                 salesLedgerProductMapper.updateById(product);
             });

--
Gitblit v1.9.3