xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpTradingStrategyClientFallbackFactory.java
@@ -1,14 +1,30 @@ package com.xiaopeng.api.factory.operation; import com.xiaopeng.api.feignClient.operation.XpTradingStrategyClient; import com.xiaopeng.api.model.operation.XpTradingStrategy; import com.xiaopeng.api.vo.operation.XpTradingStrategyDetailVO; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; @Slf4j @Component public class XpTradingStrategyClientFallbackFactory implements FallbackFactory<XpTradingStrategyClient> { @Override public XpTradingStrategyClient create(Throwable cause) { return () -> R.fail("策略查询失败"); return new XpTradingStrategyClient(){ public R<XpTradingStrategyDetailVO> queryById() { return R.fail("调用交易策略接口失败"); } public R<XpTradingStrategy> getTradingStrategyByCityCode(String cityCode) { return R.fail("调用交易策略接口失败"); } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpTradingStrategyClient.java
@@ -2,15 +2,26 @@ import com.xiaopeng.api.factory.operation.XpTradingStrategyClientFallbackFactory; import com.xiaopeng.api.model.operation.XpTradingStrategy; import com.xiaopeng.api.vo.operation.XpTradingStrategyDetailVO; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @FeignClient(contextId = "XpTradingStrategyClient", value = ServiceNameConstantsEnum.XP_OPERATION_SERVICE, fallbackFactory = XpTradingStrategyClientFallbackFactory.class) public interface XpTradingStrategyClient { @GetMapping("/logan/inner/xpOperationStrategy/getOne") R<XpTradingStrategyDetailVO> queryById(); /** * 根据开通城市获取交易策略 * @param cityCode * @return */ @GetMapping("/logan/inner/xpOperationStrategy/getTradingStrategyByCityCode/{cityCode}") R<XpTradingStrategy> getTradingStrategyByCityCode(@PathVariable String cityCode); } xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -1202,12 +1202,12 @@ } break; case ORDER_PASSENGER_ONBOARD: //先手动暂停触发,因为现目前车机响应状态时机不对 try { Thread.sleep(waittime); } catch (InterruptedException e) { throw new RuntimeException(e); } // //先手动暂停触发,因为现目前车机响应状态时机不对 // try { // Thread.sleep(waittime); // } catch (InterruptedException e) { // throw new RuntimeException(e); // } //乘客已上车 if(!orderId.contains("XU")){ if(orderId.contains("TEST")){ xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -594,6 +594,7 @@ if (!inTime) { throw new ServiceException("当前点位未开通服务", I18nKeyConstant.NO_CURRENT_REGION); } // todo 需要判断用户是否白名单,且白名单当天最大订单量 // 判断当天取消的次数 后台配置 redis 查询 // 静默处理 @@ -613,7 +614,6 @@ // 根据id获取手机号 Boolean isPriorityDispatch = true; // R<XpAppUser> xpAppUserR = xpAppUserClient.queryOperationsUserById(Long.valueOf(uid)); // if (xpAppUserR.getCode() == R.SUCCESS) { xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpTradingStrategyController.java
@@ -10,10 +10,7 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; /** * <p> @@ -72,4 +69,16 @@ tradingStrategyService.save(dto); return R.ok(); } /** * 根据开通城市获取交易策略 * @param cityCode * @return */ @GetMapping("/logan/inner/xpOperationStrategy/getTradingStrategyByCityCode/{cityCode}") public R<XpTradingStrategy> getTradingStrategyByCityCode(@PathVariable String cityCode){ XpTradingStrategy detail = tradingStrategyService.getTradingStrategyByCityCode(cityCode); return R.ok(detail); } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpTradingStrategyService.java
@@ -28,4 +28,12 @@ * @param dto 交易策略编辑参数 */ void editStrategy(XpTradingStrategyEditDTO dto); /** * 根据开通城市获取交易策略 * @param cityCode * @return */ XpTradingStrategy getTradingStrategyByCityCode(String cityCode); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTradingStrategyServiceImpl.java
@@ -89,4 +89,22 @@ tradingStrategyCityService.saveBatch(dto.getCityList()); } } /** * 根据开通城市获取交易策略 * @param cityCode * @return */ @Override public XpTradingStrategy getTradingStrategyByCityCode(String cityCode) { XpTradingStrategyCity one = tradingStrategyCityService.lambdaQuery() .eq(XpTradingStrategyCity::getCityCode, cityCode) .one(); if(Objects.isNull(one)){ return null; } XpTradingStrategy xpTradingStrategy = this.getById(one.getStrategyId()); return xpTradingStrategy; } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/OrderCancelJob.java
@@ -32,7 +32,7 @@ try { log.info("开始执行订单取消任务"); XpOrder xpOrder = xpOrderService.getById(orderId); if(Objects.nonNull(xpOrder) && xpOrder.getStatus()==4){ if(Objects.nonNull(xpOrder) && (xpOrder.getStatus()==4 || xpOrder.getStatus()==5)){ Integer status = xpOrder.getStatus(); log.info("订单取消开始"); XpOrder order = xpOrderService.cancelOrder(String.valueOf(xpOrder.getId())); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -190,6 +190,9 @@ @Resource private BluetoothUnlockClient bluetoothUnlockClient; @Resource private XpTradingStrategyClient tradingStrategyClient; @Value("${robotaxi.appId:xp_robotaxi_api}") private String appid; @@ -2000,8 +2003,29 @@ sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", xpVehicle.getVehicleVin()); // 删除定时任务job QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL); //乘客已上车,重新倒计时不开始行程取消订单 XpPoint xpPoint1 = xpPointClient.queryById(xpOrder.getStartPointId()).getData(); XpTradingStrategy tradingStrategy = tradingStrategyClient.getTradingStrategyByCityCode(xpPoint1.getCityCode()).getData(); if(null != tradingStrategy){ Map<String, ? extends Object> cancelJobMaps1 = new ImmutableMap.Builder<String, Long>(). put("id", xpOrder.getId()) .build(); QuartzManager.addJob( OrderCancelJob.class, (OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL, DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(tradingStrategy.getBdNotBoardedTime())), cancelJobMaps1 ); } // 车辆到达上车点时间 xpOrder.setArrivalTime(LocalDateTime.now()); break; case 6: // 删除定时任务job QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL); // 行程开始时间 xpOrder.setTripBegin(LocalDateTime.now()); //添加预估到达时间