chenrui
3 天以前 3e03f3d957c44ff2e4909b9fb4fff8621d466d10
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -9,7 +9,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 +26,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 +69,9 @@
    private final ProductRecordMapper productRecordMapper;
    @Autowired
    private PaymentRegistrationMapper paymentRegistrationMapper;
    @Value("${file.upload-dir}")
    private String uploadDir;
@@ -78,7 +84,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
@@ -274,8 +300,7 @@
                // 计算 futureTickets(直接使用 BigDecimal 计算,避免精度丢失)
                product.setFutureTickets(
                        product.getQuantity()
                                .subtract(BigDecimal.valueOf(product.getTicketsNum()))
                                .longValueExact() // 使用 exact 方法确保无小数部分
                                .subtract(product.getTicketsNum())
                );
                // 计算 futureTicketsAmount