105 lines
3.8 KiB
Java
105 lines
3.8 KiB
Java
package com.xkrs.straw.helper;
|
||
|
||
import com.xkrs.straw.model.vo.GaoDeIgGeocodeVo;
|
||
import com.xkrs.straw.service.impl.DispatchFirePointServiceImpl;
|
||
import com.xkrs.utils.GaoDeApiUtil;
|
||
import org.apache.hc.core5.util.TextUtils;
|
||
import org.slf4j.Logger;
|
||
import org.slf4j.LoggerFactory;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
|
||
public class GeoCodeHelper {
|
||
|
||
public static Logger log = LoggerFactory.getLogger(DispatchFirePointServiceImpl.class);
|
||
private GaoDeIgGeocodeVo geocode;
|
||
|
||
public void doGeoCode(Double longitude, Double latitude) {
|
||
try {
|
||
List<String> locationList = new ArrayList<>();
|
||
locationList.add(longitude + "," + latitude);
|
||
this.geocode = GaoDeApiUtil.geocode(locationList);
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
this.geocode = null;
|
||
}
|
||
}
|
||
|
||
public String getCalCountyCode() {
|
||
try {
|
||
GaoDeIgGeocodeVo.Regeocode reGeoCode = geocode.getRegeocodes().get(0);
|
||
GaoDeIgGeocodeVo.AddressComponent addressComponent = reGeoCode.getAddressComponent().get(0);
|
||
return addressComponent.getAdcode();
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return "";
|
||
}
|
||
|
||
public String getCalCountyName() {
|
||
try {
|
||
GaoDeIgGeocodeVo.Regeocode reGeoCode = geocode.getRegeocodes().get(0);
|
||
GaoDeIgGeocodeVo.AddressComponent addressComponent = reGeoCode.getAddressComponent().get(0);
|
||
return addressComponent.getDistrict();
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return "";
|
||
}
|
||
|
||
public String getCalTownCode() {
|
||
try {
|
||
GaoDeIgGeocodeVo.Regeocode reGeoCode = geocode.getRegeocodes().get(0);
|
||
GaoDeIgGeocodeVo.AddressComponent addressComponent = reGeoCode.getAddressComponent().get(0);
|
||
String townCode = addressComponent.getTowncode();
|
||
return townCode.length() > 9 ? townCode.substring(0, 9) : townCode;
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return "";
|
||
}
|
||
|
||
public String getCalTownName() {
|
||
try {
|
||
GaoDeIgGeocodeVo.Regeocode reGeoCode = geocode.getRegeocodes().get(0);
|
||
GaoDeIgGeocodeVo.AddressComponent addressComponent = reGeoCode.getAddressComponent().get(0);
|
||
return addressComponent.getTownship();
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return "";
|
||
}
|
||
|
||
public String getCalFirePointAddress() {
|
||
try {
|
||
GaoDeIgGeocodeVo.Regeocode reGeoCode = geocode.getRegeocodes().get(0);
|
||
return reGeoCode.getFormatted_address();
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return "";
|
||
}
|
||
|
||
public boolean checkGeoCodeResult(String receivedCountyCode, String receivedCountyName, String receivedTownCode) {
|
||
String calCountyCode = getCalCountyCode();
|
||
String calCountyName = getCalCountyName();
|
||
String calTownCode = getCalTownCode();
|
||
if (!calCountyCode.equals(receivedCountyCode)) {
|
||
log.info("-------逆地理编码校验失败:接收到的countyCode=" + receivedCountyCode + ",计算得到的countyCode=" + calCountyCode);
|
||
return false;
|
||
}
|
||
if (!calCountyName.equals(receivedCountyName)) {
|
||
log.info("-------逆地理编码校验失败:接收到的countyName=" + receivedCountyName + ",计算得到的countyName=" + calCountyName);
|
||
return false;
|
||
}
|
||
if (!TextUtils.isEmpty(receivedTownCode)) {
|
||
if (!calTownCode.equals(receivedTownCode)) {
|
||
log.info("-------逆地理编码校验失败:接收到的townCode=" + receivedTownCode + ",计算得到的townCode=" + calTownCode);
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
}
|