maven
2025-11-26 da8d45df31aebdf0eda2c57155d1a915e2e1e89f
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.sales.service.impl;
import com.alibaba.druid.util.DaemonThreadFactory;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -28,6 +29,7 @@
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.*;
import com.ruoyi.sales.service.ISalesLedgerService;
import com.ruoyi.sales.service.InvoiceRegistrationService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
@@ -365,6 +367,9 @@
        return salesLedgerMapper.deleteBatchIds(idList);
    }
    @Autowired
    private InvoiceRegistrationService invoiceRegistrationService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto) {
@@ -417,7 +422,7 @@
            // 4. 处理子表数据
            List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
            if (productList != null && !productList.isEmpty()) {
                handleSalesLedgerProducts(salesLedger.getId(), productList, salesLedgerDto.getType());
                handleSalesLedgerProducts(salesLedgerDto,salesLedger.getId(), productList, salesLedgerDto.getType());
                updateMainContractAmount(
                        salesLedger.getId(),
                        productList,
@@ -515,7 +520,7 @@
    }
    private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
    private void handleSalesLedgerProducts(SalesLedgerDto salesLedgerDto,Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
        // 按ID分组,区分新增和更新的记录
        Map<Boolean, List<SalesLedgerProduct>> partitionedProducts = products.stream()
                .peek(p -> p.setSalesLedgerId(salesLedgerId))
@@ -539,6 +544,18 @@
                salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
                salesLedgerProductMapper.insert(salesLedgerProduct);
            }
            if (salesLedgerDto.getIsInvoice().equals(2)) {
                // 无需开票,提示系统生成发票
                for (SalesLedgerProduct productDatum : insertList) {
                    productDatum.setCurrentInvoiceAmount(productDatum.getTaxInclusiveTotalPrice());
                    productDatum.setCurrentInvoiceNum(productDatum.getQuantity());
                }
                salesLedgerDto.setId(salesLedgerId);
                salesLedgerDto.setIssueDate(LocalDate.now());
                salesLedgerDto.setInvoiceNo("此台账无需手动开票,系统将所有产品自动生成开票台账");
                salesLedgerDto.setCreateUser(SecurityUtils.getLoginUser().getNickName());
                invoiceRegistrationService.invoiceRegistrationSave(salesLedgerDto);
            }
        }
    }