yyy
2026-04-22 bc7ea9b2430833d1bda26cb75e756ab0e28ab34f
Merge remote-tracking branch 'origin/1.0' into 1.0
1 文件已重命名
7个文件已修改
99 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/VehiclePositionVo.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/vehicleConvoy/XpVehicleVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/ActiveOrderController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/mapper/XpVehicleMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpVehicleService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/VehiclePositionVo.java
@@ -70,6 +70,10 @@
     */
    private Integer timeScore=0;
    /**
     * 航向,单位:度,北零顺时针。范围:[0-360)。0 => 北, 90 => 东, 180 => 南, 270 => 西
     */
    private Double course;
    /**
     * 价值分数
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/vehicleConvoy/XpVehicleVO.java
File was renamed from xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/XpVehicleVO.java
@@ -1,4 +1,4 @@
package com.xiaopeng.vehicleConvoy.model.vo;
package com.xiaopeng.api.vo.vehicleConvoy;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
@@ -36,4 +36,7 @@
    @ApiModelProperty(value = "车辆维修状态 1=取回 2=送修")
    private Integer maintenanceStatus;
    @ApiModelProperty(value = "方向角度")
    private Double direction;
}
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/ActiveOrderController.java
@@ -6,6 +6,7 @@
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.operation.RouteAndFareVo;
import com.xiaopeng.api.vo.operation.VehiclePositionVo;
import com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.itinerary.service.ActiveOrderService;
import com.xiaopeng.itinerary.service.XpPricingService;
@@ -13,6 +14,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.data.geo.Distance;
import org.springframework.data.geo.Metrics;
import org.springframework.data.geo.Point;
@@ -80,35 +82,7 @@
        return R.ok();
    }
    @Resource
    XpVehicleClient xpVehicleClient;
    /**
     * 周围车辆点位查询
     */
    @ApiOperation(value = "周围车辆点位查询", notes = "", tags = {"小程序-周围车辆点位查询"})
    @GetMapping("/api/v1/mini-program/nearby/cars")
    @XpClientCheck(checkToken = false, checkOtpToken = true)
    public R<List<XpVehicle>> carAround(@RequestParam double lon,@RequestParam double lat,HttpServletRequest request) {
        // TODO 需要车头方向
        Point point = new Point(lon, lat);
        Distance distance = new Distance(3, Metrics.KILOMETERS);
        Criteria criteria = Criteria.where("point")
                .nearSphere(point)
                .maxDistance(distance.getNormalizedValue());
        Query query = new Query(criteria);
        List<VehiclePositionVo> vehiclePositions = mongoTemplate.find(query, VehiclePositionVo.class);
        List<XpVehicle> xpVehicleList = vehiclePositions.stream()
                .sorted(Comparator.comparingDouble(VehiclePositionVo::getDistance))
                .map(v -> xpVehicleClient.findByVehicleVin(v.getVin()).getData())
                .filter(v -> v.getState() == 0)
                .limit(5)
                .collect(Collectors.toList());
        return R.ok(xpVehicleList);
    }
    @Resource
    private MongoTemplate mongoTemplate;
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -11,13 +11,13 @@
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mongodb.client.MongoCollection;
import com.xiaopeng.api.dto.operation.VehiclePositionByVinDto;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
import com.xiaopeng.api.feignClient.maintenance.*;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.account.XpOperationsUser;import com.xiaopeng.api.model.maintenance.XpTask;
import com.xiaopeng.api.model.maintenance.XpTaskRule;
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
@@ -25,6 +25,7 @@
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicleAnnualRecord;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.operation.VehiclePositionVo;
import com.xiaopeng.api.vo.vehicleConvoy.VehicleDoorStatusVo;
import com.xiaopeng.api.vo.vehicleConvoy.VehicleStateVo;
import com.xiaopeng.api.vo.vehicleConvoy.VehiclesCommandCallbackVo;
@@ -40,7 +41,7 @@
import com.xiaopeng.vehicleConvoy.model.exportExcel.XpVehicleExportExcel;
import com.xiaopeng.vehicleConvoy.model.importExcel.XpVehicleImportExcel;
import com.xiaopeng.vehicleConvoy.model.query.*;
import com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO;
import com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO;
import com.xiaopeng.vehicleConvoy.service.IXpFleetService;
import com.xiaopeng.vehicleConvoy.service.IXpFleetVehicleService;
import com.xiaopeng.vehicleConvoy.service.IXpVehicleAnnualRecordService;
@@ -57,6 +58,9 @@
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.data.geo.Distance;
import org.springframework.data.geo.Metrics;
import org.springframework.data.geo.Point;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
@@ -64,6 +68,7 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -73,6 +78,7 @@
import java.time.LocalDateTime;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
 * <p>
