puzhibing
2026-03-03 3a5fc9e4c43a682a98ca1beabb6c8309b4ca6d01
合并代码
4个文件已修改
80 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/vehicleConvoy/BaseVehicleUserDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpElectronicFenceServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>()