|
@@ -36,6 +36,71 @@ public class CorporateLibraryController {
|
|
|
@Resource
|
|
|
private YyskAddressStandardizationServiceImpl yyskAddressStandardizationService;
|
|
|
|
|
|
+ // 手动添加回流地址
|
|
|
+ @RequestMapping(value = "/addCallBackAddress")
|
|
|
+ public String addCallBackAddress(HttpServletRequest request) {
|
|
|
+ String address = request.getParameter("address");
|
|
|
+ if (!StringUtils.hasText(address)) {
|
|
|
+ return MessageManage.getInstance().getResultContent(Constant.PARAM_ERROR, "参数错误", "参数错误");
|
|
|
+ }
|
|
|
+ AreaService.getInstance().callBackErrorAddr(address);
|
|
|
+ return MessageManage.getInstance().getResultContent(Constant.SUCCESS, "地址" + address + "写入回流表", "成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 手动更新是否检查结果经纬度状态
|
|
|
+ @RequestMapping(value = "/changeIfOpenLonLatStatus")
|
|
|
+ public String changeIfOpenLonLatStatus(HttpServletRequest request) {
|
|
|
+ String status = request.getParameter("status");
|
|
|
+ if (status.contains("true")) {
|
|
|
+ ScheduledTasks.ifOpenLonLatStatus = true;
|
|
|
+ } else {
|
|
|
+ ScheduledTasks.ifOpenLonLatStatus = false;
|
|
|
+ }
|
|
|
+ return MessageManage.getInstance().getResultContent(Constant.SUCCESS, "状态已更新为:" + ScheduledTasks.ifOpenLonLatStatus, "成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 数据清洗:
|
|
|
+ * 首先遍历缓存中的所有地址,然后得到经纬度,如果经纬度得到的区划和街镇和字段中的区划和街镇不一致或者和地址中的区划和街镇(优先以地址中的区划和街镇为准)不一致,先修改数据库中对应的数据状态
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/dmdzAddressClear")
|
|
|
+ public String dmdzAddressClear() {
|
|
|
+ long sum = 0L;
|
|
|
+ for (String addressStr : ScheduledTasks.allDmdzData.keySet()) {
|
|
|
+ List<YyskDmdzAddressStandardization> updateDatas = new ArrayList<>();
|
|
|
+ List<YyskDmdzAddressStandardization> yyskDmdzAddressStandardizations = ScheduledTasks.allDmdzData.get(addressStr);
|
|
|
+ for (YyskDmdzAddressStandardization item : yyskDmdzAddressStandardizations) {
|
|
|
+ String address = item.getSourceaddress();
|
|
|
+ SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(address);
|
|
|
+ try {
|
|
|
+ String xzqh = StringUtils.hasText(splitAddress.getCity()) ? splitAddress.getCity() : item.getCounty();
|
|
|
+ String town = StringUtils.hasText(splitAddress.getStreet()) ? splitAddress.getStreet() : item.getTown();
|
|
|
+// 得到经纬度,落点判断是否是这个区划和街道,不属于的话
|
|
|
+ Float lon = item.getLon();
|
|
|
+ Float lat = item.getLat();
|
|
|
+ Double lonDb = Double.parseDouble(lon.toString());
|
|
|
+ Double latDb = Double.parseDouble(lat.toString());
|
|
|
+ GeoJsonBean cjBean = AreaService.getInstance().isInResidentialCommitteePolygon(lonDb, latDb);
|
|
|
+ if (cjBean != null && cjBean.getProperties() != null && (!cjBean.getProperties().getString("所属区").contains(xzqh) || !cjBean.getProperties().getString("所属街").contains(town))) {
|
|
|
+ item.setType("zl_lonLatErr");
|
|
|
+ sum++;
|
|
|
+ updateDatas.add(item);
|
|
|
+ AreaService.getInstance().callBackErrorAddr(item.getSourceaddress());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (updateDatas.size() > 0) {
|
|
|
+// 更新数据
|
|
|
+ AreaService.getInstance().updateYyszAddressRepository(updateDatas);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return MessageManage.getInstance().getResultContent(Constant.SUCCESS, "清洗了经纬度错误的地址" + sum + "条", "成功");
|
|
|
+ }
|
|
|
+
|
|
|
// 地址查询
|
|
|
@RequestMapping(value = "/searchByName")
|
|
|
public String searchByName(HttpServletRequest request) {
|
|
@@ -46,7 +111,7 @@ public class CorporateLibraryController {
|
|
|
// 数据库查询
|
|
|
SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(address);
|
|
|
String district = request.getParameter("district");
|
|
|
- if(StringUtils.hasText(district)){
|
|
|
+ if (StringUtils.hasText(district)) {
|
|
|
splitAddress.setDistrict(district);
|
|
|
}
|
|
|
List<YyskDmdzAddressStandardization> list = AreaService.getInstance().getAddressPoiOnlyDB(splitAddress);
|
|
@@ -101,7 +166,11 @@ public class CorporateLibraryController {
|
|
|
return MessageManage.getInstance().getResultContent(Constant.PARAM_ERROR, "参数错误", "参数错误");
|
|
|
}
|
|
|
AddressResult addressResult = AddressQueryEngine.getInstance().commonSearchByName_nw(address);
|
|
|
- if (addressResult == null || addressResult.getData() == null || addressResult.getData().get(0) == null) {
|
|
|
+ if (addressResult == null && addressResult.getData() == null && addressResult.getData().get(0) == null) {
|
|
|
+// TODO 添加逻辑,数据相对有效性判断,默认关闭
|
|
|
+ if (ScheduledTasks.ifOpenLonLatStatus) {
|
|
|
+ AddressTools.ifTrueAddressByBeans(addressResult.getData().get(0));
|
|
|
+ }
|
|
|
AreaService.getInstance().callBackErrorAddr(address);
|
|
|
return MessageManage.getInstance().getResultContent(Constant.NO_DATA, "无数据", "无数据");
|
|
|
} else {
|