5 天以前 92d8d06d8ae38c407715a5e9389691b446413e0a
src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -1,7 +1,10 @@
package com.ruoyi.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.dto.ProductAndModelDto;
import com.ruoyi.basic.dto.ProductDto;
import com.ruoyi.basic.dto.ProductTreeDto;
import com.ruoyi.basic.mapper.ProductMapper;
@@ -9,13 +12,21 @@
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.basic.service.IProductService;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
import lombok.AllArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@@ -24,6 +35,8 @@
    private ProductMapper productMapper;
    private ProductModelMapper productModelMapper;
    private final CommonFileServiceImpl commonFileService;
    @Override
    public List<ProductTreeDto> selectProductList(ProductDto productDto) {
@@ -48,6 +61,21 @@
        }
        return tree;
    }
    @Override
    public IPage<ProductModel> listPageProductModel(Page<ProductModel> page, ProductModel productModel) {
        return productModelMapper.listPageProductModel(page, productModel);
    }
    @Override
    public AjaxResult listPage(Page page, ProductAndModelDto productDto) {
        IPage<ProductAndModelDto> productAndModelDtoIPage = productModelMapper.listPage(page, productDto);
        productAndModelDtoIPage.getRecords().forEach(item -> {
            item.setSalesLedgerFiles(commonFileService.getFileListByBusinessId(item.getId(), FileNameType.PRODUCT_MODEL.getValue()));
        });
        return AjaxResult.success(productAndModelDtoIPage);
    }
    // 递归构建子节点
    private List<ProductTreeDto> buildChildrenNodes(Long parentId) {
@@ -105,14 +133,24 @@
    @Override
    public int delProductByIds(Long[] ids) {
        // 1. 删除子表 product_model 中关联的数据
        LambdaQueryWrapper<ProductModel> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(ProductModel::getProductId, ids);
        productModelMapper.delete(queryWrapper);
        for (Long id : ids) {
            LambdaQueryWrapper<ProductModel> queryWrapper = new LambdaQueryWrapper<>();
            queryWrapper.eq(ProductModel::getId, id);
            List<ProductModel> productModels = productModelMapper.selectList(queryWrapper);
            if(CollectionUtils.isNotEmpty(productModels)){
                List<ProductModel> productList = productModelMapper.selectList(new LambdaQueryWrapper<ProductModel>()
                        .eq(ProductModel::getProductId, productModels.get(0).getProductId()));
                if(CollectionUtils.isNotEmpty(productList) && productList.size() == 1){
                    // 当只有一条数据时删除产品
                    productMapper.deleteBatchIds(productModels.stream()
                            .map(ProductModel::getProductId)
                            .collect(Collectors.toList()));
                }
                return productModelMapper.deleteBatchIds(Arrays.asList(ids));
        // 2. 删除主表 product 数据
        int deleteCount = productMapper.deleteBatchIds(Arrays.asList(ids));
        return deleteCount;
            }
        }
        return 1;
    }
}