liyong
2026-04-24 0f30de7a92a189c23c0a7f8734f0434e1764a723
refactor(sales): 优化销售台账服务实现代码结构

- 移除多余的空行和格式化代码缩进
- 修复条件判断语句中的空格格式问题
- 调整新增或更新销售台账逻辑中的产品模型处理流程
- 简化产品模型创建逻辑,移除不必要的空值检查
- 清理方法末尾的多余空行和注释
已修改1个文件
102 ■■■■ 文件已修改
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -531,6 +531,7 @@
        exportProcessContractToWord(exportProcessContract);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult importSalsesLedger(MultipartFile file) {
@@ -569,7 +570,7 @@
                    continue;
                }
                if (importDto.getQuantity() == null ) {
                if (importDto.getQuantity() == null) {
                    errorMessages.add(String.format("第%d行:数量不能为空", rowNum));
                    skipCount++;
                    continue;
@@ -603,7 +604,7 @@
                    salesLedger.setCustomerId(matchedCustomer.getId());
                    salesLedger.setCustomerContractNo(matchedCustomer.getTaxpayerIdentificationNumber());
                    Date date = importDto.getOrderDate();
                    if (ObjectUtils.isEmpty(date)){
                    if (ObjectUtils.isEmpty(date)) {
                        date = lastDate;
                    }
                    lastDate = date;
@@ -804,58 +805,56 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto) {
            // 1. 校验客户信息
            CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId());
            if (customer == null) {
                throw new BaseException("客户不存在");
            }
            // 必须填写销售合同号
        // 1. 校验客户信息
        CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId());
        if (customer == null) {
            throw new BaseException("客户不存在");
        }
        // 必须填写销售合同号
//            Assert.notNull(salesLedgerDto.getSalesContractNo(), "销售合同号不能为空");
            // 2. DTO转Entity
            SalesLedger salesLedger = convertToEntity(salesLedgerDto);
            salesLedger.setCustomerName(customer.getCustomerName());
            salesLedger.setTenantId(customer.getTenantId());
        // 2. DTO转Entity
        SalesLedger salesLedger = convertToEntity(salesLedgerDto);
        salesLedger.setCustomerName(customer.getCustomerName());
        salesLedger.setTenantId(customer.getTenantId());
            // 3. 新增或更新主表
            if (salesLedger.getId() == null) {
                // 为空 自动生成
                String contractNo =StrUtil.isBlank(salesLedgerDto.getSalesContractNo())? generateSalesContractNoBy8Date():salesLedgerDto.getSalesContractNo();
                // 不能有重复数据的合同号
               Assert.isTrue(salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
                        .eq(SalesLedger::getSalesContractNo, contractNo)
                        .last("limit 1")) == null, contractNo+"合同号已存在");
                salesLedger.setSalesContractNo(contractNo);
                salesLedgerMapper.insert(salesLedger);
            } else {
                salesLedger.setSalesContractNo(null);
                salesLedgerMapper.updateById(salesLedger);
            }
        // 3. 新增或更新主表
        if (salesLedger.getId() == null) {
            // 为空 自动生成
            String contractNo = StrUtil.isBlank(salesLedgerDto.getSalesContractNo()) ? generateSalesContractNoBy8Date() : salesLedgerDto.getSalesContractNo();
            // 不能有重复数据的合同号
            Assert.isTrue(salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
                    .eq(SalesLedger::getSalesContractNo, contractNo)
                    .last("limit 1")) == null, contractNo + "合同号已存在");
            salesLedger.setSalesContractNo(contractNo);
            salesLedgerMapper.insert(salesLedger);
        } else {
            salesLedger.setSalesContractNo(null);
            salesLedgerMapper.updateById(salesLedger);
        }
            // 4. 处理子表数据
            List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
            for (SalesLedgerProduct product : productList) {
                //空的先新增基础数据  非空直接往下走
                if (ObjectUtils.isEmpty(product.getProductModelId())) {
                    ProductModelAnticlockwiseDto  productModelAnticlockwiseDto =  new ProductModelAnticlockwiseDto();
                    productModelAnticlockwiseDto.setModel(product.getSpecificationModel());
                    productModelAnticlockwiseDto.setProductName(product.getProductCategory());
                    productModelAnticlockwiseDto.setUnit(product.getUnit());
                    productModelAnticlockwiseDto.setSubUnit(product.getUnit());
                    Long productModelId = productModelService.productModelAnticlockwise(productModelAnticlockwiseDto);
                    product.setProductModelId(productModelId);
                }
            }
            if (productList != null && !productList.isEmpty()) {
                handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
                updateMainContractAmount(
                        salesLedger.getId(),
                        productList,
                        SalesLedgerProduct::getTaxInclusiveTotalPrice,
                        salesLedgerMapper,
                        SalesLedger.class
                );
            }
        // 4. 处理子表数据
        List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
        for (SalesLedgerProduct product : productList) {
            //空的先新增基础数据  非空直接往下走
            ProductModelAnticlockwiseDto productModelAnticlockwiseDto = new ProductModelAnticlockwiseDto();
            productModelAnticlockwiseDto.setModel(product.getSpecificationModel());
            productModelAnticlockwiseDto.setProductName(product.getProductCategory());
            productModelAnticlockwiseDto.setUnit(product.getUnit());
            productModelAnticlockwiseDto.setSubUnit(product.getUnit());
            Long productModelId = productModelService.productModelAnticlockwise(productModelAnticlockwiseDto);
            product.setProductModelId(productModelId);
        }
        if (productList != null && !productList.isEmpty()) {
            handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
            updateMainContractAmount(
                    salesLedger.getId(),
                    productList,
                    SalesLedgerProduct::getTaxInclusiveTotalPrice,
                    salesLedgerMapper,
                    SalesLedger.class
            );
        }
        try {
            // 5. 迁移临时文件到正式目录
@@ -982,7 +981,7 @@
        return entity;
    }
    public String generateSalesContractNoBy8Date(){
    public String generateSalesContractNoBy8Date() {
        String yyMM = DateUtil.format(new Date(), "yyMM");
        // 查询一个月有多少订单
        Date begin = DateUtil.beginOfMonth(new Date());
@@ -993,7 +992,6 @@
        Long seq = Optional.of(count).orElse(0L) + 1;
        return String.format("%s%04d", yyMM, seq);
    }
    @Transactional(readOnly = true)