package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.production.bean.vo.ProductionBomStructureVo; import com.ruoyi.production.mapper.ProductionBomStructureMapper; import com.ruoyi.production.pojo.ProductionBomStructure; import com.ruoyi.production.service.ProductionBomStructureService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 生产订单BOM产品结构 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-04-21 03:55:52 */ @Service @RequiredArgsConstructor() public class ProductionBomStructureServiceImpl extends ServiceImpl implements ProductionBomStructureService { private final ProductionBomStructureMapper productionBomStructureMapper; /** * 根据BOM查询并组装结构树。 */ @Override public List listByBomId(Long bomId) { List list = productionBomStructureMapper.listByBomId(bomId); Map map = new HashMap<>(); for (ProductionBomStructureVo node : list) { node.setChildren(new ArrayList<>()); map.put(node.getId(), node); } List tree = new ArrayList<>(); for (ProductionBomStructureVo node : list) { Long parentId = node.getParentId(); if (parentId == null || parentId == 0L) { tree.add(node); continue; } ProductionBomStructureVo parent = map.get(parentId); if (parent != null) { parent.getChildren().add(node); } } return tree; } }