xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/vehicleConvoy/BaseVehicleUserDto.java
@@ -6,7 +6,7 @@ @Data public class BaseVehicleUserDto { /** * 状态码 * 状态码 0成功 */ private Integer code; /** xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
@@ -26,6 +26,7 @@ import com.xiaopeng.map.mapper.XpPointMapper; import com.xiaopeng.map.mapper.XpRegionMapper; import com.xiaopeng.map.service.XpElectronicFenceService; import com.xiaopeng.map.utils.GDMapGeocodingUtil; import com.xiaopeng.map.utils.PolygonOverlapService; import lombok.extern.slf4j.Slf4j; import net.sourceforge.pinyin4j.PinyinHelper; @@ -66,6 +67,8 @@ private XpPointMapper xpPointMapper; @Autowired private XpRegionMapper xpRegionMapper; @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; @Override public PageInfo<XpElectronicFence> pageList(ElectronicPageListQuery query) { @@ -155,6 +158,16 @@ } } } //根据经纬度获取当前城市code XpElectronicFenceArea xpElectronicFenceArea = dto.getElectronicFenceAreas().get(0); String[] split = xpElectronicFenceArea.getFencePoints().split(",")[0].split("_"); Map<String, String> geocode = gdMapGeocodingUtil.geocode(split[0], split[1]); if(null == geocode){ return R.fail("经纬度转换城市code失败"); } String cityCode = geocode.get("cityCode"); dto.setCityCode(cityCode); xpElectronicFence.setCityCode(dto.getCityCode()); // 生成围栏id 规则:城市首字母-类型简写-4位自增流水号(如 SZ-OP-001),支持复制;数据停用或删除后,流水号不回收 XpRegion xpRegion = xpRegionMapper.selectOne(new LambdaQueryWrapper<XpRegion>() @@ -363,6 +376,15 @@ } } } //根据经纬度获取当前城市code XpElectronicFenceArea electronicFenceArea = dto.getElectronicFenceAreas().get(0); String[] split = electronicFenceArea.getFencePoints().split(",")[0].split("_"); Map<String, String> geocode = gdMapGeocodingUtil.geocode(split[0], split[1]); if(null == geocode){ return R.fail("经纬度转换城市code失败"); } String cityCode = geocode.get("cityCode"); dto.setCityCode(cityCode); xpElectronicFence.setCityCode(dto.getCityCode()); this.updateById(xpElectronicFence); xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
@@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; /** * 高德地图的地理编码工具类 @@ -121,4 +122,37 @@ return jsonObject.getString("data"); } /** * 根据经纬度获取行政区域信息 * @param lon * @param lan * @return * @throws Exception */ public Map<String, String> geocode(String lon, String lan) { String url = "https://restapi.amap.com/v3/geocode/regeo?key=" + key + "&location=" + lon + "," + lan; String forObject = HttpUtils.sendGet(url); JSONObject jsonObject = JSON.parseObject(forObject); Map<String, String> map = new HashMap<>(); if(jsonObject.getString("status").equals("1")){ JSONObject regeocode = jsonObject.getJSONObject("regeocode"); JSONObject addressComponent = regeocode.getJSONObject("addressComponent"); String address = regeocode.getString("formatted_address"); map.put("address", address); String code = addressComponent.getString("adcode"); String province = addressComponent.getString("province"); String city = addressComponent.getString("city"); String district = addressComponent.getString("district"); map.put("province", province); map.put("provinceCode", code.substring(0, 2) + "0000"); map.put("city", city); map.put("cityCode", code.substring(0, 4) + "00"); map.put("district", district); map.put("districtCode", code); } return map; } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java
@@ -28,6 +28,7 @@ import com.xiaopeng.operation.mapper.XpPointMapper; import com.xiaopeng.operation.mapper.XpRegionMapper; import com.xiaopeng.operation.service.IXpElectronicFenceService; import com.xiaopeng.operation.utils.GDMapGeocodingUtil; import com.xiaopeng.operation.utils.PolygonOverlapService; import lombok.extern.slf4j.Slf4j; import net.sourceforge.pinyin4j.PinyinHelper; @@ -67,6 +68,8 @@ private XpPointMapper xpPointMapper; @Autowired private XpRegionMapper xpRegionMapper; @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; @Override public PageInfo<XpElectronicFence> pageList(ElectronicPageListQuery query) { @@ -157,6 +160,15 @@ } } } //根据经纬度获取当前城市code XpElectronicFenceArea xpElectronicFenceArea = dto.getElectronicFenceAreas().get(0); String[] split = xpElectronicFenceArea.getFencePoints().split(",")[0].split("_"); Map<String, String> geocode = gdMapGeocodingUtil.geocode(split[0], split[1]); if(null == geocode){ return R.fail("经纬度转换城市code失败"); } String cityCode = geocode.get("cityCode"); dto.setCityCode(cityCode); xpElectronicFence.setCityCode(dto.getCityCode()); // 生成围栏id 规则:城市首字母-类型简写-4位自增流水号(如 SZ-OP-001),支持复制;数据停用或删除后,流水号不回收 XpRegion xpRegion = xpRegionMapper.selectOne(new LambdaQueryWrapper<XpRegion>() @@ -366,8 +378,16 @@ } } } //根据经纬度获取当前城市code XpElectronicFenceArea electronicFenceArea = dto.getElectronicFenceAreas().get(0); String[] split = electronicFenceArea.getFencePoints().split(",")[0].split("_"); Map<String, String> geocode = gdMapGeocodingUtil.geocode(split[0], split[1]); if(null == geocode){ return R.fail("经纬度转换城市code失败"); } String cityCode = geocode.get("cityCode"); dto.setCityCode(cityCode); xpElectronicFence.setCityCode(dto.getCityCode()); this.updateById(xpElectronicFence); // 删除旧的区域数据,然后保存新的区域数据 xpElectronicFenceAreaMapper.delete(new LambdaQueryWrapper<XpElectronicFenceArea>()