Bläddra i källkod

再次优化判断逻辑。

DESKTOP-6LTVLN7\Liumouren 3 månader sedan
förälder
incheckning
9c5d50cb75

+ 1 - 1
src/main/java/com/skyversation/poiaddr/controller/PoiAddressController.java

@@ -56,7 +56,7 @@ public class PoiAddressController {
     public Object uploadDataBaseDataToLocal() {
         // 记录程序开始时间
         long startTime = System.currentTimeMillis();
-        testDataService.uploadAllData(100, 1);// 记录程序结束时间
+        testDataService.uploadAllData();// 记录程序结束时间
         long endTime = System.currentTimeMillis();
         return "处理完成!用时" + (endTime - startTime) / 1000 + "秒!";
     }

+ 13 - 28
src/main/java/com/skyversation/poiaddr/service/impl/SjArrDzbzhSjWcbryDzxxServiceImpl.java

@@ -5,6 +5,7 @@ import com.skyversation.poiaddr.addquery.Constant;
 import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.config.DbConnection;
 import com.skyversation.poiaddr.entity.SjArrDzbzhSjWcbryDzxx;
+import com.skyversation.poiaddr.util.AddressTools;
 import com.skyversation.poiaddr.util.SerializationUtils;
 import com.skyversation.poiaddr.util.status.AddressLevel;
 import org.springframework.stereotype.Service;
@@ -21,15 +22,10 @@ import java.util.concurrent.Future;
 @Service
 public class SjArrDzbzhSjWcbryDzxxServiceImpl {
 
-    public List<SjArrDzbzhSjWcbryDzxx> getAllData(Integer PageSize, Integer PageNumber) {
+    public List<SjArrDzbzhSjWcbryDzxx> getAllData() {
         try {
             List<SjArrDzbzhSjWcbryDzxx> requestData = new ArrayList<>();
-            StringBuilder sql = new StringBuilder();
-            sql.append("SELECT * FROM sj_zrr_dzbzh_sj_wcbry_dzxx");
-            if (PageSize != null && PageNumber != null) {
-                sql.append(" order by id limit ").append(PageSize).append(" offset ").append((PageNumber - 1) * PageSize);
-            }
-            List<Map<String, Object>> oldDbData = DbConnection.getInstance().runSqlStr(sql.toString());
+            List<Map<String, Object>> oldDbData = DbConnection.getInstance().runSqlStr("SELECT * FROM sj_zrr_dzbzh_sj_wcbry_dzxx");
 //          去重
             Map<String, Map<String, Object>> newRequestData = new HashMap<>();
             for (Map<String, Object> item : oldDbData) {
@@ -221,28 +217,17 @@ public class SjArrDzbzhSjWcbryDzxxServiceImpl {
         }
     }
 
-    private boolean isOtherDistrictThanSongJiang(String address) {
-        // 将地址字符串转换为小写,以便进行不区分大小写的比较
-        String lowerCaseAddress = address.toLowerCase();
-        // 检查地址是否包含 "青浦区" 字样,如果不包含,则可能是其他区
-        // 列出上海市的其他区(已补充完整)
-        String[] otherDistricts = {"黄浦区", "徐汇区", "长宁区", "静安区", "普陀区", "虹口区", "杨浦区", "闵行区", "宝山区", "嘉定区", "金山区", "青浦区", "奉贤区", "崇明区", "浦东新区"};
-        for (String district : otherDistricts) {
-            if (lowerCaseAddress.contains(district.toLowerCase())) {
-                return false;
-            }
-        }
-        return true;
-    }
 
-    public void uploadAllData(int PageSize, int PageNumber) {
-        List<SjArrDzbzhSjWcbryDzxx> listData = getAllData(null, null);
+
+    public void uploadAllData() {
+        List<SjArrDzbzhSjWcbryDzxx> listData = getAllData();
         if (listData != null && listData.size() > 0) {
             SerializationUtils.serialize(runExecutorService(listData), "output/testDataBase_all.ser");
+//            updateDatas(runExecutorService(listData));
 //            PageSize++;
 //            uploadAllData(PageSize, PageNumber);
 //        } else {
-//            System.out.println("处理完成!");
+            System.out.println("处理完成!");
         }
     }
 
@@ -291,19 +276,19 @@ public class SjArrDzbzhSjWcbryDzxxServiceImpl {
         for (SjArrDzbzhSjWcbryDzxx item : listData) {
             futures.add(executorService.submit(() -> {
                 List<String> addrList = new ArrayList<>();
-                if (item.getSkHjdz() != null && !item.getSkHjdz().isEmpty() && isOtherDistrictThanSongJiang(item.getSkHjdz())) {
+                if (item.getSkHjdz() != null && !item.getSkHjdz().isEmpty() && AddressTools.isOtherDistrictThanSongJiang(item.getSkHjdz())) {
                     //  实口户籍地址
                     addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getSkHjdz()));
                 }
-                if (item.getSkJzdz() != null && !item.getSkJzdz().isEmpty() && isOtherDistrictThanSongJiang(item.getSkJzdz())) {
+                if (item.getSkJzdz() != null && !item.getSkJzdz().isEmpty() && AddressTools.isOtherDistrictThanSongJiang(item.getSkJzdz())) {
                     //  实口居住地址
                     addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getSkJzdz()));
                 }
-                if (item.getJcHjdz() != null && !item.getJcHjdz().isEmpty() && isOtherDistrictThanSongJiang(item.getJcHjdz())) {
+                if (item.getJcHjdz() != null && !item.getJcHjdz().isEmpty() && AddressTools.isOtherDistrictThanSongJiang(item.getJcHjdz())) {
                     //  基层户籍地址
                     addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getJcHjdz()));
                 }
-                if (item.getJcJzdz() != null && !item.getJcJzdz().isEmpty() && isOtherDistrictThanSongJiang(item.getJcJzdz())) {
+                if (item.getJcJzdz() != null && !item.getJcJzdz().isEmpty() && AddressTools.isOtherDistrictThanSongJiang(item.getJcJzdz())) {
                     //  基层居住地址
                     addrList.add("上海市" + Constant.getArea() + "区" + AddressQueryEngine.addressReplaceAll(item.getJcJzdz()));
                 }
@@ -317,7 +302,7 @@ public class SjArrDzbzhSjWcbryDzxxServiceImpl {
                         try {
                             for (AddressResult.ContentBean contentBean : addressResult.getData()) {
                                 String resultAddrKey = contentBean.getAddress();
-                                if (resultAddrKey != null && contentBean.getLon() != null && contentBean.getLat() != null && isOtherDistrictThanSongJiang(resultAddrKey)) {
+                                if (resultAddrKey != null && contentBean.getLon() != null && contentBean.getLat() != null && AddressTools.isOtherDistrictThanSongJiang(resultAddrKey)) {
                                     String lng = contentBean.getLon() + "";
                                     String lat = contentBean.getLat() + "";
                                     item.setInTheArea("是");

+ 22 - 1
src/main/java/com/skyversation/poiaddr/util/AddressTools.java

@@ -489,7 +489,7 @@ public class AddressTools {
         for (int i = 0; i < array.size(); i++) {
             JSONObject obj = array.getJSONObject(i);
             obj.put("searchAddress", address);
-            if (obj.containsKey(param) && obj.get(param) != null) {
+            if (obj.containsKey(param) && obj.get(param) != null && !obj.getString(param).trim().isEmpty() && isOtherDistrictThanSongJiang(obj.getString(param))) {
 //              得到返回的地址
                 String addr = obj.getString(param);
 //              规则4判断
@@ -553,6 +553,27 @@ public class AddressTools {
         return bestMatch;
     }
 
+    public static boolean isOtherDistrictThanSongJiang(String address) {
+        // 将地址字符串转换为小写,以便进行不区分大小写的比较
+        String lowerCaseAddress = address.toLowerCase();
+        // 检查地址是否包含 "青浦区" 字样,如果不包含,则可能是其他区
+        // 列出上海市的其他区(已补充完整)
+        String[] otherDistricts = {"北京市", "天津市", "重庆市",
+                "河北省", "山西省", "辽宁省", "吉林省", "黑龙江省",
+                "江苏省", "浙江省", "安徽省", "福建省", "江西省",
+                "山东省", "河南省", "湖北省", "湖南省", "广东省",
+                "海南省", "四川省", "贵州省", "云南省", "陕西省",
+                "甘肃省", "青海省", "台湾省",
+                "内蒙古自治区", "广西壮族自治区", "西藏自治区",
+                "宁夏回族自治区", "新疆维吾尔自治区",
+                "香港特别行政区", "澳门特别行政区", "黄浦区", "徐汇区", "长宁区", "静安区", "普陀区", "虹口区", "杨浦区", "闵行区", "宝山区", "嘉定区", "金山区", "青浦区", "奉贤区", "崇明区", "浦东新区"};
+        for (String district : otherDistricts) {
+            if (lowerCaseAddress.contains(district.toLowerCase())) {
+                return false;
+            }
+        }
+        return true;
+    }
 
     /***
      * 其他方法的引用方法,不用管