src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -27,6 +27,7 @@
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.purchase.dto.PurchaseLedgerDto;
import com.ruoyi.purchase.dto.TicketRegistrationDto;
import com.ruoyi.purchase.mapper.ProductRecordMapper;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.mapper.TicketRegistrationMapper;
@@ -34,6 +35,7 @@
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.purchase.pojo.TicketRegistration;
import com.ruoyi.purchase.service.IPurchaseLedgerService;
import com.ruoyi.purchase.service.ITicketRegistrationService;
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
@@ -172,7 +174,7 @@
        // 4. 处理子表数据
        List<SalesLedgerProduct> productList = purchaseLedgerDto.getProductData();
        if (productList != null && !productList.isEmpty()) {
            handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType());
            handleSalesLedgerProducts(purchaseLedgerDto,purchaseLedger.getId(), productList, purchaseLedgerDto.getType());
        }
        // 5. 迁移临时文件到正式目录
@@ -183,7 +185,9 @@
        return 1;
    }
    private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
    private final ITicketRegistrationService ticketRegistrationService;
    private void handleSalesLedgerProducts(PurchaseLedgerDto purchaseLedgerDto,Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) throws IOException {
        if (products == null || products.isEmpty()) {
            throw new BaseException("产品信息不存在");
        }
@@ -252,6 +256,26 @@
                salesLedgerProduct.setRegisterDate(localDateTime);
                salesLedgerProductMapper.insert(salesLedgerProduct);
            }
            if (purchaseLedgerDto.getIsInvoice().equals(2)) {
                // 无需开票,提示系统生成发票
                for (SalesLedgerProduct productDatum : insertList) {
                    productDatum.setTicketsAmount(productDatum.getTaxInclusiveTotalPrice());
                    productDatum.setTicketsNum(productDatum.getQuantity());
                }
                BigDecimal invoiceAmount = insertList.stream()
                        .map(SalesLedgerProduct::getTicketsAmount)
                        .reduce(BigDecimal.ZERO, BigDecimal::add);
                TicketRegistrationDto ticketRegistrationDto = new TicketRegistrationDto();
                BeanUtils.copyProperties(purchaseLedgerDto, ticketRegistrationDto);
                ticketRegistrationDto.setInvoiceAmount(invoiceAmount);
                ticketRegistrationDto.setProductData(insertList);
                ticketRegistrationDto.setPurchaseLedgerId(salesLedgerId);
                ticketRegistrationDto.setIssUer("系统自动生成");
                ticketRegistrationDto.setIssueDate(LocalDate.now());
                ticketRegistrationDto.setInvoiceNumber("此台账无需手动开票,系统将所有产品自动生成来票台账");
                ticketRegistrationService.addOrUpdateRegistration(ticketRegistrationDto);
            }
        }
        // 计算总含税金额