package com.cloud.device.service.impl; import com.cloud.device.constants.Constants; import com.cloud.device.dao.OrgDao; import com.cloud.device.model.Org; import com.cloud.device.service.OrgService; import com.cloud.device.vo.MenuTreeVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Slf4j @Service public class OrgServiceImpl implements OrgService { @Autowired private OrgDao orgDao; @Override public int deleteById(Long id) { return orgDao.deleteById(id); } @Override public int insert(Org record) { String parentIds = getParentByData(record); record.setParentIds(parentIds); return orgDao.insert(record); } @Override public int insertSelective(Org record) { String parentIds = getParentByData(record); record.setParentIds(parentIds); return orgDao.insertSelective(record); } @Override public Org selectById(Long id) { return orgDao.selectById(id); } @Override public int updateByIdSelective(Org record) { // String parentIds = getParentByData(record); // record.setParentIds(parentIds); return orgDao.updateByIdSelective(record); } @Override public int updateById(Org record) { return orgDao.updateById(record); } @Override public List findChildById(Long id) { return orgDao.findChildById(id); } /** * 根据parent组装path * @param org * @return */ public String getParentByData(Org org){ String parentIds = ""; if(org.getParentId() > 0){ Org parentOrg = this.selectById(org.getParentId()); if(parentOrg !=null){ parentIds = parentOrg.getParentIds()+parentOrg.getId()+","; } }else{ parentIds = ","+org.getParentId()+","; } return parentIds; } public List findOrg(String name){ List dataList = new ArrayList<>();//返回的列表 Map param = new HashMap<>(); param.put("name", name); List allOrgs = orgDao.findAll(param); setOrgTree(0L,allOrgs, dataList); return dataList; } private void setOrgTree(Long parentId, List all, List list){ all.forEach(org->{ if(parentId.equals(org.getParentId())){ MenuTreeVo menuTreeVo = new MenuTreeVo(); menuTreeVo.setId(org.getId().toString()); menuTreeVo.setName(org.getName()); menuTreeVo.setType(Constants.TYPE_MENU); list.add(menuTreeVo); List child = new ArrayList<>(); menuTreeVo.setChild(child); setOrgTree(org.getId(), all, child); } }); } }