|
@@ -185,13 +185,6 @@ public class AreaService {
|
|
|
|
|
|
public void putAllDmdzData(String addr, YyskDmdzAddressStandardization item) {
|
|
|
if (StringUtils.hasText(addr)) {
|
|
|
- if (addr.contains("号")) {
|
|
|
- addr = addr.substring(0, addr.indexOf("号"));
|
|
|
- }
|
|
|
- if (addr.contains("弄")) {
|
|
|
- addr = addr.substring(0, addr.indexOf("弄"));
|
|
|
- }
|
|
|
- addr = addr.replaceAll("(?<=[^\\d])\\d+$", "");
|
|
|
if (!ScheduledTasks.allDmdzData.containsKey(addr)) {
|
|
|
List<YyskDmdzAddressStandardization> datas = new ArrayList<>();
|
|
|
datas.add(item);
|
|
@@ -336,21 +329,6 @@ public class AreaService {
|
|
|
e.printStackTrace();
|
|
|
System.out.println("数据回流异常:" + e);
|
|
|
}
|
|
|
-// TODO sql
|
|
|
- /*StringBuilder sql = new StringBuilder("insert into t_address_callback (id,create_time,address,name,provice_name,city_name,town_name,community_name,status,process_status,is_new) values ");
|
|
|
- for (String addr : ScheduledTasks.callBackAddrs) {
|
|
|
- SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addr);
|
|
|
- ScheduledTasks.callBackMaxId++;
|
|
|
- sql.append("(").append(ScheduledTasks.callBackMaxId).append(1).append(",'").append(ScheduledTasks.getCurrentDateTime()).append("','").append(addr).append("','").append(splitAddress.getAddr()).append("','").append(splitAddress.getProvince()).append("','").append(splitAddress.getCity()).append("','").append(splitAddress.getStreet()).append("','").append(splitAddress.getCommunity()).append("',").append(0).append(",").append(0).append(",").append(1).append(") ,");
|
|
|
- }
|
|
|
- try {
|
|
|
- DbConnection.getInstance().updateSql(sql.substring(0, sql.toString().length() - 2));
|
|
|
- ScheduledTasks.callBackAddrs.clear();
|
|
|
- System.out.println("数据回流成功");
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- System.out.println("数据回流异常:" + e);
|
|
|
- }*/
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -370,165 +348,45 @@ public class AreaService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 数据库查询 尝试给出推荐结果
|
|
|
- *
|
|
|
- * @param splitAddress
|
|
|
- * @return
|
|
|
- */
|
|
|
- /*public List<Address> getRecommendAddress(SplitAddress splitAddress) {
|
|
|
- if (splitAddress.getCity() == null) {
|
|
|
- splitAddress.setCity("");
|
|
|
- }
|
|
|
- if (splitAddress.getDistrict() == null) {
|
|
|
- splitAddress.setDistrict("");
|
|
|
- }
|
|
|
- if (splitAddress.getStreet() == null) {
|
|
|
- splitAddress.setStreet("");
|
|
|
- }
|
|
|
- if (splitAddress.getCommunity() == null) {
|
|
|
- splitAddress.setCommunity("");
|
|
|
- }
|
|
|
- String sql = "select * from " + Constant.getSearchTableName() + " WHERE city like '%" + splitAddress.getCity() + "%' " +
|
|
|
- "and county like '%" + splitAddress.getDistrict() + "%' and town like '%" + splitAddress.getStreet() + "%' " +
|
|
|
- "and community like '%" + splitAddress.getCommunity() + "%' order by updatetime desc LIMIT 20";
|
|
|
- try {
|
|
|
- return odsToAddr(DbConnection.getInstance().runSqlStr(sql));
|
|
|
- } catch (Exception e) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- }*/
|
|
|
-
|
|
|
- // 进行数据库查询
|
|
|
- /*public List<Address> getAddressPoisByAddr(SplitAddress splitAddress) {
|
|
|
- if (splitAddress.getAddr().contains("号")) {
|
|
|
- splitAddress.setSearchAddr(splitAddress.getAddr().substring(0, splitAddress.getAddr().lastIndexOf("号")));
|
|
|
- }
|
|
|
- if (splitAddress.getAddr().contains("弄")) {
|
|
|
- splitAddress.setSearchAddr(splitAddress.getAddr().substring(0, splitAddress.getAddr().lastIndexOf("弄")));
|
|
|
- }
|
|
|
-
|
|
|
- if (splitAddress.getSearchAddr() == null) {
|
|
|
- splitAddress.setSearchAddr(splitAddress.getAddr());
|
|
|
- }
|
|
|
-
|
|
|
- List<Address> list = null;
|
|
|
- if (StringUtils.hasText(splitAddress.getDistrict())) {
|
|
|
- String sql = "select * from " + Constant.getSearchTableName() + " WHERE county like '%" + splitAddress.getDistrict() + "%' " +
|
|
|
- "and (sourceaddress like '%" + splitAddress.getSearchAddr() + "%' or address like '%" + splitAddress.getSearchAddr() + "%') order by updatetime desc LIMIT 20";
|
|
|
- try {
|
|
|
- list = odsToAddr(DbConnection.getInstance().runSqlStr(sql));
|
|
|
- } catch (Exception e) {
|
|
|
- list = null;
|
|
|
- }
|
|
|
- }
|
|
|
- if (list == null) {
|
|
|
- String sql = "select * from " + Constant.getSearchTableName() + " WHERE sourceaddress like '%" + splitAddress.getSearchAddr() + "%' or address like '%" + splitAddress.getSearchAddr() + "%' order by updatetime desc LIMIT 20";
|
|
|
- try {
|
|
|
- list = odsToAddr(DbConnection.getInstance().runSqlStr(sql));
|
|
|
- } catch (Exception e) {
|
|
|
- list = null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return list;
|
|
|
- }*/
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据地址关键字查询数据库结果
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- /*public List<Address> getAddressPoiOnlyDB(String addr) {
|
|
|
- try {
|
|
|
- return odsToAddr(DbConnection.getInstance().runSqlStr("select * from " + Constant.getSearchTableName() + " WHERE sourceaddress LIKE '%" + addr + "%' or address LIKE '%" + addr + "%' order by updatetime desc LIMIT 20"));
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return null;
|
|
|
- }*/
|
|
|
- public List<YyskDmdzAddressStandardization> getAddressPoisByAddr(SplitAddress splitAddress) {
|
|
|
- if (splitAddress.getAddr().contains("号")) {
|
|
|
- splitAddress.setSearchAddr(splitAddress.getAddr().substring(0, splitAddress.getAddr().indexOf("号")));
|
|
|
- }
|
|
|
-
|
|
|
- if (splitAddress.getAddr().contains("弄")) {
|
|
|
- splitAddress.setSearchAddr(splitAddress.getAddr().substring(0, splitAddress.getAddr().indexOf("弄")));
|
|
|
- }
|
|
|
-
|
|
|
- if (splitAddress.getSearchAddr() == null) {
|
|
|
- splitAddress.setSearchAddr(splitAddress.getAddr().replaceAll("(?<=[^\\d])\\d+$", ""));
|
|
|
- }
|
|
|
-
|
|
|
- List<YyskDmdzAddressStandardization> list = new ArrayList<>();
|
|
|
- if (StringUtils.hasText(splitAddress.getDistrict())) {
|
|
|
-// TODO 数据库查询逻辑调整为内存处理的方式
|
|
|
- List<YyskDmdzAddressStandardization> dmdzList = new ArrayList<>();
|
|
|
- if (ScheduledTasks.allDmdzData.containsKey(splitAddress.getSearchAddr())) {
|
|
|
- dmdzList = ScheduledTasks.allDmdzData.get(splitAddress.getSearchAddr());
|
|
|
- } else {
|
|
|
- for (String key : ScheduledTasks.allDmdzData.keySet()) {
|
|
|
- if (key.contains(splitAddress.getSearchAddr())) {
|
|
|
- dmdzList = ScheduledTasks.allDmdzData.get(key);
|
|
|
+ public List<YyskDmdzAddressStandardization> getAddressPoiOnlyDB(SplitAddress splitAddress) {
|
|
|
+// TODO 数据库查询逻辑调整为内存处理的方式
|
|
|
+ String addr = splitAddress.getSearchAddr();
|
|
|
+ List<YyskDmdzAddressStandardization> returnDatas = new ArrayList<>();
|
|
|
+ for (String key : ScheduledTasks.allDmdzData.keySet()) {
|
|
|
+ if (key != null && addr != null && returnDatas.size() < 20) {
|
|
|
+ if (key.contains(addr)) {
|
|
|
+ returnDatas.addAll(ScheduledTasks.allDmdzData.get(key));
|
|
|
+ } else {
|
|
|
+ String addr2 = addr + "";
|
|
|
+ if (addr2.contains("号")) {
|
|
|
+ addr2 = addr2.substring(0, addr2.indexOf("号"));
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- for (YyskDmdzAddressStandardization item : dmdzList) {
|
|
|
- if (item.getCounty().contains(splitAddress.getDistrict())) {
|
|
|
- if (list.size() < 20) {
|
|
|
- list.add(item);
|
|
|
+ if (addr2.contains("弄")) {
|
|
|
+ addr2 = addr2.substring(0, addr2.indexOf("弄"));
|
|
|
+ }
|
|
|
+ if (key.contains(addr2)) {
|
|
|
+ returnDatas.addAll(ScheduledTasks.allDmdzData.get(key));
|
|
|
} else {
|
|
|
- break;
|
|
|
+ addr2 = addr2.replaceAll("(?<=[^\\d])\\d+$", "");
|
|
|
+ if (key.contains(addr2)) {
|
|
|
+ returnDatas.addAll(ScheduledTasks.allDmdzData.get(key));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ break;
|
|
|
}
|
|
|
-// TODO 数据库查询的方式
|
|
|
-// list = yyszAddressRepository.getAddressPoisByAddrAQX(splitAddress.getDistrict(), splitAddress.getSearchAddr());
|
|
|
- }
|
|
|
- if (list.size() == 0) {
|
|
|
- list = getAddressPoiOnlyDB(splitAddress.getSearchAddr());
|
|
|
- }
|
|
|
- return list;
|
|
|
- }
|
|
|
-
|
|
|
- public List<YyskDmdzAddressStandardization> getAddressPoiOnlyDB(String addr) {
|
|
|
-// TODO 数据库查询逻辑调整为内存处理的方式
|
|
|
- if (addr.contains("号")) {
|
|
|
- addr = addr.substring(0, addr.indexOf("号"));
|
|
|
- }
|
|
|
- if (addr.contains("弄")) {
|
|
|
- addr = addr.substring(0, addr.indexOf("弄"));
|
|
|
}
|
|
|
- addr = addr.replaceAll("(?<=[^\\d])\\d+$", "");
|
|
|
- List<YyskDmdzAddressStandardization> returnDatas = new ArrayList<>();
|
|
|
- if (ScheduledTasks.allDmdzData.containsKey(addr)) {
|
|
|
- returnDatas = ScheduledTasks.allDmdzData.get(addr);
|
|
|
- } else {
|
|
|
- for (String key : ScheduledTasks.allDmdzData.keySet()) {
|
|
|
- if (key.contains(addr)) {
|
|
|
- returnDatas = ScheduledTasks.allDmdzData.get(key);
|
|
|
+// 对于区的精准查询
|
|
|
+ List<YyskDmdzAddressStandardization> returnDatas2 = new ArrayList<>();
|
|
|
+ if (StringUtils.hasText(splitAddress.getDistrict())) {
|
|
|
+ for (YyskDmdzAddressStandardization item : returnDatas) {
|
|
|
+ if (item != null && item.getCounty() != null && item.getCounty().contains(splitAddress.getDistrict())) {
|
|
|
+ returnDatas2.add(item);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- return returnDatas;
|
|
|
-// TODO 数据库查询的方式
|
|
|
-// return yyszAddressRepository.getAddressPoisByAddr(addr);
|
|
|
- }
|
|
|
-
|
|
|
- public List<YyskDmdzAddressStandardization> getRecommendAddress(SplitAddress splitAddress) {
|
|
|
- if (splitAddress.getCity() == null) {
|
|
|
- splitAddress.setCity("");
|
|
|
- }
|
|
|
- if (splitAddress.getDistrict() == null) {
|
|
|
- splitAddress.setDistrict("");
|
|
|
- }
|
|
|
- if (splitAddress.getStreet() == null) {
|
|
|
- splitAddress.setStreet("");
|
|
|
- }
|
|
|
- if (splitAddress.getCommunity() == null) {
|
|
|
- splitAddress.setCommunity("");
|
|
|
- }
|
|
|
- return yyszAddressRepository.getAddressPoisByDivisions(splitAddress.getCity(), splitAddress.getDistrict(), splitAddress.getStreet(), splitAddress.getCommunity());
|
|
|
+ return returnDatas2;
|
|
|
}
|
|
|
|
|
|
public List<TAddressCallback> getCallbackDataByTag(Integer tag) {
|
|
@@ -539,15 +397,6 @@ public class AreaService {
|
|
|
return tAddressCallbackRepository.saveAll(datas);
|
|
|
}
|
|
|
|
|
|
- public List<Map<String, Object>> getUniScDatas() {
|
|
|
- try {
|
|
|
- return DbConnection.getInstance().runSqlStr("select * from songjiang_uni_sc_id_v1"); // where real_address is not null and street_town_name is null
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
public static List<Address> odsToAddr(List<Map<String, Object>> datas) {
|
|
|
if (datas == null || datas.size() == 0) {
|
|
|
return null;
|