puzhibing
2026-03-11 4273c30be978ce667e2b9119a798fa64366a85a9
Merge remote-tracking branch 'origin/master'
1 文件已重命名
11个文件已修改
704 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/HotFixInfoVo.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/XpPricingController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java 650 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/constant/I18nKeyConstant.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/UnlockAppletDTO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/resources/i18n/messages_en_US.properties 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/resources/i18n/messages_zh_CN.properties 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/HotFixInfoVo.java
File was renamed from xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/vo/HotFixInfoVo.java
@@ -1,4 +1,4 @@
package com.xiaopeng.itinerary.vo;
package com.xiaopeng.api.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
@@ -17,10 +17,10 @@
    @ApiModelProperty("热修复开始时间" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date hotfixStartTime;
    private LocalDateTime hotfixStartTime;
    @ApiModelProperty("热修复结束时间" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date hotfixEndTime;
    private LocalDateTime hotfixEndTime;
}
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/XpPricingController.java
@@ -12,7 +12,7 @@
import com.xiaopeng.itinerary.dto.XpOrderDto;
import com.xiaopeng.itinerary.service.IXpGeoQueryEntityService;
import com.xiaopeng.itinerary.service.XpPricingService;
import com.xiaopeng.itinerary.vo.HotFixInfoVo;
import com.xiaopeng.api.vo.HotFixInfoVo;
import com.xiaopeng.itinerary.vo.SaveOrderVo;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
import io.swagger.annotations.Api;
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
@@ -3,9 +3,13 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.vo.HotFixInfoVo;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.operation.mapper.XpSystemSettingMapper;
import com.xiaopeng.api.model.operation.XpSystemSetting;
import com.xiaopeng.operation.service.XpSystemSettingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.cache.RedisCache;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -21,7 +25,8 @@
 */
@Service
public class XpSystemSettingServiceImpl extends ServiceImpl<XpSystemSettingMapper, XpSystemSetting> implements XpSystemSettingService {
    @Autowired
    private RedisService redisService;
    @Override
    public String getCustomerServicePhone() {
        XpSystemSetting xpSystemSetting = this.getOne(null);
@@ -57,5 +62,10 @@
        } else {
            save(xpSystemSetting);
        }
        //保存热修复信息到redis
        HotFixInfoVo hotFixInfoVo = new HotFixInfoVo();
        hotFixInfoVo.setHotfixStatus(xpSystemSetting.getHotfixStatus() == null ? 0 : xpSystemSetting.getHotfixStatus());
        hotFixInfoVo.setHotfixStartTime(xpSystemSetting.getHotfixStartTime());
        redisService.setCacheObject("HOT_FIX_INFO", hotFixInfoVo);
    }
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -2153,13 +2153,15 @@
            if (null != distance) {
                Double distance1 = distance.get("WGS84");
                if (distance1 > 50 && xpOrder.getStatus() == 6) {//大于50米表示在移动,且在服务中的时候记录里程
                    xpOrder.setMileageKilometers(BigDecimal.valueOf(xpOrder.getMileageKilometers()).add(new BigDecimal(distance1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                    xpOrder.setMileageKilometers(BigDecimal.valueOf(xpOrder.getMileageKilometers()).add(new BigDecimal(distance1).divide(new BigDecimal(1000)).setScale(4, RoundingMode.HALF_EVEN)).doubleValue());
                    xpOrder.setAppUserId(null);
                    this.updateById(xpOrder);
                    // 存储本次距离
                    orderTrajectory.setDistance(distance1);
                    // 存储mongo数据
                    mongoTemplate.save(orderTrajectory);
                    // 更新定位
                    redisService.setCacheObject(CacheConstants.ORDER_OLD_LOCATION + orderTrajectory.getOrderId(), orderTrajectory.getLocation());
                }
            } else {
                log.error("调用高德计算距离出错");
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaxiPricingDemoService.java
@@ -13,13 +13,13 @@
    public static void main(String[] args) {
        PricingConfig config = setupMockConfig();
//
        Calendar cal = Calendar.getInstance();
        cal.set(2026, Calendar.MARCH, 13, 14, 40, 15);
        cal.set(2026, Calendar.APRIL, 11, 15, 49, 15);
        Date orderTime = cal.getTime();
//
        // 模拟总里程 25.0 km,以触发多级远途加价
        double totalMillige = 7.874;
        double totalMillige = 9.148;
        // 模拟 GPS 轨迹点
        List<GpsPoint> points = createMockGpsPoints(orderTime);
@@ -33,6 +33,11 @@
        BigDecimal totalAmount = bill.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add);
        System.err.println("--------------------------");
        System.err.println("应付总额: " + totalAmount + " 元");
//        List<GpsPoint> mockGpsPoints = createMockGpsPoints(orderTime);
//        double sum = mockGpsPoints.stream().mapToDouble(GpsPoint::getDistance).sum();
//        System.err.println(sum);
    }
    public static class TaxiPricingService {
@@ -92,11 +97,11 @@
//                BigDecimal totalSeg = distFee.add(timeFee).add(longExtra);
                // 超出里程
                if (isOverBaseM) {
                    bill.put(activeRule.ruleName + "|"+activeRule.start + "-" + activeRule.end + "_Ml", bill.getOrDefault(activeRule.ruleName + activeRule.start + "-" + activeRule.end + "_Ml", BigDecimal.ZERO).add(segM));
                    bill.put(activeRule.ruleName + "|"+activeRule.start + "-" + activeRule.end + "_Ml", bill.getOrDefault(activeRule.ruleName + "|"+ activeRule.start + "-" + activeRule.end + "_Ml", BigDecimal.ZERO).add(segM));
                }
                // 超出时间
                if (isOverBaseMs) {
                    bill.put(activeRule.ruleName + "|"+activeRule.start + "-" + activeRule.end + "_Ms", bill.getOrDefault(activeRule.ruleName + activeRule.start + "-" + activeRule.end + "_Ms", BigDecimal.ZERO).add(segMs));
                    bill.put(activeRule.ruleName + "|"+activeRule.start + "-" + activeRule.end + "_Ms", bill.getOrDefault(activeRule.ruleName + "|" + activeRule.start + "-" + activeRule.end + "_Ms", BigDecimal.ZERO).add(segMs));
                }
                // 若不存在规则名称,则添加
@@ -113,7 +118,7 @@
                if(ruleName.endsWith("_Ml")){
                    BigDecimal exceedValue = bill.get(ruleName);
                    if(Objects.nonNull(exceedValue)){
                        result.put("distance"+split[0], result.getOrDefault(split[0], BigDecimal.ZERO).add(exceedValue));
//                        result.put("distance"+split[0], result.getOrDefault(split[0], BigDecimal.ZERO).add(exceedValue));
                        exceedValue = exceedValue.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP);
                    }else{
                        exceedValue = BigDecimal.ZERO;
@@ -252,12 +257,11 @@
    private static PricingConfig setupMockConfig() {
        PricingConfig config = new PricingConfig();
        config.peaks.add(new PricingRule("高峰期", "14:40", "14:46", 15.0, 3.0, 5.0, 3.0, 0.8));
        config.peaks.add(new PricingRule("高峰期", "19:40", "20:46", 15.0, 3.0, 5.0, 3.0, 0.8));
        config.night = new PricingRule("夜间行驶", "14:47", "14:48", 18.0, 3.0, 5.0, 3.5, 1.0);
        config.peaks.add(new PricingRule("高峰期", "04:00", "05:00", 15.0, 3.0, 10.0, 4, 4));
        config.peaks.add(new PricingRule("高峰期", "15:00", "16:00", 15.0, 3.0, 10.0, 4, 4));
        config.night = new PricingRule("夜间行驶", "20:04", "23:00", 15.0, 3.0, 10.0, 3, 3);
        config.holiday = new PricingRule("节假日", "18:47", "18:48", 18.0, 3.0, 5.0, 4, 2.0);
        config.normals.add(new PricingRule("普通时段", "14:46", "14:47", 10.0, 3.0, 5.0, 2.4, 0.5));
        config.normals.add(new PricingRule("普通时段", "14:48", "17:59", 10.0, 3.0, 5.0, 2.4, 0.5));
        config.normals.add(new PricingRule("普通时段", "00:00", "23:59", 10.0, 3.0, 10.0, 3, 3));
        // --- 远途加价区间配置 (关键修改) ---
        // 1. 超过 num1(12) 不足 num2(20), 加收 num3(1.2)
@@ -325,317 +329,317 @@
        list.add(new GpsPoint(182, startTs + 2 * 490 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 500 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 510 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 520 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 530 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 540 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 550 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 560 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 570 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 590 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 600 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
        list.add(new GpsPoint(182, startTs + 2 * 4180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 520 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 530 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 540 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 550 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 560 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 570 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 590 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 600 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 1980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 2980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3180 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3280 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3380 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3480 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3580 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3680 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3780 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3880 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 3980 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4080 * 1000));
//        list.add(new GpsPoint(182, startTs + 2 * 4180 * 1000));
        return list;
    }
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/constant/I18nKeyConstant.java
@@ -32,6 +32,7 @@
    // ========== 车辆开关车门 ==========
    String VEHICLE_NOT_P_GEAR = "vehicle.not.p.gear";
    String VEHICLE_DISTANCE_TOO_LONG = "vehicle.distance.too.long";
    // ========== 车辆温度控制 ==========
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -458,8 +458,7 @@
        for (XpVehicleExportExcel xpVehicleExportExcel : exportList) {
            if (StringUtils.isNotBlank(xpVehicleExportExcel.getVehiclePictures())) {
                JSONObject jsonObject = JSONObject.parseObject(xpVehicleExportExcel.getVehiclePictures());
                // xpVehicleExportExcel.setVehiclePictures(jsonObject.getString("url"));
                xpVehicleExportExcel.setVehiclePictures(null);
                xpVehicleExportExcel.setVehiclePictures(jsonObject.containsKey("url") ? jsonObject.getString("url") : "");
            }
        }
        // 3. 生成Excel
@@ -700,7 +699,7 @@
    /**
     * 业务流程-车门解锁/后备箱解锁
     */
    @ApiOperation(value = "打开车门操作", tags = {"小程序-业务流程"})
    @ApiOperation(value = "打开车门解锁/后备箱解锁", tags = {"小程序-业务流程"})
    @PostMapping("/api/v1/mini-program/order/vehicle/unlock")
    public R<Integer> unlock(@RequestBody UnlockAppletDTO dto) {
        return R.ok(xpVehicleService.unlock(dto));
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/UnlockAppletDTO.java
@@ -16,4 +16,10 @@
    @ApiModelProperty(value = "要开启的车门类型,取值: \"door\" — 主副驾车门 \"trunk\" — 后备箱")
    private String doorType;
    @ApiModelProperty(value = "用户经度")
    private Double longitude;
    @ApiModelProperty(value = "用户纬度")
    private Double latitude;
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -23,6 +23,7 @@
import com.xiaopeng.common.core.constant.CacheConstants;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.GeodesyUtil;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.vehicleConvoy.constant.I18nKeyConstant;
@@ -229,6 +230,20 @@
        if (Objects.isNull(xpVehicle)) {
            throw new ServiceException("未查询到有效车辆信息", I18nKeyConstant.VEHICLE_NOT_EXISTS);
        }
        // 判断距离是否在范围之内 4米
        List<Point> positionList = redisTemplate.opsForGeo().position("vehiclePosition:" + xpVehicle.getVehicleVin(), xpVehicle.getVehicleVin());
        if (CollUtil.isNotEmpty(positionList)) {
            Point geoJsonPoint = positionList.get(0);
            Map<String, Double> distance = GeodesyUtil.getDistance(dto.getLongitude()+ "," + dto.getLatitude(), geoJsonPoint.getX()+","+geoJsonPoint.getY());
            if (null != distance) {
                Double distance1 = distance.get("WGS84");
                if (distance1 > 4) {
                    throw new ServiceException("距离过远,无法打开", I18nKeyConstant.VEHICLE_DISTANCE_TOO_LONG);
                }
            }else {
                throw new ServiceException("距离过远,无法打开", I18nKeyConstant.VEHICLE_DISTANCE_TOO_LONG);
            }
        }
        // 车门解锁、后备箱解锁
        VehiclesCommandVo vehiclesCommandVo = new VehiclesCommandVo();
        vehiclesCommandVo.setVin(xpVehicle.getVehicleVin());
xp-robotaxi-vehicle-convoy-boot/src/main/resources/i18n/messages_en_US.properties
@@ -25,3 +25,4 @@
vehicle.not.p.gear=The trunk cannot be opened when the vehicle is not in P gear
vehicle.temperature.up=The highest temperature is 28°C
vehicle.temperature.down=The lowest temperature is 22°C
vehicle.distance.too.long=Too far away, unable to open
xp-robotaxi-vehicle-convoy-boot/src/main/resources/i18n/messages_zh_CN.properties
@@ -26,3 +26,4 @@
vehicle.not.p.gear=车辆非P档,无法开启后备箱
vehicle.temperature.up=温度最高28℃
vehicle.temperature.down=温度最低22℃
vehicle.distance.too.long=距离过远,无法打开
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml
@@ -73,6 +73,7 @@
                </foreach>
            </if>
            AND is_deleted = 0
            AND vehicleType = 2
        </where>
        ORDER BY create_time DESC
    </select>