| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | private final ProductRecordMapper productRecordMapper; |
| | | |
| | | @Autowired |
| | | private PaymentRegistrationMapper paymentRegistrationMapper; |
| | | |
| | | @Value("${file.upload-dir}") |
| | | private String uploadDir; |
| | | |
| | |
| | | .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 |
| | |
| | | // 计算 futureTickets(直接使用 BigDecimal 计算,避免精度丢失) |
| | | product.setFutureTickets( |
| | | product.getQuantity() |
| | | .subtract(BigDecimal.valueOf(product.getTicketsNum())) |
| | | .longValueExact() // 使用 exact 方法确保无小数部分 |
| | | .subtract(product.getTicketsNum()) |
| | | ); |
| | | |
| | | // 计算 futureTicketsAmount |