BaseProfessionalServiceImpl.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.ozs.base.service.impl;
  2. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  3. import com.ozs.base.domain.BaseProfessional;
  4. import com.ozs.base.domain.vo.BaseProfessionalVo;
  5. import com.ozs.base.mapper.BaseProfessionalMapper;
  6. import com.ozs.base.service.BaseProfessionalService;
  7. import com.ozs.common.core.domain.entity.SysDictType;
  8. import com.ozs.common.exception.ServiceException;
  9. import com.ozs.common.utils.DictUtils;
  10. import com.ozs.common.utils.bean.BeanUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. @Service
  16. public class BaseProfessionalServiceImpl extends ServiceImpl<BaseProfessionalMapper, BaseProfessional> implements BaseProfessionalService {
  17. @Autowired
  18. private BaseProfessionalMapper baseProfessionalMapper;
  19. @Override
  20. public void deleteIds(List<Integer> deleteIds) {
  21. for (Integer deleteId : deleteIds) {
  22. BaseProfessional baseProfessional = baseProfessionalMapper.selectById(deleteId);
  23. List<BaseProfessional> baseProfessionalList = baseProfessionalMapper.selectByParentCode(baseProfessional.getProfessionalCode());
  24. // int ii = baseProfessionalMapper.countByParentCode(baseProfessional.getProfessionalCode());
  25. if (baseProfessionalList.size() > 0) {
  26. throw new ServiceException(String.format("%1$s已有子级,不能删除", baseProfessional.getProfessionalName()));
  27. }
  28. baseProfessionalMapper.deleteById(deleteId);
  29. }
  30. }
  31. @Override
  32. public List<BaseProfessionalVo> selectBaseProfessional(BaseProfessionalVo baseProfessionalVo) {
  33. List<BaseProfessional> allList = baseProfessionalMapper.selectBaseProfessional(baseProfessionalVo);
  34. // 将实体类转换为Vo类
  35. List<BaseProfessionalVo> allListVo = BeanUtils.entityListToVOList(allList, BaseProfessionalVo.class);
  36. List<BaseProfessionalVo> treeList = buildTree(allListVo);
  37. return treeList;
  38. }
  39. /**
  40. * 构建树形结构
  41. *
  42. * @return
  43. */
  44. public static List<BaseProfessionalVo> buildTree(List<BaseProfessionalVo> allList) {
  45. //创建集合封装最终数据
  46. List<BaseProfessionalVo> trees = new ArrayList<>();
  47. //遍历所有菜单集合
  48. for (BaseProfessionalVo baseProfessional : allList) {
  49. //找到递归入口,parentId=0
  50. if (baseProfessional.getParentCode().equals("0")) {
  51. trees.add(findChildren(baseProfessional, allList));
  52. }
  53. }
  54. return trees;
  55. }
  56. /**
  57. * 从根节点进行递归查询,查询子节点
  58. * 判断 编码 = 父级编码是否相同,如果相同是子节点,进行数据封装
  59. */
  60. private static BaseProfessionalVo findChildren(BaseProfessionalVo baseProfessional, List<BaseProfessionalVo> allList) {
  61. //数据初始化
  62. baseProfessional.setBaseProfessionalVoList(new ArrayList<BaseProfessionalVo>());
  63. //遍历递归查找
  64. for (BaseProfessionalVo it : allList) {
  65. if (baseProfessional.getProfessionalCode().equals(it.getParentCode())) {
  66. if (baseProfessional.getBaseProfessionalVoList() == null) {
  67. baseProfessional.setBaseProfessionalVoList(new ArrayList<>());
  68. }
  69. baseProfessional.getBaseProfessionalVoList().add(findChildren(it, allList));
  70. }
  71. }
  72. return baseProfessional;
  73. }
  74. }