fire_point/src/main/java/com/xkrs/straw/helper/GeoCodeHelper.java
2023-03-08 11:14:19 +08:00

105 lines
3.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}