| 
					
				 | 
			
			
				@@ -1,5 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.genersoft.iot.vmp.gb28181.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.genersoft.iot.vmp.common.CivilCodePo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.bean.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.dao.CommonGBChannelMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.dao.GroupMapper; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -7,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.event.EventPublisher; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.service.IGbChannelService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.gb28181.service.IGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.genersoft.iot.vmp.utils.CivilCodeUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.genersoft.iot.vmp.utils.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15,8 +17,7 @@ import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.util.Assert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.util.ObjectUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Collections; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 区域管理类 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -142,14 +143,51 @@ public class GroupServiceImpl implements IGroupService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 查询所有业务分组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return groupManager.queryBusinessGroupForTree(query, platformId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            List<GroupTree> groupTreeList = groupManager.queryForTree(query, parent, platformId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return groupManager.queryForTree(query, parent, platformId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return Collections.emptyList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void syncFromChannel() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 获取未初始化的业务分组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> civilCodeList = regionMapper.getUninitializedCivilCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (civilCodeList.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Region> regionList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 收集节点的父节点,用于验证哪些节点的父节点不存在,方便一并存入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Region> regionMapForVerification = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        civilCodeList.forEach(civilCode->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            CivilCodePo civilCodePo = CivilCodeUtil.INSTANCE.getCivilCodePo(civilCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (civilCodePo != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Region region = Region.getInstance(civilCodePo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                regionList.add(region); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 获取全部的父节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                List<CivilCodePo> civilCodePoList = CivilCodeUtil.INSTANCE.getAllParentCode(civilCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (!civilCodePoList.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (CivilCodePo codePo : civilCodePoList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        regionMapForVerification.put(codePo.getCode(), Region.getInstance(codePo)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (regionList.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!regionMapForVerification.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 查询数据库中已经存在的. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<String> civilCodesInDb = regionMapper.queryInList(regionMapForVerification.keySet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!civilCodesInDb.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (String code : civilCodesInDb) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    regionMapForVerification.remove(code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (Region region : regionList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            regionMapForVerification.put(region.getDeviceId(), region); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regionMapper.batchAdd(new ArrayList<>(regionMapForVerification.values())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 |