BizBaseAreaServiceImpl.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package com.huimv.center.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.huimv.center.mapper.BizBaseAreaMapper;
  4. import com.huimv.center.pojo.BizBaseArea;
  5. import com.huimv.center.service.BizBaseAreaService;
  6. import com.huimv.center.utils.IDUtil;
  7. import com.huimv.center.vo.BaseAreaVo;
  8. import com.huimv.eartag2.common.utils.Result;
  9. import com.huimv.eartag2.common.utils.ResultCode;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.util.CollectionUtils;
  13. import javax.annotation.Resource;
  14. import java.util.*;
  15. import java.util.stream.Collectors;
  16. @Service
  17. public class BizBaseAreaServiceImpl implements BizBaseAreaService {
  18. @Resource
  19. private BizBaseAreaMapper bizBaseAreaMapper;
  20. @Resource
  21. private com.huimv.center.utils.ResultUtil ResultUtil;
  22. @Resource
  23. private IDUtil idUtil;
  24. @Override
  25. public Result add(String name, String code, String parentCode) {
  26. BizBaseArea bizBaseArea = new BizBaseArea();
  27. bizBaseArea.setAreaName(name);
  28. bizBaseArea.setAreaCode(code);
  29. bizBaseArea.setParentCode(parentCode);
  30. return ResultUtil.result( bizBaseAreaMapper.insert(bizBaseArea));
  31. }
  32. @Override
  33. public Result remove(String id) {
  34. return ResultUtil.result(bizBaseAreaMapper.deleteBatchIds(idUtil.convert(id)));
  35. }
  36. @Override
  37. public Result update(Integer id, String name, String code, String parentCode) {
  38. BizBaseArea bizBaseArea = bizBaseAreaMapper.selectById(id);
  39. bizBaseArea.setParentCode(parentCode);
  40. bizBaseArea.setAreaCode(code);
  41. bizBaseArea.setAreaName(name);
  42. return ResultUtil.result(bizBaseAreaMapper.updateById(bizBaseArea));
  43. }
  44. @Override
  45. public Result treeList() {
  46. QueryWrapper<BizBaseArea> bizBaseAreaQueryWrapper = new QueryWrapper<>();
  47. //查出原始数据
  48. List<BizBaseArea> bizBaseAreas = bizBaseAreaMapper.selectList(bizBaseAreaQueryWrapper);
  49. return new Result(ResultCode.SUCCESS,parseBizBaseArea(bizBaseAreas));
  50. }
  51. @Override
  52. public BizBaseArea queryAreaCodeByAreaName(String areaName) {
  53. return null;
  54. }
  55. /**
  56. * 查询结果 转换成树形结构
  57. * @param bizBaseAreas
  58. * @return
  59. */
  60. private List<BaseAreaVo> parseBizBaseArea(List<BizBaseArea> bizBaseAreas){
  61. System.out.println("----------------"+bizBaseAreas);
  62. //构建需要展示的树形节点结构
  63. Map<String, BaseAreaVo> cityNodeMap = bizBaseAreas.stream().map(biZBaseAreasDo -> {
  64. BaseAreaVo baseAreaVo = new BaseAreaVo();
  65. baseAreaVo.setChildBaseAreaVo(new ArrayList<>());
  66. baseAreaVo.setCode(biZBaseAreasDo.getAreaCode());
  67. baseAreaVo.setName(biZBaseAreasDo.getAreaName());
  68. baseAreaVo.setParentCode(biZBaseAreasDo.getParentCode());
  69. return baseAreaVo;
  70. }).collect(Collectors.toMap(BaseAreaVo::getCode, b -> b,(k1,k2)->k1));
  71. System.out.println("----------------"+cityNodeMap);
  72. //创建数组存父亲节点
  73. ArrayList<BaseAreaVo> roots = new ArrayList<>();
  74. //构建树形
  75. cityNodeMap.values().forEach(city->{
  76. String parentCode = city.getParentCode();
  77. if (cityNodeMap.get(parentCode) == null){
  78. //父节点为空,说明当前节点就已经是父节点了 将该节点存起来
  79. roots.add(city);
  80. }else {
  81. //父节点 不为空,说明有父节点,拿到该节点的父节点的孩子节点(就是我自己),将该节点存起来
  82. cityNodeMap.get(parentCode).getChildBaseAreaVo().add(city);
  83. }
  84. });
  85. System.out.println(roots);
  86. return roots;
  87. }
  88. }