|
@@ -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("回流列表中已存在该数据!");
|
|
|
}
|
|
|
}
|
|
|
}
|