package com.dg.core.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dg.core.db.gen.entity.OrganizationChartEntity; import com.dg.core.db.gen.mapper.OrganizationChartMapper; import com.dg.core.service.IOrganizationChartService; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class OrganizationChartImpl extends ServiceImpl implements IOrganizationChartService { @Override public List selectConfigList(String parentId,String grade,List ids) { List ocList=baseMapper.selectConfigList(parentId,"1",ids); if(ocList==null || ocList.size()<1) { List id=new ArrayList<>(); id.add(parentId); ocList=baseMapper.selectConfigList(null,null,id); } for (OrganizationChartEntity entity:ocList) { entity.setChild(baseMapper.selectConfigList(entity.getId()+"","",null)); if (entity.getChild()!=null) { entity.setChild(this.selectConfigList(entity.getId().toString())); } } return ocList; } @Override public List selectConfigList(List ids) { List ocList=baseMapper.selectConfigList(null,null,ids); return ocList; } @Override public int insertConfig(OrganizationChartEntity entity) { return baseMapper.insertConfig(entity); } @Override public int updateConfig(OrganizationChartEntity entity) { return baseMapper.updateConfig(entity); } @Override public int deleteConfigById(String Id) { return baseMapper.deleteConfigById(Id); } @Override public int countNum() { return baseMapper.countNum(); } public List selectConfigList(String parentsId) { List list =baseMapper.selectConfigList(parentsId,"",null); for (OrganizationChartEntity sysStreet:list) { sysStreet.setChild(baseMapper.selectConfigList(sysStreet.getId().toString(),"",null)); if (sysStreet.getChild()!=null) { sysStreet.setChild(this.selectConfigList(sysStreet.getId().toString())); } } return list; } @Override public List selectList(){ return baseMapper.selectList(new QueryWrapper().lambda().orderByAsc(OrganizationChartEntity::getGrade)); } @Override public OrganizationChartEntity selectConfigById(String id) { return baseMapper.selectConfigById(id); } @Override public List queryList(IPage page, Integer state, String organizationName,List ids) { return baseMapper.queryList(page,state,organizationName,ids); } @Override public int countList(String organizationName,List ids) { return baseMapper.countList(organizationName,ids); } @Override public List selectParentList(String parentId, String grade) { return baseMapper.selectConfigList(parentId,grade,null); } /** * 递归获取id 内部使用 * @param id * @return */ @Override public List getIds(String id) { List ids=new ArrayList<>(); List lists = baseMapper.selectConfigList(id,"",null); if(lists.size()<1) { lists.add(baseMapper.selectConfigById(id)); } ids=disposestreetId(lists); if(ids.size()<1) { return null; } ids.add(id); return ids; } @Override public List getDepartmentId(String id){ String parentId = parentId(id); List departmentIds=new ArrayList<>(); departmentIds.add(parentId); List organizationChartEntities = baseMapper.selectList(new QueryWrapper().lambda().eq(OrganizationChartEntity::getParentId, parentId)); for (OrganizationChartEntity organizationChart :organizationChartEntities){ departmentIds.add(organizationChart.getId().toString()); departmentIds=getDepartmentIds(organizationChart.getId().toString(),departmentIds); } return departmentIds; } @Override public String getStairId(String id) { OrganizationChartEntity entity= baseMapper.selectConfigById(id); if(entity!=null && StringUtils.isEmpty(entity.getParentId())) { return entity.getId()+""; } else { return getParentId(entity.getParentId()); } } /** * 根据id 获取一级部门id 递归 * @param id * @return */ public String getParentId(String id) { String ultimatelyId; OrganizationChartEntity entity= baseMapper.selectConfigById(id); if(entity==null) { return id; } if(!StringUtils.isEmpty(entity.getParentId())) { ultimatelyId= getParentId(entity.getParentId()); return ultimatelyId; } else { ultimatelyId=entity.getId()+""; return ultimatelyId; } } public String parentId(String id){ String parentId=id; OrganizationChartEntity organizationChart = baseMapper.selectOne(new QueryWrapper().lambda().eq(OrganizationChartEntity::getId, id)); if (organizationChart.getParentId().length()>0){ parentId=parentId(organizationChart.getParentId()); } return parentId; } public List getDepartmentIds(String id,List departmentIds){ List organizationChartEntities = baseMapper.selectList(new QueryWrapper().lambda().eq(OrganizationChartEntity::getParentId, id)); if (organizationChartEntities.size()==0){ return departmentIds; } else { for (OrganizationChartEntity organizationChart :organizationChartEntities){ departmentIds.add(organizationChart.getId().toString()); departmentIds=getDepartmentIds(organizationChart.getId().toString(),departmentIds); } } return departmentIds; } //递归取id private List disposestreetId(List lists) { List ids=new ArrayList<>(); if(lists==null || lists.size()<1) { return ids; } for (OrganizationChartEntity sysStreet:lists) { if(sysStreet!=null&&sysStreet.getId()!=null) { if(sysStreet.getChild()!=null && sysStreet.getChild().size()>0) { ids.addAll(disposestreetId(sysStreet.getChild())); } else { ids.add(sysStreet.getId()+""); } } } return ids; } }