Parcourir la source

批处理待处理表流程完善(待补充回流表处理逻辑)

DESKTOP-6LTVLN7\Liumouren il y a 1 semaine
Parent
commit
29522d708b

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

@@ -50,7 +50,8 @@ public class AddressQueryEngine {
             if (addressResult != null) {
                 addressResult.setCode(AddressResultEnum.SZX_SUCCESS);
                 addressResult.setMessage("成功");
-                return getCjWgWgwByLoc(addressResult);
+                SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addr);
+                return getCjWgWgwByLoc(addressResult, splitAddress);
             }
         }
         addressResult.setCode(AddressResultEnum.RESULT_NULL);
@@ -64,7 +65,7 @@ public class AddressQueryEngine {
      * @return
      */
     public AddressResult commonSearchByName_nw(String addr) {
-        if (!StringUtils.hasText(addr)) {
+        if (!StringUtils.hasText(addr) || addr.length() < 3) {
             return null;
         }
         AddressResult addressResult = new AddressResult();
@@ -72,6 +73,7 @@ public class AddressQueryEngine {
         if (splitAddress.getStatus() == 2) { // 外省数据
             addressResult.setMessage("非上海数据");
             AddressResult.ContentBean content = new AddressResult.ContentBean();
+            content.setSearchAddress(addr);
             content.setPname(splitAddress.getProvince());
             content.setCityname(splitAddress.getCity());
             content.setAdname(splitAddress.getStreet());
@@ -104,7 +106,7 @@ public class AddressQueryEngine {
                 addressResult = new TransfromDataTool().dbResultToResult(splitAddress1, addr, pois);
                 addressResult.setAddrBean(addrBean);
                 if (addressResult.getData() != null && addressResult.getData().size() > 0) {
-                    getCjWgWgwByLoc(addressResult);
+                    getCjWgWgwByLoc(addressResult,splitAddress);
                     addressResult.setCode(AddressResultEnum.DB_SUCCESS);
                     addressResult.setMessage("成功");
                     AddressResult.ContentBean content = addressResult.getData().get(0);
@@ -113,7 +115,7 @@ public class AddressQueryEngine {
                     addrBean.setAdname(content.getAdname());
                     addrBean.setDistance(content.getDistance());
                     addrBean.setCommunity(content.getCommunity());
-                    addrBean.setStandAddr(content.getPname()+content.getCityname()+content.getAdname()+content.getSearchAddress());
+                    addrBean.setStandAddr(content.getStandAddr());
                     addressResult.setAddrBean(addrBean);
                     return addressResult;
                 }
@@ -268,7 +270,7 @@ public class AddressQueryEngine {
      * @param result
      * @return
      */
-    public AddressResult getCjWgWgwByLoc(AddressResult result) {
+    public AddressResult getCjWgWgwByLoc(AddressResult result, SplitAddress splitAddress) {
         if (result == null || result.getData() == null || result.getData().size() < 1) {
             return result;
         } else {
@@ -307,7 +309,7 @@ public class AddressQueryEngine {
                             }
                         }
                     }
-                    content.setStandAddr(content.getPname()+content.getCityname()+content.getAdname()+content.getSearchAddress());
+                    content.setStandAddr(content.getPname() + content.getCityname() + content.getAdname() + splitAddress.getAddr());
                 } else {
                     System.err.println("没有经纬度参数,不能根据经纬度落点补充街镇等信息!");
                 }

+ 35 - 11
src/main/java/com/skyversation/poiaddr/bean/GovernanceResultsTable.java

@@ -5,41 +5,65 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
 import java.util.Date;
 
 /**
  * hive
  * 治理结果表(治理结果总表)
  */
+@Entity
+@Table(name = "governance_results_table", schema = "")
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class GovernanceResultsTable {
+public class GovernanceResultsTable implements Serializable {
     //    原始地址
-    private String original_address;
+    @Id
+    @Column(name = "original_address", nullable = false)
+    private String originalAddress;
     //    标准地址
-    private String standard_address;
+    @Column(name = "standard_address")
+    private String standardAddress;
     //    简称地址
-    private String abbreviated_address;
+    @Column(name = "abbreviated_address")
+    private String abbreviatedAddress;
     //    市
+    @Column(name = "city")
     private String city;
     //    区
+    @Column(name = "county")
     private String county;
     //    街镇
+    @Column(name = "town")
     private String town;
     //    居委
+    @Column(name = "community")
     private String community;
     //    经度
-    private Float lon;
+    @Column(name = "lon")
+    private Double lon;
     //    纬度
-    private Float lat;
+    @Column(name = "lat")
+    private Double lat;
     //    批次号
-    private String batch_number;
-    //    打分
-    private String data_sources;
+    @Column(name = "batch_number")
+    private String batchNumber;
     //    数据来源表
-    private String data_table;
+    @Column(name = "data_table")
+    private String dataTable;
     //    入库日期
-    private Date in_data;
+    @Column(name = "in_data")
+    private Date inData;
+    //  数据标志
+    @Column(name = "data_tag")
+    private Long dataTag;
+    //  结果打分
+    @Column(name = "match_level")
+    private String matchLevel;
 }

+ 23 - 6
src/main/java/com/skyversation/poiaddr/bean/PendingGovernanceIntermediateTable.java

@@ -5,23 +5,40 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
 /**
  * hive
  * 待治理中间表
  * 能在结果总表中查询到的数据,要放到结果表中,同时修改中间表的治理状态为1
  * 然后再查询中间表的状态为0的数据,通过pg中的地址库匹配结果,有返回结果的放到结果表和结果总表中,没有返回结果的放到回流表中。结果表中的数据不够的话也先这样!
  */
+
+@Entity
+@Table(name = "pending_governance_table", schema = "")
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class PendingGovernanceIntermediateTable {
+public class PendingGovernanceIntermediateTable implements Serializable {
     //  待治理字段
-    private String pending_governance_address;
+    @Id
+    @Column(name = "original_address", nullable = false)
+    private String originalAddress;
     //  批次号
-    private String batch_number;
-    //  数据来源
-    private String data_sources;
+    @Column(name = "batch_number")
+    private String batchNumber;
+    //  数据标志
+    @Column(name = "data_tag")
+    private Long dataTag;
+    //  数据来源表
+    @Column(name = "data_table")
+    private String dataTable;
     //  治理状态(0:未治理;1已治理)
-    private Long governance_status;
+    @Column(name = "governance_status")
+    private Long governanceStatus;
 }

+ 10 - 15
src/main/java/com/skyversation/poiaddr/controller/CorporateLibraryController.java

@@ -76,17 +76,12 @@ public class CorporateLibraryController {
 //          打分并返回最优结果
             addressResult = new TransfromDataTool().dbResultToResult(splitAddress, address, pois);
             if (addressResult != null && addressResult.getData() != null && addressResult.getData().size() > 0) {
-                AddressQueryEngine.getInstance().getCjWgWgwByLoc(addressResult);
+                AddressQueryEngine.getInstance().getCjWgWgwByLoc(addressResult, splitAddress);
                 addressResult.setCode(AddressResultEnum.DB_SUCCESS);
                 addressResult.setMessage("成功");
             }
         }
-
-        if (addressResult == null) {
-            return MessageManage.getInstance().getResultContent(Constant.NO_DATA, "无数据", "无数据");
-        } else {
-            return MessageManage.getInstance().getResultContent(Constant.SUCCESS, addressResult, "成功");
-        }
+        return MessageManage.getInstance().getResultContent(Constant.SUCCESS, addressResult, "成功");
     }
 
     //    高级地址查询
@@ -98,10 +93,8 @@ public class CorporateLibraryController {
             return MessageManage.getInstance().getResultContent(Constant.PARAM_ERROR, "参数错误", "参数错误");
         }
         AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName_nw(address);
-        if (addressResult == null || addressResult.getCode() == null || !addressResult.getCode().equals(AddressResultEnum.DB_SUCCESS)) {
-            AreaService.getInstance().callBackErrorAddr(address);
-        }
         if (addressResult == null) {
+            AreaService.getInstance().callBackErrorAddr(address);
             return MessageManage.getInstance().getResultContent(Constant.NO_DATA, "无数据", "无数据");
         } else if (addressResult.getMessage().equals("失败")) {
             addressResult.setMessage("标准化成功");
@@ -124,10 +117,8 @@ public class CorporateLibraryController {
             return MessageManage.getInstance().getResultContent(Constant.PARAM_ERROR, "参数错误", "参数错误");
         }
         AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName_nw(address);
-        if (addressResult == null || addressResult.getCode() == null || !addressResult.getCode().equals(AddressResultEnum.DB_SUCCESS)) {
-            AreaService.getInstance().callBackErrorAddr(address);
-        }
         if (addressResult == null || addressResult.getData() == null || addressResult.getData().get(0) == null) {
+            AreaService.getInstance().callBackErrorAddr(address);
             return MessageManage.getInstance().getResultContent(Constant.NO_DATA, "无数据", "无数据");
         } else {
             return MessageManage.getInstance().getResultContent(Constant.SUCCESS, addressResult.getData().get(0), "成功");
@@ -148,11 +139,15 @@ public class CorporateLibraryController {
     @RequestMapping(value = "/runCallBackTablev2")
     public String runCallBackTablev2(HttpServletRequest request) {
         try {
-            String sql = "select * from " + com.skyversation.poiaddr.addquery.Constant.getPgiTable() + " group by batch_number,pending_governance_address";
+//            TODO 首先要使用JDBC写一个sql语句,验证同批次的地址不能重复,和null,重复或者为null的话直接返回(sql执行)
+            /*String sql = "select * from " + com.skyversation.poiaddr.addquery.Constant.getPgiTable() + " group by batch_number,pending_governance_address";
             List<Map<String, Object>> sql1Datas = DbConnection.getInstance().runSqlStr(sql);
             if (sql1Datas != null && sql1Datas.size() > 0) {
                 return "待处理表中同一批次有重复的地址数据:" + sql1Datas;
-            }
+            }*/
+//            TODO 然后根据结果总表中的数据,全词匹配待查地址,包含的放到回匹表中,(sql执行)先略过
+//            String sql2 = "";
+//            TODO 不包含的要走V3接口逻辑,匹配到的数据分别放到结果总表和回匹表(走缓存)也就是全部走Only逻辑,然后把匹配到的数据放到结果表,没匹配到的数据放到回流表中
             String page = request.getParameter("page");
             String pageSize = request.getParameter("pageSize");
             AreaService.getInstance().selectLimitData(Integer.parseInt(page), Integer.parseInt(pageSize));

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

@@ -6,8 +6,11 @@ import com.skyversation.poiaddr.addquery.AddressQueryEngine;
 import com.skyversation.poiaddr.addquery.Constant;
 import com.skyversation.poiaddr.bean.*;
 import com.skyversation.poiaddr.config.DbConnection;
+import com.skyversation.poiaddr.service.impl.GrTableRepository;
+import com.skyversation.poiaddr.service.impl.PgTableRepository;
 import com.skyversation.poiaddr.service.impl.TAddressCallbackRepository;
 import com.skyversation.poiaddr.service.impl.YyszAddressRepository;
+import com.skyversation.poiaddr.util.MessageManage;
 import com.skyversation.poiaddr.util.ShanghaiAddressSplitUtil;
 import com.skyversation.poiaddr.util.SplitAddress;
 import com.skyversation.poiaddr.util.tasks.ScheduledTasks;
@@ -19,6 +22,8 @@ import org.locationtech.jts.io.ParseException;
 import org.locationtech.jts.io.WKTReader;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.io.ClassPathResource;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -39,6 +44,10 @@ public class AreaService {
 
     @Resource
     private TAddressCallbackRepository tAddressCallbackRepository;
+    @Resource
+    private GrTableRepository grTableRepository;
+    @Resource
+    private PgTableRepository pgTableRepository;
 
     public static AreaService getInstance() {
         if (instance == null) {
@@ -217,13 +226,13 @@ public class AreaService {
             if (item.getAddress() != null && StringUtils.hasText(item.getAddress())) {
                 SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(item.getAddress());
                 putAllDmdzData(splitAddress.getAddr(), item);
-                if(item.getSourceaddress() != null&& StringUtils.hasText(item.getSourceaddress())){
+                if (item.getSourceaddress() != null && StringUtils.hasText(item.getSourceaddress())) {
                     SplitAddress splitAddress2 = ShanghaiAddressSplitUtil.splitBestAddress(item.getSourceaddress());
-                    if(!splitAddress.getAddr().equals(splitAddress2.getAddr())){
+                    if (!splitAddress.getAddr().equals(splitAddress2.getAddr())) {
                         putAllDmdzData(splitAddress2.getAddr(), item);
                     }
                 }
-            }else if (item.getSourceaddress() != null && StringUtils.hasText(item.getSourceaddress())) {
+            } else if (item.getSourceaddress() != null && StringUtils.hasText(item.getSourceaddress())) {
                 SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(item.getSourceaddress());
                 putAllDmdzData(splitAddress.getAddr(), item);
             }
@@ -246,8 +255,60 @@ public class AreaService {
         try {
             long startTime = System.currentTimeMillis();
             loginfoMap.put("startTime", startTime);
-            System.out.println("数据库查询page:" + page + ",pageSize:" + pageSize + "完成,用时:" + (System.currentTimeMillis() - startTime) / 1000 + "秒!");
-//            TODO 要使用JDBC的方式去查询待处理表的数据,然后有个sql需要执行一下,筛选出结果表中不存在的数据,然后进行下一步处理。
+//          分页查询中间表数据
+            List<PendingGovernanceIntermediateTable> dataList = pgTableRepository.getAllgovernance_statusPage(pageSize);
+            List<GovernanceResultsTable> governanceResultsTables = new ArrayList<>();
+            System.out.println("page:" + page + ",pageSize:" + pageSize + ",共查询待处理表数据:" + dataList.size() + "条数据,用时:" + (System.currentTimeMillis() - startTime) + "毫秒");
+            int i = 0;
+            if (dataList.size() > 0) {
+                for (PendingGovernanceIntermediateTable item : dataList) {
+                    i++;
+                    System.out.print(">" + i);
+                    AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName_nw(item.getOriginalAddress());
+                    GovernanceResultsTable governanceResultsTable = new GovernanceResultsTable();
+                    governanceResultsTable.setOriginalAddress(item.getOriginalAddress());
+                    governanceResultsTable.setBatchNumber(item.getBatchNumber());
+                    governanceResultsTable.setDataTable(item.getDataTable());
+                    governanceResultsTable.setInData(new Date());
+                    governanceResultsTable.setDataTag(item.getDataTag());
+                    if (addressResult == null || addressResult.getData() == null || addressResult.getData().get(0) == null) {
+//                      自动的
+                        AreaService.getInstance().callBackErrorAddr(item.getOriginalAddress());
+                        governanceResultsTable.setMatchLevel("异常");
+                    } else {
+                        AddressResult.ContentBean contentBean = addressResult.getData().get(0);
+//                      然后把匹配到的数据放到结果表
+                        governanceResultsTable.setStandardAddress(contentBean.getStandAddr());
+                        governanceResultsTable.setAbbreviatedAddress(contentBean.getAddress());
+                        governanceResultsTable.setCity(contentBean.getPname());
+                        governanceResultsTable.setCounty(contentBean.getCityname());
+                        governanceResultsTable.setTown(contentBean.getAdname());
+                        governanceResultsTable.setCommunity(contentBean.getCommunity());
+                        governanceResultsTable.setLon(contentBean.getLon());
+                        governanceResultsTable.setLat(contentBean.getLat());
+                        governanceResultsTable.setMatchLevel(contentBean.getScore());
+                    }
+                    governanceResultsTables.add(governanceResultsTable);
+                    item.setGovernanceStatus(1L);
+                }
+                long startTime2 = System.currentTimeMillis();
+                pgTableRepository.saveAll(dataList);
+                long startTime3 = System.currentTimeMillis();
+                grTableRepository.saveAll(governanceResultsTables);
+                long endTime = System.currentTimeMillis();
+                loginfoMap.put("endTime", endTime);
+                String logStrMsg = "数据库查询待处理表page:" + page + ",pageSize:" + pageSize + ",处理数据条数:" + dataList.size() + "条,用时:" + (startTime2 - startTime) + "毫秒," +
+                        "更新状态用时" + (startTime3 - startTime2) / 1000 + "秒!" +
+                        "入库数据:" + governanceResultsTables.size() + "条,用时" + (endTime - startTime3) / 1000 + "秒!" +
+                        "总用时" + (endTime - startTime) / 1000 + "秒!";
+                loginfoMap.put("message", logStrMsg);
+                System.out.println(logStrMsg);
+//              TODO 要使用JDBC的方式去查询待处理表的数据,然后有个sql需要执行一下,筛选出结果表中不存在的数据,然后进行下一步处理。
+                if (dataList.size() >= pageSize) {
+                    page++;
+                    selectLimitData(page, pageSize);
+                }
+            }
         } catch (Exception e) {
             e.printStackTrace();
             loginfoMap.put("endTime", System.currentTimeMillis());
@@ -295,10 +356,10 @@ public class AreaService {
      * @param addrStr
      */
     public void callBackErrorAddr(String addrStr) {
-        System.out.println("尝试回流无结果数据:" + addrStr);
+//        System.out.println("尝试回流无结果数据:" + addrStr);
         SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addrStr);
         if (splitAddress.getStatus() == 3 || splitAddress.getStatus() == -1) {
-            System.out.println("拒绝回流,检测到非地址");
+//            System.out.println("拒绝回流,检测到非地址");
             return;
         } else {
             //      查询回流列表中是否存在
@@ -307,9 +368,9 @@ public class AreaService {
                 tAddressCallback.setSearchAddress(addrStr);
                 ScheduledTasks.callBackDatas.add(tAddressCallback);
                 ScheduledTasks.callBackAllErrorAddrs.add(addrStr);
-                System.out.println("回流成功,等待进一检查处理");
+//                System.out.println("回流成功,等待进一检查处理");
             } else {
-                System.out.println("回流列表中已存在该数据!");
+//                System.out.println("回流列表中已存在该数据!");
             }
         }
     }

+ 17 - 0
src/main/java/com/skyversation/poiaddr/service/impl/GrTableRepository.java

@@ -0,0 +1,17 @@
+package com.skyversation.poiaddr.service.impl;
+
+import com.skyversation.poiaddr.bean.GovernanceResultsTable;
+import com.skyversation.poiaddr.bean.YyskDmdzAddressStandardization;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+//结果表操作
+@Resource
+public interface GrTableRepository extends JpaRepository<GovernanceResultsTable, String> {
+    @Query(value = "SELECT * FROM yysk_dmdz_address_standardization where oid >:oid order by oid limit :pageSize", nativeQuery = true)
+    List<YyskDmdzAddressStandardization> getAllByOidPage(@Param("oid") int oid,@Param("pageSize") int pageSize);
+}

+ 16 - 0
src/main/java/com/skyversation/poiaddr/service/impl/PgTableRepository.java

@@ -0,0 +1,16 @@
+package com.skyversation.poiaddr.service.impl;
+
+import com.skyversation.poiaddr.bean.PendingGovernanceIntermediateTable;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+//治理中间表(有查询、更新、删除)
+@Resource
+public interface PgTableRepository extends JpaRepository<PendingGovernanceIntermediateTable, String> {
+    @Query(value = "SELECT * FROM pending_governance_table where governance_status = 0 limit :pageSize", nativeQuery = true)
+    List<PendingGovernanceIntermediateTable> getAllgovernance_statusPage(@Param("pageSize") int pageSize);
+}

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

@@ -33,6 +33,6 @@ public interface YyszAddressRepository extends JpaRepository<YyskDmdzAddressStan
             "LIMIT 20;", nativeQuery = true)
     List<YyskDmdzAddressStandardization> getNearbySearch(@Param("lat") double lat, @Param("lon") double lon, @Param("radius") int radius);
 
-    @Query(value = "SELECT oid,sourceaddress,address,lon,lat FROM yysk_dmdz_address_standardization where oid >:oid order by oid limit :pageSize", nativeQuery = true)
+    @Query(value = "SELECT * FROM yysk_dmdz_address_standardization where oid >:oid order by oid limit :pageSize", nativeQuery = true)
     List<YyskDmdzAddressStandardization> getAllByOidPage(@Param("oid") int oid,@Param("pageSize") int pageSize);
 }

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

@@ -466,7 +466,7 @@ public class ShanghaiAddressSplitUtil {
     }
     public static void main(String[] args) throws Exception {
         new ShanghaiAddressSplitUtil().init();
-        System.out.println(splitBestAddress("上海市松江区工业区工业区打铁浜村"));
+        System.out.println(splitBestAddress("湖南省新照县陈家坊镇双江村9组8号"));
 //        System.out.println(splitBestAddress("新胜路88、98号3号厂房"));
 //        System.out.println(splitBestAddress("新胜路88-98号3号厂房"));
 //        System.out.println(splitBestAddress("新胜路、98号3号厂房"));

+ 8 - 8
src/main/java/com/skyversation/poiaddr/util/tasks/ScheduledTasks.java

@@ -66,9 +66,9 @@ public class ScheduledTasks {
      */
 //    暂存待入库的回流表数据
     public static List<TAddressCallback> callBackDatas = new ArrayList<>();
-//    TODO 缓存所有回流表中的地址,
+    //    TODO 缓存所有回流表中的地址,
     public static List<String> callBackAllErrorAddrs = new ArrayList<>();
-//      暂存的所有地址库中的数据
+    //      暂存的所有地址库中的数据
     public static Map<String, List<YyskDmdzAddressStandardization>> allDmdzData = new HashMap<>();
 
     @Resource
@@ -78,7 +78,7 @@ public class ScheduledTasks {
     /**
      * 每5分钟请求一次数据库,防止jdbc断开链接
      */
-    @Scheduled(cron = "15 */5 * * * *")
+//    @Scheduled(cron = "15 */5 * * * *")
     public void setCallBackAddrs1() {
         try {
             System.out.println(DbConnection.getInstance().runSqlStr("select count(*) from t_address_callback"));
@@ -126,7 +126,7 @@ public class ScheduledTasks {
             List<TAddressCallback> tAddressCallbacks = AreaService.getInstance().getCallbackDataByTag(0);
 //          然后调用市中心接口
             for (TAddressCallback item : tAddressCallbacks) {
-                try{
+                try {
                     if (item.getSearchAddress() != null && item.getSearchAddress().length() > 2) {
                         String addr = item.getSearchAddress();
                         AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName_nw(addr);
@@ -140,7 +140,8 @@ public class ScheduledTasks {
                             }
                         }
                         if (contentBean != null && contentBean.getLon() != null) {
-                            AddressQueryEngine.getInstance().getCjWgWgwByLoc(addressResult);
+                            SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addr);
+                            AddressQueryEngine.getInstance().getCjWgWgwByLoc(addressResult, splitAddress);
                             item.setLat(contentBean.getLat().toString());
                             item.setLon(contentBean.getLon().toString());
                             item.setPname(contentBean.getPname());
@@ -148,7 +149,6 @@ public class ScheduledTasks {
                             item.setStreetTownName(contentBean.getAdname());
                             item.setCommunity(contentBean.getCommunity());
                             item.setStandardAddress(contentBean.getStandAddr());
-                            SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addr);
                             if (!StringUtils.hasText(contentBean.getPname())) {
                                 contentBean.setPname(splitAddress.getCity());
                             }
@@ -160,11 +160,11 @@ public class ScheduledTasks {
                             item.setStandardAddress(contentBean.getPname() + contentBean.getCityname() +
                                     contentBean.getAdname() + contentBean.getCommunity() + splitAddress.getAddr());
                             item.setStatusTag(2);
-                        }else{
+                        } else {
                             item.setStatusTag(1);
                         }
                     }
-                }catch (Exception e){
+                } catch (Exception e) {
                     e.printStackTrace();
                 }
             }