1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package com.ozs.base.service.impl;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ozs.base.domain.BaseProfessional;
- import com.ozs.base.domain.vo.BaseProfessionalVo;
- import com.ozs.base.mapper.BaseProfessionalMapper;
- import com.ozs.base.service.BaseProfessionalService;
- import com.ozs.common.core.domain.entity.SysDictType;
- import com.ozs.common.exception.ServiceException;
- import com.ozs.common.utils.DictUtils;
- import com.ozs.common.utils.bean.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- @Service
- public class BaseProfessionalServiceImpl extends ServiceImpl<BaseProfessionalMapper, BaseProfessional> implements BaseProfessionalService {
- @Autowired
- private BaseProfessionalMapper baseProfessionalMapper;
- @Override
- public void deleteIds(List<Integer> deleteIds) {
- for (Integer deleteId : deleteIds) {
- BaseProfessional baseProfessional = baseProfessionalMapper.selectById(deleteId);
- List<BaseProfessional> baseProfessionalList = baseProfessionalMapper.selectByParentCode(baseProfessional.getProfessionalCode());
- // int ii = baseProfessionalMapper.countByParentCode(baseProfessional.getProfessionalCode());
- if (baseProfessionalList.size() > 0) {
- throw new ServiceException(String.format("%1$s已有子级,不能删除", baseProfessional.getProfessionalName()));
- }
- baseProfessionalMapper.deleteById(deleteId);
- }
- }
- @Override
- public List<BaseProfessionalVo> selectBaseProfessional(BaseProfessionalVo baseProfessionalVo) {
- List<BaseProfessional> allList = baseProfessionalMapper.selectBaseProfessional(baseProfessionalVo);
- // 将实体类转换为Vo类
- List<BaseProfessionalVo> allListVo = BeanUtils.entityListToVOList(allList, BaseProfessionalVo.class);
- List<BaseProfessionalVo> treeList = buildTree(allListVo);
- return treeList;
- }
- /**
- * 构建树形结构
- *
- * @return
- */
- public static List<BaseProfessionalVo> buildTree(List<BaseProfessionalVo> allList) {
- //创建集合封装最终数据
- List<BaseProfessionalVo> trees = new ArrayList<>();
- //遍历所有菜单集合
- for (BaseProfessionalVo baseProfessional : allList) {
- //找到递归入口,parentId=0
- if (baseProfessional.getParentCode().equals("0")) {
- trees.add(findChildren(baseProfessional, allList));
- }
- }
- return trees;
- }
- /**
- * 从根节点进行递归查询,查询子节点
- * 判断 编码 = 父级编码是否相同,如果相同是子节点,进行数据封装
- */
- private static BaseProfessionalVo findChildren(BaseProfessionalVo baseProfessional, List<BaseProfessionalVo> allList) {
- //数据初始化
- baseProfessional.setBaseProfessionalVoList(new ArrayList<BaseProfessionalVo>());
- //遍历递归查找
- for (BaseProfessionalVo it : allList) {
- if (baseProfessional.getProfessionalCode().equals(it.getParentCode())) {
- if (baseProfessional.getBaseProfessionalVoList() == null) {
- baseProfessional.setBaseProfessionalVoList(new ArrayList<>());
- }
- baseProfessional.getBaseProfessionalVoList().add(findChildren(it, allList));
- }
- }
- return baseProfessional;
- }
- }
|