2026-04-16 a383e7dbc619cdb468979d4863349c43550a9af2
src/main/java/com/ruoyi/production/service/impl/ProductStructureServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.mapper.ProductStructureMapper;
import com.ruoyi.production.pojo.ProductStructure;
@@ -27,7 +28,7 @@
    @Transactional
    public Boolean addProductStructureDto(ProductStructureDto dto) {
        Long bomId = dto.getBomId();
        Integer bomId = dto.getBomId();
        //  将树扁平化
        List<ProductStructureDto> flatDtoList = new ArrayList<>();
@@ -86,7 +87,7 @@
        //  真实的父节点 ID
        Long realParentId;
        for (ProductStructureDto psDto : flatDtoList) {
            if (psDto.getId() == null && psDto.getParentTempId() != null) {
            if (psDto.getId() == null && StringUtils.isNotEmpty(psDto.getParentTempId())) {
                ProductStructure child = tempEntityMap.get(psDto.getTempId());
                if (tempEntityMap.containsKey(psDto.getParentTempId())) {
                    // 父节点是新节点
@@ -130,7 +131,7 @@
    @Override
    public List<ProductStructureDto> listBybomId(Long bomId) {
    public List<ProductStructureDto> listBybomId(Integer bomId) {
        List<ProductStructureDto> list = productStructureMapper.listBybomId(bomId);
        Map<Long, ProductStructureDto> map = new HashMap<>();
@@ -154,4 +155,18 @@
        return tree;
    }
    @Override
    public List<ProductStructureDto> listDetailBybomId(Integer bomId) {
        List<ProductStructureDto> list = productStructureMapper.listBybomId(bomId);
        Map<String, ProductStructureDto> distinctMap = new LinkedHashMap<>();
        for (ProductStructureDto dto : list) {
            if (dto.getParentId() == null || dto.getParentId() == 0) {
                continue;
            }
            String key = dto.getProcessId() == null ? "NULL_PROCESS_" + dto.getId() : String.valueOf(dto.getProcessId());
            distinctMap.putIfAbsent(key, dto);
        }
        return new ArrayList<>(distinctMap.values());
    }
}