Przeglądaj źródła

添加地址过滤

DESKTOP-6LTVLN7\Liumouren 3 miesięcy temu
rodzic
commit
140d3aa90f

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

@@ -3,6 +3,7 @@ package com.skyversation.poiaddr.controller;
 import com.skyversation.poiaddr.entity.FileDataDto;
 import com.skyversation.poiaddr.entity.PoiAddress;
 import com.skyversation.poiaddr.service.PoiAddressService;
+import com.skyversation.poiaddr.util.ExcelReaderUtils;
 import com.skyversation.poiaddr.util.RequestUtils;
 import com.skyversation.poiaddr.util.fileTools.ReadFileData;
 import lombok.extern.slf4j.Slf4j;
@@ -139,22 +140,22 @@ public class PoiAddressController {
             }
 //          封装解析文件的参数
 //          TODO 文件数据解析
-            assert file != null;
             List<FileDataDto> fileDataDtoList = ReadFileData.ReadMultipartFile(file);
 //          TODO 补充FileDataDto中的搜索条件参数
             for (FileDataDto fileDataDto : fileDataDtoList) {
 //              搜索等级
                 fileDataDto.setMatchingLevel(matchingLevel);
-//                set地名地址搜索字段
+//              TODO 数据过滤
+//              set地名地址搜索字段
                 Map<String, Object> properties = fileDataDto.getProperties();
-                if (addr1Key != null && !addr1Key.isEmpty()) {
+                if (addr1Key != null && !addr1Key.isEmpty() && ExcelReaderUtils.isOtherDistrictThanQingpu(addr1Key)) {
                     String address = "上海市青浦区" + properties.getOrDefault(addr1Key, "").toString().replace("青浦区", "").replace(
-                    "青浦", "").replace("上海市","").replace("上海","").replace("/弄","").replace("/号","").replace("弄","").replace("/幢","").replace("/室"," ").replace("(号楼) "," ");
+                            "青浦", "").replace("上海市", "").replace("上海", "").replace("/弄", "").replace("/号", "").replace("弄", "").replace("/幢", "").replace("/室", " ").replace("(号楼) ", " ");
                     fileDataDto.setAddr1(address);
                 }
-                if (addr2Key != null && !addr2Key.isEmpty()) {
+                if (addr2Key != null && !addr2Key.isEmpty() && ExcelReaderUtils.isOtherDistrictThanQingpu(addr2Key)) {
                     String address = "上海市青浦区" + properties.getOrDefault(addr2Key, "").toString().replace("青浦区", "").replace(
-                            "青浦", "").replace("上海市","").replace("上海","").replace("/弄","").replace("/号","").replace("弄","").replace("/幢","").replace("/室"," ").replace("(号楼) "," ");
+                            "青浦", "").replace("上海市", "").replace("上海", "").replace("/弄", "").replace("/号", "").replace("弄", "").replace("/幢", "").replace("/室", " ").replace("(号楼) ", " ");
                     fileDataDto.setAddr2(address);
                 }
 //              判断是否有参考经纬度字段
@@ -181,34 +182,34 @@ public class PoiAddressController {
             selectOptions.add("GCJ02");
             selectOptions.add("BD09");
             selectOptions.add("SH2000");
-            if(inCoordinate != null && !inCoordinate.isEmpty()){
+            if (inCoordinate != null && !inCoordinate.isEmpty()) {
                 if (!selectOptions.contains(inCoordinate)) {
                     return "请传入正确的坐标系名称!可选坐标系名称:WGS84,GCJ02,BD09,SH2000";
                 }
-            }else{
+            } else {
                 inCoordinate = "WGS84";
             }
-            for(FileDataDto fileDataDto:fileDataDtoList){
-                if(fileDataDto.getLat() != null && fileDataDto.getLon() != null){
-                    double[] lonLat = com.skyversation.poiaddr.util.Coordinate.transformationCoordinateByCoordinate(fileDataDto.getLat(),fileDataDto.getLon(),inCoordinate,outCoordinate);
+            for (FileDataDto fileDataDto : fileDataDtoList) {
+                if (fileDataDto.getLat() != null && fileDataDto.getLon() != null) {
+                    double[] lonLat = com.skyversation.poiaddr.util.Coordinate.transformationCoordinateByCoordinate(fileDataDto.getLat(), fileDataDto.getLon(), inCoordinate, outCoordinate);
                     fileDataDto.setLat(lonLat[1]);
                     fileDataDto.setLon(lonLat[0]);
                 }
                 //          TODO 距离计算
-                if(matchingDistance != null){
-                    if(fileDataDto.getResultLat() != null && fileDataDto.getResultLon() != null && fileDataDto.getLat() != null && fileDataDto.getLon() != null){
-                        double distance = com.skyversation.poiaddr.util.Coordinate.calculateDistance(fileDataDto.getResultLat(),fileDataDto.getResultLon(),fileDataDto.getLat(),fileDataDto.getLon());
+                if (matchingDistance != null) {
+                    if (fileDataDto.getResultLat() != null && fileDataDto.getResultLon() != null && fileDataDto.getLat() != null && fileDataDto.getLon() != null) {
+                        double distance = com.skyversation.poiaddr.util.Coordinate.calculateDistance(fileDataDto.getResultLat(), fileDataDto.getResultLon(), fileDataDto.getLat(), fileDataDto.getLon());
                         fileDataDto.setMatchingDistance(distance);
                         double matchingDistanceDb = Double.parseDouble(matchingDistance.toString());
-                        if(distance < matchingDistanceDb){
+                        if (distance < matchingDistanceDb) {
                             fileDataDto.setLtMatchingDistance("是");
-                        }else{
+                        } else {
                             fileDataDto.setLtMatchingDistance("否");
                         }
                     }
                 }
                 //          TODO 区域判断
-                if(regionalJudgment != null && !regionalJudgment.isEmpty()){
+                if (regionalJudgment != null && !regionalJudgment.isEmpty()) {
 //                  解析geojson文件得到区域
 
                 }

+ 13 - 0
src/main/java/com/skyversation/poiaddr/util/ExcelReaderUtils.java

@@ -429,6 +429,19 @@ public class ExcelReaderUtils {
         return fileList;
     }
 
+    public static boolean isOtherDistrictThanQingpu(String address) {
+        // 将地址字符串转换为小写,以便进行不区分大小写的比较
+        String lowerCaseAddress = address.toLowerCase();
+        // 检查地址是否包含 "青浦区" 字样,如果不包含,则可能是其他区
+        // 列出上海市的其他区(已补充完整)
+        String[] otherDistricts = {"黄浦区", "徐汇区", "长宁区", "静安区", "普陀区", "虹口区", "杨浦区", "闵行区", "宝山区", "嘉定区", "金山区", "松江区", "奉贤区", "崇明区", "浦东新区"};
+        for (String district : otherDistricts) {
+            if (lowerCaseAddress.contains(district.toLowerCase())) {
+                return false;
+            }
+        }
+        return true;
+    }
 
     /*public static void main(String[] args) {
 //        根据Map字段修改表头