| 
					
				 | 
			
			
				@ -1,11 +1,20 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.base.service.org; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.dao.org.OrgTreeDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.org.tree.SimpleTree; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.org.tree.SimpleTreeNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.base.service.org.tree.TreeNode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.org.BaseOrgDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.base.BaseRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.mysql.query.BaseJpaService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * 机构信息服务service 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -24,8 +33,124 @@ public class OrgTreeService extends BaseJpaService<OrgTree, OrgTreeDao> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private OrgTreeDao orgTreeDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 添加机构和区域的关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param baseOrgDO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void addOrgTreeNode(BaseOrgDO baseOrgDO){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        if(){} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<OrgTree> treeNodes = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!orgTreeDao.existsByCode(baseOrgDO.getCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree orgNode = new OrgTree(baseOrgDO.getCode(),baseOrgDO.getTownCode(),baseOrgDO.getName(), OrgTree.Level.org.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            treeNodes.add(orgNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!orgTreeDao.existsByCode(baseOrgDO.getTownCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree townTree = new OrgTree(baseOrgDO.getTownCode(),baseOrgDO.getCityCode(),baseOrgDO.getTownName(), OrgTree.Level.town.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            treeNodes.add(townTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!orgTreeDao.existsByCode(baseOrgDO.getCityCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree cityTree = new OrgTree(baseOrgDO.getCityCode(),baseOrgDO.getProvinceCode(),baseOrgDO.getCityName(), OrgTree.Level.city.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            treeNodes.add(cityTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(!orgTreeDao.existsByCode(baseOrgDO.getProvinceCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree provinceTree = new OrgTree(baseOrgDO.getProvinceCode(),"",baseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            treeNodes.add(provinceTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        /*if(orgTreeDao.existsByCode(baseOrgDO.getTownCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree orgNode = new OrgTree(baseOrgDO.getCode(),baseOrgDO.getTownCode(),baseOrgDO.getName(), OrgTree.Level.org.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            treeNodes.add(orgNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else if(orgTreeDao.existsByCode(baseOrgDO.getCityCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree townNode = new OrgTree(baseOrgDO.getTownCode(),baseOrgDO.getCityCode(),baseOrgDO.getTownName(), OrgTree.Level.town.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            treeNodes.add(townNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else if(orgTreeDao.existsByCode(baseOrgDO.getProvinceCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree cityNode = new OrgTree(baseOrgDO.getCityCode(),baseOrgDO.getProvinceCode(),baseOrgDO.getCityName(), OrgTree.Level.city.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            treeNodes.add(cityNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree provinceNode = new OrgTree(baseOrgDO.getProvinceCode(),"",baseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            treeNodes.add(provinceNode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        this.batchInsert(treeNodes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 修改机构和区域的关系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param oldBaseOrgDO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param newBaseOrgDO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void updateOrgTreeNode(BaseOrgDO oldBaseOrgDO,BaseOrgDO newBaseOrgDO,int level){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if( level == OrgTree.Level.town.getLevelValue() ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree orgTree = orgTreeDao.findByCodeAndParentCode(oldBaseOrgDO.getCode(),oldBaseOrgDO.getTownCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(null == orgTree){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orgTree.setParentCode(newBaseOrgDO.getTownCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.save(orgTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           /* List<OrgTree> treeNodes = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //新修改的区代码不存在,表示未添加过,应把相应的父类关联关系存储起来(城市,省份等) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!orgTreeDao.existsByCode(newBaseOrgDO.getTownCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                OrgTree townTree = new OrgTree(newBaseOrgDO.getTownCode(),newBaseOrgDO.getCityCode(),newBaseOrgDO.getTownName(), OrgTree.Level.town.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                treeNodes.add(townTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!orgTreeDao.existsByCode(newBaseOrgDO.getCityCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                OrgTree cityTree = new OrgTree(newBaseOrgDO.getCityCode(),newBaseOrgDO.getProvinceCode(),newBaseOrgDO.getCityName(), OrgTree.Level.city.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                treeNodes.add(cityTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!orgTreeDao.existsByCode(newBaseOrgDO.getProvinceCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                OrgTree provinceTree = new OrgTree(newBaseOrgDO.getProvinceCode(),"",newBaseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                treeNodes.add(provinceTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.batchInsert(treeNodes);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addOrgTreeNode(newBaseOrgDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else if( level == OrgTree.Level.city.getLevelValue() ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree orgTree = orgTreeDao.findByCodeAndParentCode(oldBaseOrgDO.getTownCode(),oldBaseOrgDO.getCityCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(null == orgTree){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orgTree.setParentCode(newBaseOrgDO.getCityCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.save(orgTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addOrgTreeNode(newBaseOrgDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            /*List<OrgTree> treeNodes = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!orgTreeDao.existsByCode(newBaseOrgDO.getCityCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                OrgTree cityTree = new OrgTree(newBaseOrgDO.getCityCode(),newBaseOrgDO.getProvinceCode(),newBaseOrgDO.getCityName(), OrgTree.Level.city.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                treeNodes.add(cityTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!orgTreeDao.existsByCode(newBaseOrgDO.getProvinceCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                OrgTree provinceTree = new OrgTree(newBaseOrgDO.getProvinceCode(),"",newBaseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                treeNodes.add(provinceTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.batchInsert(treeNodes);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        else if( level == OrgTree.Level.province.getLevelValue() ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            OrgTree orgTree = orgTreeDao.findByCodeAndParentCode(oldBaseOrgDO.getCityCode(),oldBaseOrgDO.getProvinceCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(null == orgTree){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            orgTree.setParentCode(newBaseOrgDO.getProvinceCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.save(orgTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            addOrgTreeNode(newBaseOrgDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            /*List<OrgTree> treeNodes = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(!orgTreeDao.existsByCode(newBaseOrgDO.getProvinceCode())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                OrgTree provinceTree = new OrgTree(newBaseOrgDO.getProvinceCode(),"",newBaseOrgDO.getProvinceName(), OrgTree.Level.province.getLevelValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                treeNodes.add(provinceTree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            this.batchInsert(treeNodes);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 根据树的节点层级查询 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param level 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    List<OrgTree> findListByLevel(Integer level){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<OrgTree> result = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(null == level){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return orgTreeDao.findByLevel(level); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//        return orgTreeDao.findByLevelLessThanEqual(level); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |