package com.huimv.center.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.huimv.center.mapper.BizBaseAreaMapper; import com.huimv.center.pojo.BizBaseArea; import com.huimv.center.service.BizBaseAreaService; import com.huimv.center.utils.IDUtil; import com.huimv.center.vo.BaseAreaVo; import com.huimv.eartag2.common.utils.Result; import com.huimv.eartag2.common.utils.ResultCode; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; @Service public class BizBaseAreaServiceImpl implements BizBaseAreaService { @Resource private BizBaseAreaMapper bizBaseAreaMapper; @Resource private com.huimv.center.utils.ResultUtil ResultUtil; @Resource private IDUtil idUtil; @Override public Result add(String name, String code, String parentCode) { BizBaseArea bizBaseArea = new BizBaseArea(); bizBaseArea.setAreaName(name); bizBaseArea.setAreaCode(code); bizBaseArea.setParentCode(parentCode); return ResultUtil.result( bizBaseAreaMapper.insert(bizBaseArea)); } @Override public Result remove(String id) { return ResultUtil.result(bizBaseAreaMapper.deleteBatchIds(idUtil.convert(id))); } @Override public Result update(Integer id, String name, String code, String parentCode) { BizBaseArea bizBaseArea = bizBaseAreaMapper.selectById(id); bizBaseArea.setParentCode(parentCode); bizBaseArea.setAreaCode(code); bizBaseArea.setAreaName(name); return ResultUtil.result(bizBaseAreaMapper.updateById(bizBaseArea)); } @Override public Result treeList() { QueryWrapper bizBaseAreaQueryWrapper = new QueryWrapper<>(); //查出原始数据 List bizBaseAreas = bizBaseAreaMapper.selectList(bizBaseAreaQueryWrapper); return new Result(ResultCode.SUCCESS,parseBizBaseArea(bizBaseAreas)); } @Override public BizBaseArea queryAreaCodeByAreaName(String areaName) { return null; } /** * 查询结果 转换成树形结构 * @param bizBaseAreas * @return */ private List parseBizBaseArea(List bizBaseAreas){ System.out.println("----------------"+bizBaseAreas); //构建需要展示的树形节点结构 Map cityNodeMap = bizBaseAreas.stream().map(biZBaseAreasDo -> { BaseAreaVo baseAreaVo = new BaseAreaVo(); baseAreaVo.setChildBaseAreaVo(new ArrayList<>()); baseAreaVo.setCode(biZBaseAreasDo.getAreaCode()); baseAreaVo.setName(biZBaseAreasDo.getAreaName()); baseAreaVo.setParentCode(biZBaseAreasDo.getParentCode()); return baseAreaVo; }).collect(Collectors.toMap(BaseAreaVo::getCode, b -> b,(k1,k2)->k1)); System.out.println("----------------"+cityNodeMap); //创建数组存父亲节点 ArrayList roots = new ArrayList<>(); //构建树形 cityNodeMap.values().forEach(city->{ String parentCode = city.getParentCode(); if (cityNodeMap.get(parentCode) == null){ //父节点为空,说明当前节点就已经是父节点了 将该节点存起来 roots.add(city); }else { //父节点 不为空,说明有父节点,拿到该节点的父节点的孩子节点(就是我自己),将该节点存起来 cityNodeMap.get(parentCode).getChildBaseAreaVo().add(city); } }); System.out.println(roots); return roots; } }