@@ -1156,4 +1162,38 @@
        VehicleDoorStatusVo vehicleDoorStatus = xpVehicleService.getVehicleDoorStatus(orderId);
        return R.ok(vehicleDoorStatus);
    }
    @Resource
    XpVehicleClient xpVehicleClient;
    /**
     * 周围车辆点位查询
     */
    @ApiOperation(value = "周围车辆点位查询", notes = "", tags = {"小程序-周围车辆点位查询"})
    @GetMapping("/api/v1/mini-program/vehicle/nearby")
    @XpClientCheck(checkToken = false, checkOtpToken = true)
    public R<List<XpVehicleVO>> carAround(@RequestParam double lon,@RequestParam double lat,HttpServletRequest request) {
        Point point = new Point(lon, lat);
        Distance distance = new Distance(3, Metrics.KILOMETERS);
        Criteria criteria = Criteria.where("point")
                .nearSphere(point)
                .maxDistance(distance.getNormalizedValue());
        Query query = new Query(criteria);
        List<VehiclePositionVo> vehiclePositions = mongoTemplate.find(query, VehiclePositionVo.class);
        List<XpVehicleVO> xpVehicleList = vehiclePositions.stream()
                .sorted(Comparator.comparingDouble(VehiclePositionVo::getDistance))
                .map(vp -> {
                    XpVehicle xpVehicle = xpVehicleClient.findByVehicleVin(vp.getVin()).getData();
                    XpVehicleVO vo = new XpVehicleVO();
                    BeanUtils.copyProperties(xpVehicle, vo);
                    vo.setDirection(vp.getCourse());
                    return vo;
                })
                .filter(v -> v.getState() == 0)
                .limit(5)
                .collect(Collectors.toList());
        return R.ok(xpVehicleList);
    }
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/mapper/XpVehicleMapper.java
@@ -8,7 +8,7 @@
import com.xiaopeng.vehicleConvoy.model.query.VehicleExportQuery;
import com.xiaopeng.vehicleConvoy.model.query.VehicleMapQuery;
import com.xiaopeng.vehicleConvoy.model.query.VehiclePageQuery;
import com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO;
import com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpVehicleService.java
@@ -1,6 +1,5 @@
package com.xiaopeng.vehicleConvoy.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
@@ -11,10 +10,7 @@
import com.xiaopeng.vehicleConvoy.model.dto.*;
import com.xiaopeng.vehicleConvoy.model.importExcel.XpVehicleImportExcel;
import com.xiaopeng.vehicleConvoy.model.query.*;
import com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO;
import java.util.List;
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -53,7 +53,7 @@
import com.xiaopeng.vehicleConvoy.model.dto.*;
import com.xiaopeng.vehicleConvoy.model.importExcel.XpVehicleImportExcel;
import com.xiaopeng.vehicleConvoy.model.query.*;
import com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO;
import com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO;
import com.xiaopeng.vehicleConvoy.service.AsyncVehicleStateService;
import com.xiaopeng.vehicleConvoy.service.IXpFleetVehicleService;
import com.xiaopeng.vehicleConvoy.service.IXpVehicleAnnualRecordService;
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml
@@ -65,7 +65,7 @@
        GROUP BY DATE(create_time)
        ORDER BY date ASC
    </select>
    <select id="pageList" resultType="com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO">
    <select id="pageList" resultType="com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO">
        SELECT <include refid="Base_Column_List"></include>
        FROM xp_vehicle
        <where>
@@ -97,7 +97,7 @@
    </select>
    <select id="findList" resultType="com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO">
    <select id="findList" resultType="com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO">
        SELECT a.*
        FROM xp_vehicle as a
        <where> a.is_deleted = 0
@@ -191,7 +191,7 @@
        </where>
        ORDER BY create_time DESC
    </select>
    <select id="getVehiclePageList" resultType="com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO">
    <select id="getVehiclePageList" resultType="com.xiaopeng.api.vo.vehicleConvoy.XpVehicleVO">
        select xv.id,
        xv.vehicle_code,
        xv.vehicle_vin,