Преглед изворни кода

外省地址判断异常BUG修复。

DESKTOP-6LTVLN7\Liumouren пре 1 недеља
родитељ
комит
6db8a83e34

+ 21 - 20
src/main/java/com/skyversation/poiaddr/controller/CorporateLibraryController.java

@@ -35,26 +35,6 @@ public class CorporateLibraryController {
 
     @Resource
     private YyskAddressStandardizationServiceImpl yyskAddressStandardizationService;
-
-    //    根据经纬度查询确定区、镇、居委
-    @RequestMapping(value = "/searchInfoByLocal")
-    public String searchInfoByLocal(HttpServletRequest request) {
-        AddressResult addressResult = new AddressResult();
-        String lon = request.getParameter("lon");
-        String lat = request.getParameter("lat");
-        if (StringUtils.hasText(lon) && StringUtils.hasText(lat)) {
-            GeoJsonBean cjBean = AreaService.getInstance().isInResidentialCommitteePolygon(Double.parseDouble(lon), Double.parseDouble(lat));
-            if (cjBean != null && cjBean.getProperties() != null) {
-                addressResult.getAddrBean().setPname("上海市");
-                addressResult.getAddrBean().setCityname(cjBean.getProperties().getString("所属区"));
-                addressResult.getAddrBean().setAdname(cjBean.getProperties().getString("所属街"));
-                addressResult.getAddrBean().setCommunityCode(cjBean.getProperties().getString("居委会"));
-                addressResult.getAddrBean().setCommunity(cjBean.getProperties().getString("居委_1"));
-            }
-        }
-        return MessageManage.getInstance().getResultContent(Constant.SUCCESS, addressResult, "成功");
-    }
-
     //    地址查询
     @RequestMapping(value = "/searchByName")
     public String searchByName(HttpServletRequest request) {
@@ -163,6 +143,27 @@ public class CorporateLibraryController {
         return "处理完成";
     }
 
+
+    //    根据经纬度查询确定区、镇、居委
+    @RequestMapping(value = "/searchInfoByLocal")
+    public String searchInfoByLocal(HttpServletRequest request) {
+        AddressResult addressResult = new AddressResult();
+        String lon = request.getParameter("lon");
+        String lat = request.getParameter("lat");
+        if (StringUtils.hasText(lon) && StringUtils.hasText(lat)) {
+            GeoJsonBean cjBean = AreaService.getInstance().isInResidentialCommitteePolygon(Double.parseDouble(lon), Double.parseDouble(lat));
+            if (cjBean != null && cjBean.getProperties() != null) {
+                addressResult.getAddrBean().setPname("上海市");
+                addressResult.getAddrBean().setCityname(cjBean.getProperties().getString("所属区"));
+                addressResult.getAddrBean().setAdname(cjBean.getProperties().getString("所属街"));
+                addressResult.getAddrBean().setCommunityCode(cjBean.getProperties().getString("居委会"));
+                addressResult.getAddrBean().setCommunity(cjBean.getProperties().getString("居委_1"));
+            }
+        }
+        return MessageManage.getInstance().getResultContent(Constant.SUCCESS, addressResult, "成功");
+    }
+
+
     /**
      * (开发中)
      * 定时器:每天都全量更新法人库的地名地址数据

+ 5 - 1
src/main/java/com/skyversation/poiaddr/service/AreaService.java

@@ -191,6 +191,7 @@ public class AreaService {
             if (addr.contains("弄")) {
                 addr = addr.substring(0, addr.indexOf("弄"));
             }
+            addr = addr.replaceAll("(?<=[^\\d])\\d+$", "");
             if (!ScheduledTasks.allDmdzData.containsKey(addr)) {
                 List<YyskDmdzAddressStandardization> datas = new ArrayList<>();
                 datas.add(item);
@@ -450,13 +451,15 @@ public class AreaService {
         if (splitAddress.getAddr().contains("号")) {
             splitAddress.setSearchAddr(splitAddress.getAddr().substring(0, splitAddress.getAddr().indexOf("号")));
         }
+
         if (splitAddress.getAddr().contains("弄")) {
             splitAddress.setSearchAddr(splitAddress.getAddr().substring(0, splitAddress.getAddr().indexOf("弄")));
         }
 
         if (splitAddress.getSearchAddr() == null) {
-            splitAddress.setSearchAddr(splitAddress.getAddr());
+            splitAddress.setSearchAddr(splitAddress.getAddr().replaceAll("(?<=[^\\d])\\d+$", ""));
         }
+
         List<YyskDmdzAddressStandardization> list = new ArrayList<>();
         if (StringUtils.hasText(splitAddress.getDistrict())) {
 //          TODO 数据库查询逻辑调整为内存处理的方式
@@ -496,6 +499,7 @@ public class AreaService {
         if (addr.contains("弄")) {
             addr = addr.substring(0, addr.indexOf("弄"));
         }
+        addr = addr.replaceAll("(?<=[^\\d])\\d+$", "");
         List<YyskDmdzAddressStandardization> returnDatas = new ArrayList<>();
         if (ScheduledTasks.allDmdzData.containsKey(addr)) {
             returnDatas = ScheduledTasks.allDmdzData.get(addr);

+ 1 - 3
src/main/java/com/skyversation/poiaddr/util/AddrSplitLmrMap.java

@@ -132,7 +132,6 @@ public class AddrSplitLmrMap {
                         addrMap.setProvinces(s);
                         addrMap.setMarket(m);
                         addrMap.setRule("-2");
-                        errorAddr = true;
                     }
                     //              判断外地县名
                     for (String x : All_NO_SH_tree.get(s).get(m)) {
@@ -141,7 +140,6 @@ public class AddrSplitLmrMap {
                             addrMap.setProvinces(s);
                             addrMap.setMarket(m);
                             addrMap.setRule("-4");
-                            errorAddr = true;
                             break;
                         }
                     }
@@ -268,7 +266,7 @@ public class AddrSplitLmrMap {
         AddrSplitLmrMap AddrSplitLmrMap = new AddrSplitLmrMap();
         AddrSplitLmrMap.initFile();
         System.out.println(outAddrMapInAddr("村165号"));
-        System.out.println(outAddrMapInAddr("河南驻马店汝南县东官庄镇"));
+        System.out.println(outAddrMapInAddr("上海市松江区乐都路"));
         System.out.println(outAddrMapInAddr("云南省昭通市昭阳区永丰镇绿荫社区居民委员会管湾村二十五组205号"));
     }
 }