| 
					
				 | 
			
			
				@@ -16,8 +16,6 @@ import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.HashSet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.Set; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.regex.Matcher; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.regex.Pattern; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -35,12 +33,6 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private WDToken wdToken = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public static void main(String[] args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String[] address = new String[]{"未来城"}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName(address, AddressLevel.values()[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        System.out.println(addressResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /*** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 单条地名搜索通用方法,搜索顺序  1. 武大吉奥; 2. 市四中心; 3. 高德搜索; 4. 高德高级搜索; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @param addrs 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -52,8 +44,8 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      *              5. 结果与基准数据完全一致,则使用。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public AddressResult commonSearchByName(String[] addrs, AddressLevel level) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (addrs == null || addrs.length < 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public AddressResult commonSearchByName(List<String> addrs, AddressLevel level) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (addrs == null || addrs.size() < 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         AddressResult addressResult = new AddressResult(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,7 +76,7 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (addressResult.getData() == null || addressResult.getData().size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /*if (addressResult.getData() == null || addressResult.getData().size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (String addr : addrs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 AddressResult.ContentBean contentBean = verificaData(gdSearchByName(addr), level, addr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (contentBean != null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,8 +87,8 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return getCjWgWgwByLoc(addressResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (addressResult.getData() == null || addressResult.getData().size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /*if (addressResult.getData() == null || addressResult.getData().size() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (String addr : addrs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 AddressResult.ContentBean contentBean = verificaData(gdV3SearchByName(addr), level, addr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (contentBean != null) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -107,7 +99,7 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return getCjWgWgwByLoc(addressResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         addressResult.setCode(AddressResultEnum.RESULT_NULL); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         addressResult.setMessage("失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return addressResult; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -165,7 +157,7 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return AddressTools.getInstance().faildQuery(AddressResultEnum.DATA_FROMAT_FAILD, "格式化失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            System.out.println("地址" + address + "未查询到数据!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            System.out.println("地址[" + address + "]未查询到数据!"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -197,15 +189,19 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public AddressResult gdSearchByName(String address) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String geoUrl = Constant.AMAP_GEO_URL + "?key=" + Constant.AMAP_KEY + "&address=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&output=JSON"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ResponseEntity response = AddressNetTools.getInstance().requestGet(geoUrl, null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String body = response.getBody() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!StringUtils.hasText(body)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_NULL, "搜索无结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            JSONObject json = JSONObject.parseObject(body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return TransfromDataTool.gdResultToResult(json); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            System.err.println(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return AddressTools.getInstance().faildQuery(AddressResultEnum.DATA_FROMAT_FAILD, "格式化失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (response != null && response.getBody() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String body = response.getBody() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!StringUtils.hasText(body)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_NULL, "搜索无结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                JSONObject json = JSONObject.parseObject(body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return TransfromDataTool.gdResultToResult(json); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                System.err.println(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return AddressTools.getInstance().faildQuery(AddressResultEnum.DATA_FROMAT_FAILD, "格式化失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -216,37 +212,48 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public AddressResult gdV3SearchByName(String address) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String geoUrl = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//                + Constant.AMAP_SEARCH_TYPES  070500 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY + "&types=" + Constant.AMAP_SEARCH_TYPES + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         "&keywords=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&offset=20"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        System.out.println("geoUrl:" + geoUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String body = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        body = AddressNetTools.getInstance().requestGet(geoUrl, null, null).getBody() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!StringUtils.hasText(body)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_NULL, "搜索无结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        JSONArray pois = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        JSONObject json = JSONObject.parseObject(body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        pois.addAll(json.getJSONArray("pois")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        int count = Integer.valueOf(json.get("count") + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (count > 20) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (int i = 2; i < (count % 20 + 1); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                geoUrl = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY + "&types=" + Constant.AMAP_SEARCH_TYPES + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                "&keywords=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&offset=20&page=" + i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                body = AddressNetTools.getInstance().requestGet(geoUrl, null, null).getBody() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (!StringUtils.hasText(body)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_AGAIN_NULL, "多次搜索无结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ResponseEntity responseEntity = AddressNetTools.getInstance().requestGet(geoUrl, null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (responseEntity.hasBody()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String body = responseEntity.getBody() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!StringUtils.hasText(body)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_NULL, "搜索无结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            JSONArray pois = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            JSONObject json = JSONObject.parseObject(body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (json.containsKey("pois")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                pois.addAll(json.getJSONArray("pois")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (json.containsKey("count")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                int count = Integer.parseInt(json.get("count") + ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (count > 20) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for (int i = 2; i < (count % 20 + 1); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        geoUrl = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                Constant.AMAP_SEARCH_NAME_V3 + "?key=" + Constant.AMAP_KEY + "&types=" + Constant.AMAP_SEARCH_TYPES + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        "&keywords=" + address + "&city=" + Constant.getAMAP_CITY_CODE() + "&offset=20&page=" + i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ResponseEntity responseEntity2 = AddressNetTools.getInstance().requestGet(geoUrl, null, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (responseEntity2.hasBody()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            body = responseEntity2.getBody() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (!StringUtils.hasText(body)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_AGAIN_NULL, "多次搜索无结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        JSONObject json2 = JSONObject.parseObject(body); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (json2.containsKey(pois)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            pois.addAll(JSONObject.parseObject(body).getJSONArray("pois")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                pois.addAll(JSONObject.parseObject(body).getJSONArray("pois")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return TransfromDataTool.gdV3ResultToResult(pois); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            System.err.println(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return AddressTools.getInstance().faildQuery(AddressResultEnum.DATA_FROMAT_FAILD, "格式化失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return TransfromDataTool.gdV3ResultToResult(pois); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                System.err.println(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return AddressTools.getInstance().faildQuery(AddressResultEnum.DATA_FROMAT_FAILD, "格式化失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return AddressTools.getInstance().faildQuery(AddressResultEnum.RESULT_AGAIN_NULL, "高德V3分页查询无结果"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -262,12 +269,19 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             AreaService areaService = AreaService.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (AddressResult.ContentBean content : result.getData()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                GeoJsonBean cjBean = areaService.isInCJPolygon(content.getLon(), content.getLat()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                content.setCjJson(cjBean == null ? new JSONObject() : cjBean.getProperties()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                GeoJsonBean gridBean = areaService.isInGridPolygon(content.getLon(), content.getLat()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                content.setWgwJson(gridBean == null ? new JSONObject() : gridBean.getProperties()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                GeoJsonBean wgridBean = areaService.isInWGridPolygon(content.getLon(), content.getLat()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                content.setWgwJson(wgridBean == null ? new JSONObject() : wgridBean.getProperties()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (content.getLat() != null && content.getLon() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // TODO 松江的话只跑行政区划和街镇 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    /*GeoJsonBean cjBean = areaService.isInCJPolygon(content.getLon(), content.getLat()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    content.setCjJson(cjBean == null ? new JSONObject() : cjBean.getProperties()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    GeoJsonBean gridBean = areaService.isInGridPolygon(content.getLon(), content.getLat()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    content.setWgwJson(gridBean == null ? new JSONObject() : gridBean.getProperties()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    GeoJsonBean wgridBean = areaService.isInWGridPolygon(content.getLon(), content.getLat()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    content.setWgwJson(wgridBean == null ? new JSONObject() : wgridBean.getProperties());*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    GeoJsonBean adBean = areaService.isInadPolygon(content.getLon(), content.getLat()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    content.setAdJson(adBean == null ? new JSONObject() : adBean.getProperties()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    GeoJsonBean townBean = areaService.isInTownPolygon(content.getLon(), content.getLat()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    content.setTownJson(townBean == null ? new JSONObject() : townBean.getProperties()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -303,10 +317,12 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (result != null && result.getData() != null && result.getData().size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     List<AddressResult.ContentBean> contentBean = result.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (AddressResult.ContentBean contentBean1 : contentBean) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String address = addressReplaceAll(contentBean1.getAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String address2 = addressReplaceAll(addr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (isNotEmptyOrBlank(address) && (address.contains(address2) || address2.contains(address))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            return contentBean1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (contentBean1.getAddress() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            String address = townReplaceAll(addressReplaceAll(contentBean1.getAddress())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            String address2 = townReplaceAll(addressReplaceAll(addr)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (isNotEmptyOrBlank(address) && address.contains(address2)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                return contentBean1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -318,15 +334,17 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (result != null && result.getData() != null && result.getData().size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     List<AddressResult.ContentBean> contentBean = result.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (AddressResult.ContentBean contentBean1 : contentBean) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Set<String> address = tokenizeString(contentBean1.getAddress()).get(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (address != null && address.size() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            Set<String> address2 = tokenizeString(addr).get(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            int addressSize = address.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            for (String addr2 : address2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (address.contains(addr2)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    addressSize--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if (addressSize == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        return contentBean1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (contentBean1.getAddress() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Set<String> address = tokenizeString(contentBean1.getAddress()).get(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (address != null && address.size() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                Set<String> address2 = tokenizeString(addr).get(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                int addressSize = address.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                for (String addr2 : address2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    if (address.contains(addr2)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        addressSize--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        if (addressSize == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            return contentBean1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -341,22 +359,24 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (result != null && result.getData() != null && result.getData().size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     List<AddressResult.ContentBean> contentBean = result.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (AddressResult.ContentBean contentBean1 : contentBean) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Set<String> addressString = tokenizeString(contentBean1.getAddress()).get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Set<String> addressNumber = tokenizeString(contentBean1.getAddress()).get(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Set<String> address2String = tokenizeString(addr).get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Set<String> address2Number = tokenizeString(addr).get(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (addressString != null && addressString.size() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            int addressStrSize = addressString.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            for (String addr2str : address2String) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                if (addressString.contains(addr2str)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    addressStrSize--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    if (addressStrSize == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        int addressNumSize = addressNumber.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        for (String addr2Num : address2Number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                            if (addressNumber.contains(addr2Num)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                addressNumSize--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                if (addressNumSize == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                    return contentBean1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (contentBean1.getAddress() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Set<String> addressString = tokenizeString(contentBean1.getAddress()).get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Set<String> addressNumber = tokenizeString(contentBean1.getAddress()).get(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Set<String> address2String = tokenizeString(addr).get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Set<String> address2Number = tokenizeString(addr).get(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (addressString != null && addressString.size() > 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                int addressStrSize = addressString.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                for (String addr2str : address2String) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    if (addressString.contains(addr2str)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        addressStrSize--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        if (addressStrSize == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            int addressNumSize = addressNumber.size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            for (String addr2Num : address2Number) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                if (addressNumber.contains(addr2Num)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                    addressNumSize--; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                    if (addressNumSize == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                        return contentBean1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -374,10 +394,12 @@ public class AddressQueryEngine { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (result != null && result.getData() != null && result.getData().size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     List<AddressResult.ContentBean> contentBean = result.getData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (AddressResult.ContentBean contentBean1 : contentBean) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String address = addressReplaceAll(contentBean1.getAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        String address2 = addressReplaceAll(addr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (isNotEmptyOrBlank(address) && address.equals(address2)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            return contentBean1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (contentBean1.getAddress() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            String address = addressReplaceAll(contentBean1.getAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            String address2 = addressReplaceAll(addr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (isNotEmptyOrBlank(address) && address.equals(address2)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                return contentBean1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else { 
			 |