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.ProcurementSuppliesContentsMapper; import com.yuanchu.mom.mapper.UserMapper; import com.yuanchu.mom.pojo.ProcurementSuppliesContents; import com.yuanchu.mom.pojo.User; import com.yuanchu.mom.service.ProcurementSuppliesContentsService; import lombok.AllArgsConstructor; 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; @Service @AllArgsConstructor public class ProcurementSuppliesContentsServiceImpl extends ServiceImpl implements ProcurementSuppliesContentsService { private UserMapper userMapper; @Override public List directoryListing() { ArrayList list = new ArrayList<>(); // 查出一级目录 List firstLevel = baseMapper.selectList(new LambdaQueryWrapper() .isNull(ProcurementSuppliesContents::getParentId)); // 查出含有父节点的 并通过父节点分组 List seconds = baseMapper.selectList(new LambdaQueryWrapper() .isNotNull(ProcurementSuppliesContents::getParentId)); if(firstLevel.size() > 0){ Map> collect = seconds.stream() .collect(Collectors.groupingBy(ProcurementSuppliesContents::getParentId)); // 根据分组的key 赋值对应的children for (int i = 0; i < firstLevel.size(); i++) { recursion(firstLevel.get(i),collect); list.add(firstLevel.get(i)); } } return list; } // 递归赋值children public ProcurementSuppliesContents recursion(ProcurementSuppliesContents 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; } @Override public List> getNodeNames() { 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; } @Override public List> getUserList() { // 0 停用 List users = userMapper.selectList(new LambdaQueryWrapper().eq(User::getState, 1)); List> collect = new ArrayList<>(); if(users.size() > 0) { collect = users.stream().map(item -> { HashMap map = new HashMap<>(); map.put("id", item.getId()); map.put("nodeName", item.getName()); return map; }).collect(Collectors.toList()); } return collect; } }