Procházet zdrojové kódy

小调整(有问题问我)

DESKTOP-6LTVLN7\Liumouren před 1 měsícem
rodič
revize
5ab54d5fa2

+ 4 - 6
src/main/java/com/skyversation/poiaddr/addquery/AddressQueryEngine.java

@@ -7,6 +7,7 @@ import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.bean.GeoJsonBean;
 import com.skyversation.poiaddr.bean.WDToken;
 import com.skyversation.poiaddr.entity.AmapAddressV3;
+import com.skyversation.poiaddr.entity.YyszAddressQp;
 import com.skyversation.poiaddr.service.AreaService;
 import com.skyversation.poiaddr.util.net.AddressNetTools;
 import com.skyversation.poiaddr.util.status.AddressLevel;
@@ -47,12 +48,9 @@ public class AddressQueryEngine {
     public AddressResult commonSearchByName(List<String> addrs) {
         AddressResult addressResult = new AddressResult();
 //      数据库查询
-        /*for (String addr : addrs) {
-            if (addr.startsWith("中山") && !addr.startsWith("中山街道")) {
-                addr = addr.replace("中山", "中山街道");
-            }
+        for (String addr : addrs) {
             // 优先进行数据库查询
-            List<AmapAddressV3> dbPois = AreaService.getInstance().getAddressPoisByAddr(addr);
+            List<YyszAddressQp> dbPois = AreaService.getInstance().getAddressPoisByAddr(addr);
             if (dbPois != null && dbPois.size() > 0) {
                 JSONArray pois = new JSONArray();
                 pois.addAll(dbPois);
@@ -63,7 +61,7 @@ public class AddressQueryEngine {
                     return getCjWgWgwByLoc(addressResult);
                 }
             }
-        }*/
+        }
         /*for (String addr : addrs) {
             //  创建请求
             addressResult = sj_szxSearchByName(addr, 3);

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

@@ -5,6 +5,8 @@ import com.skyversation.poiaddr.addquery.AddressQueryEngine;
 import com.skyversation.poiaddr.addquery.Constant;
 import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.config.DbConnection;
+import com.skyversation.poiaddr.entity.YyszAddressQp;
+import com.skyversation.poiaddr.service.AreaService;
 import com.skyversation.poiaddr.service.impl.SjArrDzbzhSjWcbryDzxxServiceImpl;
 import com.skyversation.poiaddr.util.AddressTools;
 import com.skyversation.poiaddr.util.ExcelReaderUtils;
@@ -105,41 +107,33 @@ public class PoiAddressController {
     @GetMapping(value = "/searchAddr")
     public Object searchByAddrStr(@RequestParam(name = "address") String address) {
         try {
-            List<Map<String, Object>> fileData = ExcelReaderUtils.readExcel("C:\\Users\\Liumouren\\Desktop\\addrs.xlsx");
+            List<Map<String, Object>> fileData = ExcelReaderUtils.readExcel("C:\\Users\\Liumouren\\Desktop\\教育局剩余要解析的地址.xlsx");
             if (fileData.size() == 0) {
                 return "文件解析失败!";
             }
-            List<Map<String,Object>> errorDatas = new ArrayList<>();
+            List<Map<String, Object>> errorDatas = new ArrayList<>();
             JSONObject returnDatas = new JSONObject();
             for (Map<String, Object> item : fileData) {
-                List<String> addrs = new ArrayList<>();
-                addrs.add("上海市青浦区" + item.get("对口街镇").toString() + item.get("对口路牌").toString());
-                AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName(addrs);
-                if (addressResult != null) {
-                    List<AddressResult.ContentBean> data = addressResult.getData();
-                    if (data != null && data.size() > 0) {
-                        AddressResult.ContentBean contentBean = data.get(0);
-                        String level = contentBean.getScore();
-                        if (contentBean.getAddress().contains("青浦区") && contentBean.getAddress().contains(item.get("对口路牌").toString())) {
-                            JSONObject jsonObjectItem = new JSONObject();
-                            jsonObjectItem.put("name", item.get("对口路牌").toString());
-                            jsonObjectItem.put("address", contentBean.getAddress());
-                            jsonObjectItem.put("type", "diy");
-                            jsonObjectItem.put("level", level);
-                            jsonObjectItem.put("location", contentBean.getLon() + "," + contentBean.getLat());
-                            returnDatas.put(contentBean.getSearchAddress(), jsonObjectItem);
-                        }else{
-                            errorDatas.add(item);
-                        }
-                    }else{
+                List<YyszAddressQp> dbPois = AreaService.getInstance().getAddressPoisByAddr(item.get("对口路牌").toString());
+                if (dbPois != null && dbPois.size() > 0) {
+                    YyszAddressQp requestData = dbPois.get(0);
+                    if (requestData.getCounty().contains("青浦区") && requestData.getSourceaddress().contains(item.get("对口路牌").toString())) {
+                        JSONObject jsonObjectItem = new JSONObject();
+                        jsonObjectItem.put("name", item.get("对口路牌").toString());
+                        jsonObjectItem.put("address", requestData.getSourceaddress());
+                        jsonObjectItem.put("type", "diy");
+                        jsonObjectItem.put("level", "rule_3");
+                        jsonObjectItem.put("location", requestData.getLon() + "," + requestData.getLat());
+                        returnDatas.put(item.get("对口路牌").toString(), jsonObjectItem);
+                    } else {
                         errorDatas.add(item);
                     }
-                }else{
+                } else {
                     errorDatas.add(item);
                 }
             }
-            if(errorDatas.size() > 0){
-                ExcelReaderUtils.writeToExcel(errorDatas,"C:\\Users\\Liumouren\\Desktop\\errorDatas.xlsx");
+            if (errorDatas.size() > 0) {
+                ExcelReaderUtils.writeToExcel(errorDatas, "C:\\Users\\Liumouren\\Desktop\\errorDatas.xlsx");
             }
             return returnDatas;
         } catch (Exception e) {

+ 1 - 0
src/main/java/com/skyversation/poiaddr/entity/YyszAddressQp.java

@@ -26,6 +26,7 @@ public class YyszAddressQp  implements Serializable {
 
 	private static final long serialVersionUID =  1012376382976936447L;
 
+	@Id
    	@Column(name = "oid" )
 	private Long oid;
 

+ 9 - 12
src/main/java/com/skyversation/poiaddr/service/AreaService.java

@@ -6,14 +6,8 @@ import com.skyversation.poiaddr.addquery.AddressQueryEngine;
 import com.skyversation.poiaddr.addquery.Constant;
 import com.skyversation.poiaddr.bean.AddressResult;
 import com.skyversation.poiaddr.bean.GeoJsonBean;
-import com.skyversation.poiaddr.entity.AmapAddressV3;
-import com.skyversation.poiaddr.entity.FusionKjdlTydzWf;
-import com.skyversation.poiaddr.entity.YyskAddressStandardization;
-import com.skyversation.poiaddr.entity.YyskDmdzAddressStandardization;
-import com.skyversation.poiaddr.service.impl.AmapAddressV3Service;
-import com.skyversation.poiaddr.service.impl.FusionKjdlTydzWfSerice;
-import com.skyversation.poiaddr.service.impl.YyskAddressStandardizationSerice;
-import com.skyversation.poiaddr.service.impl.YyskAddressStandardizationServiceImpl;
+import com.skyversation.poiaddr.entity.*;
+import com.skyversation.poiaddr.service.impl.*;
 import com.skyversation.poiaddr.util.AddressMatcher;
 import org.geotools.geojson.geom.GeometryJSON;
 import org.geotools.geometry.jts.JTSFactoryFinder;
@@ -51,6 +45,9 @@ public class AreaService {
     @Autowired
     private FusionKjdlTydzWfSerice fusionKjdlTydzWfSerice;
 
+    @Autowired
+    private YyszAddressQpService yyszAddressQpService;
+
     //  暂存数据库中的所有数据
     private Map<String, AmapAddressV3> allAddressData = new ConcurrentHashMap<>();
 
@@ -198,8 +195,8 @@ public class AreaService {
         datas.clear();
     }
 
-    public List<AmapAddressV3> getAddressPoisByAddr(String addr) {
-        List<AmapAddressV3> resultData = new ArrayList<>();
+    public List<YyszAddressQp> getAddressPoisByAddr(String addr) {
+        /*List<YyszAddressQp> resultData = new ArrayList<>();
         String[] strs = AddressMatcher.matchProvinceAndCity(addr);
         if (strs != null) {
             for (String str : strs) {
@@ -227,10 +224,10 @@ public class AreaService {
                 }
             }
         }
-        return resultData;
+        return resultData;*/
 //        TODO 使用缓存替换数据库查询
 //        System.out.println("<<<<<<<----- 开始数据库查询,数据查询地址为:" + addr);
-//        return amapAddressV3Service.getAddressPoisByAddr(addr);
+        return yyszAddressQpService.getAddressPoisByAddr(addr);
     }
 
     public GeoJsonBean isInadPolygon(double lon, double lat) {

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

@@ -12,6 +12,6 @@ import java.util.List;
 public interface YyszAddressQpRepository extends JpaRepository<YyszAddressQp, String> {
 
     // 执行自定义的SQL查询
-    @Query(value = "SELECT * FROM yysz_address_qp WHERE sourceaddress ILIKE %:addr% LIMIT 20", nativeQuery = true)
+    @Query(value = "SELECT * FROM yysz_address_qp WHERE sourceaddress ILIKE %:addr% LIMIT 1", nativeQuery = true)
     List<YyszAddressQp> getAddressPoisByAddr(@Param("addr") String addr);
 }