liding
2026-04-22 c1babcfa8a9cd01dbeb8527a6a95cbcc431957c7
src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
@@ -13,9 +13,8 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.BomImportDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.pojo.ProductStructure;
import com.ruoyi.production.bean.dto.BomImportDto;
import com.ruoyi.production.bean.dto.ProductStructureDto;
import com.ruoyi.technology.bean.dto.TechnologyBomDto;
import com.ruoyi.technology.bean.vo.TechnologyBomVo;
import com.ruoyi.technology.mapper.TechnologyBomMapper;
@@ -25,12 +24,12 @@
import com.ruoyi.technology.pojo.TechnologyRouting;
import com.ruoyi.technology.service.TechnologyBomService;
import com.ruoyi.technology.service.TechnologyBomStructureService;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -127,7 +126,7 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean batchDelete(List<Integer> ids) {
    public boolean batchDelete(List<Long> ids) {
        if (ids == null || ids.isEmpty()) {
            throw new ServiceException("Select at least one BOM");
        }
@@ -212,13 +211,13 @@
            //处理根节点,第一行且子项为空
            if (i == 0 && StringUtils.isBlank(dto.getChildName())) {
                ProductStructure rootNode = new ProductStructure();
                rootNode.setBomId(bom.getId());
                TechnologyBomStructure rootNode = new TechnologyBomStructure();
                rootNode.setBomId(bom.getId().longValue());
                rootNode.setParentId(null); // 顶层没有父节点
                rootNode.setProductModelId(rootModel.getId());
                rootNode.setUnitQuantity(BigDecimal.ONE);
                rootNode.setUnit(rootModel.getUnit());
//                productStructureService.save(rootNode);
                technologyBomStructureService.save(rootNode);
                treePathMap.put(parentKey, rootNode.getId());
                continue;
@@ -236,8 +235,8 @@
            ProductModel childModel = findModel(dto.getChildName(), dto.getChildSpec());
            //  插入结构表
            ProductStructure node = new ProductStructure();
            node.setBomId(bom.getId());
            TechnologyBomStructure node = new TechnologyBomStructure();
            node.setBomId(bom.getId().longValue());
            node.setParentId(parentStructureId); // 父节点ID
            node.setProductModelId(childModel.getId());
            node.setUnitQuantity(dto.getUnitQty());
@@ -245,7 +244,7 @@
//            if (processMap.containsKey(dto.getProcess())) {
//                node.setProcessId(processMap.get(dto.getProcess()));
//            }
//            productStructureService.save(node);
            technologyBomStructureService.save(node);
            //  把当前子项记录到 Map,作为以后更深层级的父项查找依据
            //  同一父项下的同名子项不需要重复记录