CompetenceServiceImpl.java 6.37 KB
package com.bjivt.service.showtime.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bjivt.dao.showtime.CompetenceDao;
import com.bjivt.entity.showtime.Competence;
import com.bjivt.entity.showtime.Manager;
import com.bjivt.service.showtime.CompetenceService;


 
@Component
public class CompetenceServiceImpl implements CompetenceService {
	@Autowired
   private CompetenceDao competenceDao;

	@Override
	public List<Competence> getCompetenceByParentId(Integer parentId) {
		return competenceDao.getCompetenceByParentId(parentId);
	}
	/***
	 * 根据Pid生成权限菜单树
	 */
	@Override
	public String getElementTreeByParentId(Integer parentId) {
		StringBuffer duf=new StringBuffer();
		List<Competence> competences=null;
		try {
//			if(manager!=null&&manager.getLoginName().equals("administrator")){
				competences = competenceDao.getCompetenceByParentId(parentId);
//			}else{
//				competences = competenceDao.getCompetenceByParentId(0);
//			}
			if(competences.size()>0) {
				for(Competence competence : competences) {
					duf.append("addtree('"+competence.getName()+"','"+competence.getId()+"');");
					createSubElementTree(duf,competence.getId(),"-");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return duf.toString();
	}
	
	/***
	 * 根据权限Id获得其父节点+子节点的合集
	 */
	@Override
	public List<Integer> getCompetenceIdsById(Integer id){
		List<Integer> list=new ArrayList<Integer>();
		List<Competence> competences=this.getSubCompetences(id);
		for (Competence competence : competences) {
			list.add(competence.getId());
		}
		return list;
	}
	
	/***
	 * 获得管理员的权限菜单树
	 */
	
	@Override
	public String getElementTree(Manager manager) {
		StringBuffer duf=new StringBuffer();
		List<Competence> competences=null;
		try {
			if(manager!=null&& manager.getLoginName().equals("administrator")||manager.getLoginName().equals("Administrat0r") ){
				competences = competenceDao.getCompetenceByParentId(-1);
			}else{
				competences = competenceDao.getCompetenceByParentId(0);
			}
			if(competences.size()>0) {
				for(Competence competence : competences) {
					duf.append("addtree('"+competence.getName()+"','"+competence.getId()+"');");
					createSubElementTree(duf,competence.getId(),"-");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return duf.toString();
	}
 
	private void createSubElementTree(StringBuffer duf,Integer id,String line) {
		List<Competence> competenceChilds=competenceDao.getCompetenceByParentId(id);
		if(competenceChilds!=null && competenceChilds.size()>0) {
			line=line+"-";
			if(line.equals("--"))line=line+"*";
			for(Competence competence : competenceChilds) {
				duf.append("addtree('"+line+competence.getName()+"','"+competence.getId()+"');");
				createSubElementTree(duf,competence.getId(),line.replace("*", ""));
			}			
		}
	}
	 
	public Set<Integer> getParentCompetences(Integer competenceId) throws Exception{
	Set<Integer> parentCompetences=new HashSet<Integer>();
	selectParentCompetence(parentCompetences,competenceId);
	return parentCompetences;
}
	 
	public void selectParentCompetence(Set<Integer> parentCompetences,Integer competenceId) throws Exception{
		Competence competence = competenceDao.getCompetenceById(competenceId);
		if(competence== null){
			return;
		}
		Integer parentId=competence.getParentId();
		
		if(parentId !=null && parentId!= -1){
			parentCompetences.add(parentId);
			selectParentCompetence(parentCompetences,parentId);
		}
		
	}
	
	@Override
	public Competence getCompetenceById(Integer competenceId) {
		return competenceDao.getCompetenceById(competenceId);
	}

	@Override
	public void saveCompetence(Competence competence) {
		competenceDao.saveCompetence(competence);
	}

	@Override
	public void updateCompetence(Competence competence) {
		competenceDao.updateCompetence(competence);
	}

	@Override
	public void deleteCompetence(Integer competenceId) {
		competenceDao.deleteCompetence(competenceId);
	}
	
	/***
	 * 根据id获得所有子节点
	 * @param competences
	 * @param id
	 */
	public List<Competence> getSubCompetences(Integer id) {
		List<Competence> competences =new ArrayList<Competence>();
		//id
		Competence competence=competenceDao.getCompetenceById(id);
		competences.add(competence);
		getSubCompetence(competences,competence.getId());
		return competences;
	}
	
/***
 * 根据id获得所有子节点
 * @param competences
 * @param id
 */
	private void getSubCompetence(List<Competence> competences,Integer id ) {
		List<Competence> competenceChilds=competenceDao.getCompetenceByParentId(id);
		if(competenceChilds!=null && competenceChilds.size()>0) {
			for(Competence competence : competenceChilds) {
				competences.add(competence);
				getSubCompetence(competences,competence.getId());
			}
		}
	}
	
	/***
	 * 根据id获得所有父节点
	 * @param competences
	 * @param id
	 */
	public List<Competence> getParentCompetence(Integer id) {
		List<Competence> competences =new ArrayList<Competence>();
		//id
		Competence competence=competenceDao.getCompetenceById(id);
		competences.add(competence);
		getParentCompetence(competences,competence.getParentId());
		return competences;
	}
	/***
	 * 根据id获得所有父节点
	 * @param competences
	 * @param id
	 */
		private void getParentCompetence(List<Competence> competences,Integer id ) {
			 Competence  parentCompetence=competenceDao.getCompetenceById(id);
			if(parentCompetence!=null  ) {
					competences.add(parentCompetence);
					getParentCompetence(competences,parentCompetence.getParentId());
				}
			}
		
	/*获得父节点*/	
	@Override
	public List<Integer> getCompetencePidById(Integer id) {
		List<Integer> list=new ArrayList<Integer>();
		List<Competence> competences=this.getParentCompetence(id);
		for (Competence competence : competences) {
			list.add(competence.getParentId());
		}
		return list;
	}
	@Override
	public List<Competence> getCompetencesByMap(int cId, int fId, int original,
			int ne, int mark) throws Exception {
		Map<Object, Object> map = new HashMap<Object, Object>();
		map.put("parentId", fId);
		map.put("original", original);
		map.put("ne", ne);
		map.put("mark", mark);
		map.put("cId", cId);
		return competenceDao.getCompetencesByMap(map);
	}
		 
}