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;
|
|
/**
|
* <p>
|
* 生产订单BOM产品结构 服务实现类
|
* </p>
|
*
|
* @author 芯导软件(江苏)有限公司
|
* @since 2026-04-21 03:55:52
|
*/
|
@Service
|
@RequiredArgsConstructor()
|
public class ProductionBomStructureServiceImpl extends ServiceImpl<ProductionBomStructureMapper, ProductionBomStructure> implements ProductionBomStructureService {
|
|
private final ProductionBomStructureMapper productionBomStructureMapper;
|
|
/**
|
* 根据BOM查询并组装结构树。
|
*/
|
@Override
|
public List<ProductionBomStructureVo> listByBomId(Long bomId) {
|
List<ProductionBomStructureVo> list = productionBomStructureMapper.listByBomId(bomId);
|
Map<Long, ProductionBomStructureVo> map = new HashMap<>();
|
for (ProductionBomStructureVo node : list) {
|
node.setChildren(new ArrayList<>());
|
map.put(node.getId(), node);
|
}
|
|
List<ProductionBomStructureVo> 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;
|
}
|
|
}
|