liujie
2026-03-09 50c13a925bf81d14d979ef1e0590c96fa14a7f44
修改bug
1个文件已添加
10个文件已修改
71 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/operation/LonLatCityCodeDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/operation/LonLatDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/XpElectronicFenceAreaService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/dto/NearestDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -173,8 +173,8 @@
                    xpAppUserCoupon.setMoney(xpCoupon.getAmount());
                    xpAppUserCoupon.setCouponId(dto.getCouponId());
                    xpAppUserCoupon.setAppUserId(uid);
                    xpAppUserCoupon.setExpirationTime(LocalDateTime.now().plusDays(100));
                    xpAppUserCoupon.setStatus(0);
                    xpAppUserCoupon.setExpirationTime(LocalDateTime.now().plusDays(7));
                    xpAppUserCoupon.setStatus(1);
                    xpAppUserCoupon.setCouponType(xpCoupon.getCouponType());
                    xpAppUserCoupon.setPhone(phone);
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/operation/LonLatCityCodeDto.java
New file
@@ -0,0 +1,28 @@
package com.xiaopeng.api.dto.operation;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "经纬度DTO")
@AllArgsConstructor
@NoArgsConstructor
public class LonLatCityCodeDto {
    @ApiModelProperty(value = "经度")
    @NotNull(message = "经度不能为空")
    private Double longitude;
    @ApiModelProperty(value = "纬度")
    @NotNull(message = "纬度不能为空")
    private Double latitude;
    @ApiModelProperty(value = "城市编码")
    private String cityCode;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/operation/LonLatDto.java
@@ -21,4 +21,6 @@
    @ApiModelProperty(value = "纬度")
    @NotNull(message = "纬度不能为空")
    private Double latitude;
}
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -377,6 +377,9 @@
        // 12. 设置费用信息
        fareVo.setFinalFareStr(new BigDecimal(fareVo.getFinalFare()).setScale(2, RoundingMode.HALF_UP).toString());
        if("0.00".equals(fareVo.getFinalFareStr())){
            fareVo.setFinalFareStr("0.0");
        }
        fareVo.setOriginalFare(new BigDecimal(fareVo.getOriginalFare()).setScale(2,RoundingMode.HALF_UP).doubleValue());
        fareVo.setSystemDiscount(new BigDecimal(fareVo.getSystemDiscount()).setScale(2,RoundingMode.HALF_UP).doubleValue());
        routeAndFareVo.setFareEstimate(fareVo);
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceController.java
@@ -2,6 +2,7 @@
import com.xiaopeng.api.dto.map.RouteAndFareDto;
import com.xiaopeng.api.dto.operation.LonLatCityCodeDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.vo.operation.XpElectronicFenceVo;
import com.xiaopeng.common.core.domain.R;
@@ -55,7 +56,7 @@
    @ApiOperation(value = "判断当前位置是否在运营区域内",tags = {"小程序-判断当前位置是否在运营区域内"})
    @PostMapping("/base/v1/mini-program/fence/check")
    public R<IsInOperationAreaVo> isInOperationArea(@RequestBody @Valid  LonLatDto dto) {
    public R<IsInOperationAreaVo> isInOperationArea(@RequestBody @Valid LonLatCityCodeDto dto) {
        return R.ok(xpElectronicFenceAreaService.isInOperationArea(dto));
    }
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/XpElectronicFenceAreaService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.dto.map.RouteAndFareDto;
import com.xiaopeng.api.dto.operation.LonLatCityCodeDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.vo.operation.XpElectronicFenceVo;
@@ -35,7 +36,7 @@
     * @param dto
     * @return
     */
    IsInOperationAreaVo isInOperationArea(LonLatDto dto);
    IsInOperationAreaVo isInOperationArea(LonLatCityCodeDto dto);
    /**
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceAreaServiceImpl.java
@@ -5,6 +5,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.dto.map.RouteAndFareDto;
import com.xiaopeng.api.dto.operation.LonLatCityCodeDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.feignClient.operation.XpElectronicFenceClient;
import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient;
@@ -204,14 +205,14 @@
     * @return
     */
    @Override
    public IsInOperationAreaVo isInOperationArea(LonLatDto dto) {
    public IsInOperationAreaVo isInOperationArea(LonLatCityCodeDto dto) {
        IsInOperationAreaVo vo = new IsInOperationAreaVo();
        Map<String, String> geocode = gdMapGeocodingUtil.geocode(dto.getLongitude().toString(), dto.getLatitude().toString());
        if(null == geocode){
            throw new RuntimeException("经纬度转换城市code失败");
        }
        String cityCode = geocode.get("cityCode");
//        Map<String, String> geocode = gdMapGeocodingUtil.geocode(dto.getLongitude().toString(), dto.getLatitude().toString());
//        if(null == geocode){
//            throw new RuntimeException("经纬度转换城市code失败");
//        }
        String cityCode = dto.getCityCode();
        List<XpGeoFencingPolygon> xpGeoFencingPolygons = mongoTemplate.find(new Query(Criteria.where("cityCode").is(cityCode)), XpGeoFencingPolygon.class);
        for (XpGeoFencingPolygon polygon : xpGeoFencingPolygons) {
            if (polygon.getPoints() != null && polygon.getPoints().getCoordinates() != null) {
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/dto/NearestDto.java
@@ -17,4 +17,6 @@
    @ApiModelProperty(value = "经度")
    @NotNull(message = "经度不能为空")
    private Double longitude;
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -137,13 +137,15 @@
            // 计算距离 小于的站点
            double v = FastDistanceCalculator.distanceFastKm(dto.getLatitude(), dto.getLongitude(), xpPoint.getPointLat(), xpPoint.getPointLon());
            if (v < orderDistance) {
            // m做判断
            if ((v*1000) < orderDistance) {
                NearestNextVo nearestNextVo = new NearestNextVo();
                nearestNextVo.setId(xpPoint.getId());
                nearestNextVo.setName(xpPoint.getPointName());
                nearestNextVo.setLatitude(xpPoint.getPointLat());
                nearestNextVo.setLongitude(xpPoint.getPointLon());
                nearestNextVo.setDistance(v);
                nearestNextVo.setDistance(new BigDecimal(v).setScale(2, RoundingMode.HALF_UP).doubleValue());
                nearestNextVo.setAddress(xpPoint.getPointAddress());
                nearestNextVo.setTime(xpPoint.getParkingTimeLimit());
                nearestNextVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -193,7 +193,7 @@
        if (xpOrderR.getCode() == 200) {
            XpOrder xpOrder = xpOrderR.getData();
            if (xpOrder.getStatus() == 1) {
                log.info("五轮推单结束,无车辆接单,执行取消订单 {}", orderNo);
                log.error("五轮推单结束,无车辆接单,执行取消订单 {}", orderNo);
                xpOrderClient.cancelOrder(orderId);
                //推送订单状态给乘客
                SendMessageDTO dto = new SendMessageDTO();
@@ -242,7 +242,7 @@
        for (int i = 0; i < count; i++) {
            //等到sleepTime秒钟
            Thread.sleep(sleepTime * 1000);
            log.info("进入找车环节 单号 {} 第{}轮", orderNo, count++);
//            log.info("进入找车环节 单号 {} 第{}轮", orderNo, count++);
            // 根据距离找车
            // 车多则根据配置找具体车数量 根据距离最近
            // 更改 暂不限制数量
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -964,6 +964,9 @@
    @Transactional
    public void cancelOrder(Long orderId, String uid) {
        XpOrder order = this.getById(orderId);
        if(order.getStatus()==0){
            return;
        }
        if (order == null) {
            throw new ServiceException("订单不存在", I18nKeyConstant.ORDER_NOT_EXISTS);
        }