xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationsUserClient.java
@@ -1,7 +1,6 @@ package com.xiaopeng.api.feignClient.account; import com.xiaopeng.api.factory.account.XpOperationsUserClientFallbackFactory; import com.xiaopeng.api.model.account.XpAppUser; import com.xiaopeng.api.factory.account.XpOperationUserClientFallbackFactory; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; @@ -19,7 +18,7 @@ */ @FeignClient(contextId = "XpOperationsUserClient", value = ServiceNameConstantsEnum.XP_ACCOUNT_SERVICE, fallbackFactory = XpOperationsUserClientFallbackFactory.class) fallbackFactory = XpOperationUserClientFallbackFactory.class) public interface XpOperationsUserClient { /** xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpPointClient.java
@@ -68,11 +68,11 @@ @GetMapping("/api/v1/point/queryPointById") public R<XpPoint> queryById(@RequestParam Long id); /** * 点位删除 */ @GetMapping("/api/v1/point/deletePoint") R deletePoint(@RequestParam("ids") String ids); // /** // * 点位删除 // */ // @GetMapping("/api/v1/point/deletePoint") // R deletePoint(@RequestParam("ids") String ids); /** * 点位删除 xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpPricing.java
@@ -47,10 +47,6 @@ @TableField(exist = false) private String cityName; @ApiModelProperty(value = "城市名称") @TableField(exist = false) private String cityName; @ApiModelProperty(value = "备注说明") @TableField("remark") private String remark; xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudPushNavigation/RestoreNavigationData.java
@@ -6,8 +6,7 @@ * 订单操作信息消息 */ @Data public class estoreNavigationData { public class RestoreNavigationData { /** * 请求ID */ xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationDeviationEvent/ResponseMessage.java
@@ -6,7 +6,7 @@ * 应答消息 */ @Data public class esponseMessage { public class ResponseMessage { /** * 对应请求seq */ xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -430,6 +430,8 @@ throw new ServiceException("当前区域正在等待中,请耐心等待", I18nKeyConstant.WAITING_TIME); } else if (waitMinutes == 0) { return 1; }else if(waitMinutes>0 && waitMinutes<1){ return 1; } return (int) waitMinutes; } xp-robotaxi-itinerary-boot/src/main/resources/i18n/messages.properties
@@ -3,5 +3,6 @@ no.current.region=当前区域未开通服务 path.not.found=获取导航信息失败 to.work=当前的接送点距离过近。建议步行前往 wait.time=当前区域正在等待中,请耐心等待 walking.route.not.found=未找到步行路线 welcome.message=欢迎来到我们的应用程序! xp-robotaxi-itinerary-boot/src/main/resources/i18n/messages_en_US.properties
@@ -3,5 +3,6 @@ no.current.region=no.current.region path.not.found=Failed to obtain navigation information to.work=\ The current pick-up and drop-off points are too close to each other. It is recommended to walk there wait.time=The current area is in a waiting state. Please be patient walking.route.not.found=walking.route.not.found welcome.message=Welcome to our application! xp-robotaxi-itinerary-boot/src/main/resources/i18n/messages_zh_CN.properties
@@ -3,5 +3,6 @@ no.current.region=当前区域未开通服务 path.not.found=获取导航信息失败 to.work=当前的接送点距离过近。建议步行前往 wait.time=当前区域正在等待中,请耐心等待 walking.route.not.found=未找到步行路线 welcome.message=欢迎来到我们的应用程序! xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java
@@ -50,7 +50,7 @@ FileUploadVO fileUploadVO = new FileUploadVO(); fileUploadVO.setId(UUID.randomUUID().toString()); fileUploadVO.setName("测试.jpg"); fileUploadVO.setUrl("https://we-park-life.oss-cn-beijing.aliyuncs.com/img/K4vqtLmVc6.png"); fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png"); return R.ok(fileUploadVO); } catch (Exception e) { System.err.println("上传文件失败"+e); xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpPointMapper.xml
@@ -98,7 +98,7 @@ and xefa.area_status = 1 and p.electronic_area_id is not null and xefa.city_code = #{query.cityCode} <if test="query.pointPoi != null and query.pointPoi != ''"> and p.point_poi like concat('%',#{query.pointPoi},'%') and p.point_address like concat('%',#{query.pointPoi},'%') </if> <if test="query.electronicAreaId != null"> and p.electronic_area_id = #{query.electronicAreaId} xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/EndTripJob.java
New file @@ -0,0 +1,46 @@ package com.xiaopeng.order.job.jobs; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.model.order.XpOrderTimeoutLog; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.order.job.base.AbstractJob; import lombok.extern.slf4j.Slf4j; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 推送定时任务 * @author Administrator * */ @Slf4j public class EndTripJob extends AbstractJob { public static final String name = "endTrip_"; @Override public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap maps = context.getMergedJobDataMap(); Long orderId = maps.getLong("id"); try { log.info("开始执行自动结束行程任务"); XpOrder xpOrder = xpOrderService.getById(orderId); xpOrderService.endTrip(xpOrder.getId(), String.valueOf(xpOrder.getAppUserId())); log.info("结束执行自动结束行程任务"); // 添加超时记录 XpOrderTimeoutLog xpOrderTimeoutLog = new XpOrderTimeoutLog(); xpOrderTimeoutLog.setOrderId(xpOrder.getId()); xpOrderTimeoutLog.setUserId(xpOrder.getAppUserId()); xpOrderTimeoutLogService.save(xpOrderTimeoutLog); R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId()); xpOrderService.addCruiseMission(xpVehicleR.getData(),xpOrder); }catch(Exception e){ e.printStackTrace(); } } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
@@ -1,105 +1,33 @@ package com.xiaopeng.order.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.ImmutableMap; import com.xiaopeng.api.dto.account.GetUserCouponDto; import com.xiaopeng.api.dto.account.UseUserCouponDto; import com.xiaopeng.api.dto.automaticPilot.PushOrderDto; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.dto.order.GetOrderNumDto; import com.xiaopeng.api.dto.order.HistoryEndPointsDto; import com.xiaopeng.api.dto.order.HistoryStartPointsDto; import com.xiaopeng.api.dto.order.PopOrderDto; import com.xiaopeng.api.dto.pushMessage.SendMessageDTO; import com.xiaopeng.api.dto.statistics.DailyCountDTO; import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO; import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO; import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto; import com.xiaopeng.api.feignClient.account.XpAppUserClient; import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient; import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient; import com.xiaopeng.api.feignClient.operation.XpPointClient; import com.xiaopeng.api.feignClient.operation.XpPricingClient; import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient; import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient; import com.xiaopeng.api.feignClient.vehicleConvoy.UserVehicleClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetVehicleClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.account.XpAppUser; import com.xiaopeng.api.model.operation.XpFeedbackType; import com.xiaopeng.api.model.operation.XpGeoQueryEntity; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.model.operation.XpPricing; import com.xiaopeng.api.model.order.*; import com.xiaopeng.api.model.order.XpCruiseOrder; import com.xiaopeng.api.model.vehicleConvoy.XpFleet; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.account.UserCouponVo; import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperationType; import com.xiaopeng.api.vo.order.*; import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo; import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo; import com.xiaopeng.common.core.constant.CacheConstants; import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.enums.OrderStatusEnum; import com.xiaopeng.common.core.enums.PushMessageTypeEnum; import com.xiaopeng.common.core.exception.ServiceException; import com.xiaopeng.common.core.utils.DateUtils; import com.xiaopeng.common.core.utils.GeodesyUtil; import com.xiaopeng.common.core.utils.StringUtils; import com.xiaopeng.common.core.web.domain.BaseModel; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.common.security.utils.SecurityUtils; import com.xiaopeng.order.constant.I18nKeyConstant; import com.xiaopeng.order.dto.MileageDto; import com.xiaopeng.order.job.base.QuartzManager; import com.xiaopeng.order.job.base.TimeJobType; import com.xiaopeng.order.job.jobs.EndTripJob; import com.xiaopeng.order.job.jobs.OrderCancelJob; import com.xiaopeng.order.mangodb.model.OrderTrajectory; import com.xiaopeng.order.mangodb.service.OrderTrajectoryService; import com.xiaopeng.order.mapper.XpCruiseOrderMapper; import com.xiaopeng.order.mapper.XpOrderDetailMapper; import com.xiaopeng.order.mapper.XpOrderMapper; import com.xiaopeng.order.model.dto.XpOrderCommentDto; import com.xiaopeng.order.model.dto.XpOrderPayDto; import com.xiaopeng.order.model.query.XpCruiseOrderPageQuery; import com.xiaopeng.order.model.query.XpHistoryOrderListQuery; import com.xiaopeng.order.model.query.XpOrderPageQuery; import com.xiaopeng.order.model.vo.*; import com.xiaopeng.order.service.*; import com.xiaopeng.order.utils.TaxiPricingDemoService; import com.xiaopeng.order.utils.TrajectoryGenerator; import com.xiaopeng.order.utils.holiday.HolidayUtil; import com.xiaopeng.order.vo.OrderDetailVo; import com.xiaopeng.order.model.vo.XpCruiseOrderPageVO; import com.xiaopeng.order.service.IXpCruiseOrderService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.*; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; /** xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -46,7 +46,7 @@ import com.xiaopeng.api.vo.OrderType; import com.xiaopeng.api.vo.account.UserCouponVo; import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperationType; import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.api.vo.order.*; import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo; @@ -464,7 +464,7 @@ vo.setStatus(order.getStatus()); // 用户信息 if (Objects.nonNull(order.getAppUserId()) && userInfoMap.containsKey(order.getAppUserId().toString())) { if (Objects.nonNull(order.getAppUserId()) && userInfoMap !=null && userInfoMap.containsKey(order.getAppUserId().toString())) { UcUserInfo userInfo = userInfoMap.get(order.getAppUserId().toString()); vo.setNickName(userInfo.getNickName()); vo.setPhoneNumber(userInfo.getMobile()); @@ -510,7 +510,7 @@ PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setOrderId(order.getId().toString()); pushOrderDto.setVin(xpVehicleR.getData().getVehicleVin()); pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER); orderMissionClient.cancelOrder(pushOrderDto); } } else { @@ -596,7 +596,7 @@ PushOrderDto cancelDto = new PushOrderDto(); cancelDto.setOrderId(order.getId().toString()); cancelDto.setVin(oldVehicle.getVehicleVin()); cancelDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); cancelDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER); orderMissionClient.cancelOrder(cancelDto); log.info("已取消原车辆订单指令,订单ID: {}, VIN: {}", orderId, oldVehicle.getVehicleVin()); @@ -1047,7 +1047,7 @@ PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setOrderId(order.getId().toString()); pushOrderDto.setVin(xpVehicle.getVehicleVin()); pushOrderDto.setOperation_type(OrderOperationType.VEHICLE_CANCEL_ORDER); pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.VEHICLE_CANCEL_ORDER); orderMissionClient.cancelOrder(pushOrderDto); } @@ -1587,12 +1587,6 @@ return; } // 判断是否有计划 R<XpCruisePlanVehicle> xpCruisePlanR = xpCruisePlanClient.getCruisePlan(vehicle.getId()); if (xpCruisePlanR == null || xpCruisePlanR.getData() == null) { return; } if(vehicle.getState()!=0 || vehicle.getOperatingStatus()!=1){ return; } @@ -1966,13 +1960,6 @@ return false; } return true; } @Override public Integer getOrderNum(String timeStr) { this.baseMapper.selectCount(new LambdaQueryWrapper<XpOrder>()); return 0; }