package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yuanchu.mom.mapper.SuppliersDirectoryContentsMapper; import com.yuanchu.mom.pojo.SuppliersDirectoryContents; import com.yuanchu.mom.service.SuppliersDirectoryContentsService; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 服务和供应品采购目录 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2024-12-17 06:14:51 */ @Service public class SuppliersDirectoryContentsServiceImpl extends ServiceImpl implements SuppliersDirectoryContentsService { @Override public ArrayList directoryListing() { ArrayList list = new ArrayList<>(); // 查出一级目录 List firstLevel = baseMapper.selectList(new LambdaQueryWrapper() .isNull(SuppliersDirectoryContents::getParentId)); // 查出含有父节点的 并通过父节点分组 List seconds = baseMapper.selectList(new LambdaQueryWrapper() .isNotNull(SuppliersDirectoryContents::getParentId)); if(firstLevel.size() > 0){ Map> collect = seconds.stream() .collect(Collectors.groupingBy(SuppliersDirectoryContents::getParentId)); // 根据分组的key 赋值对应的children for (int i = 0; i < firstLevel.size(); i++) { recursion(firstLevel.get(i),collect); list.add(firstLevel.get(i)); } } return list; } @Override public List> getSuppliersDirectoryContentsNodeNames() { List procurementSuppliesContents = baseMapper.selectList(null); List> collect = new ArrayList<>(); if(procurementSuppliesContents.size() > 0) { collect = procurementSuppliesContents.stream().map(item -> { HashMap map = new HashMap<>(); map.put("id", item.getId()); map.put("nodeName", item.getNodeName()); return map; }).collect(Collectors.toList()); } return collect; } public SuppliersDirectoryContents recursion(SuppliersDirectoryContents firstLevel, Map> collect) { // 将父节点的children赋值 if(collect.containsKey(firstLevel.getId())) { List procurementSupplies = collect.get(firstLevel.getId()); firstLevel.setChildren(procurementSupplies); for (int i = 0; i < procurementSupplies.size(); i++) { recursion(procurementSupplies.get(i),collect); } } return firstLevel; } }