From 274a61f398e1d7b4ae63208897b70b3a73b30805 Mon Sep 17 00:00:00 2001 From: liyong <18434998025@163.com> Date: 星期三, 18 六月 2025 09:14:24 +0800 Subject: [PATCH] 非空校验 --- src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 80 ++++++++++++++++++++++++++++++++++++--- 1 files changed, 73 insertions(+), 7 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..0cd6e56 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) { @@ -274,8 +341,7 @@ // 璁$畻 futureTickets锛堢洿鎺ヤ娇鐢� BigDecimal 璁$畻锛岄伩鍏嶇簿搴︿涪澶憋級 product.setFutureTickets( product.getQuantity() - .subtract(BigDecimal.valueOf(product.getTicketsNum())) - .longValueExact() // 浣跨敤 exact 鏂规硶纭繚鏃犲皬鏁伴儴鍒� + .subtract(product.getTicketsNum()) ); // 璁$畻 futureTicketsAmount -- Gitblit v1.9.3