From 993a6e6ea8ae047b9e5fffd249ae7adfcd650d3a Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期日, 17 五月 2026 11:35:44 +0800
Subject: [PATCH] 合并代码
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 320 ++++++++++++++++++++++++++++++++++-------------------
1 files changed, 204 insertions(+), 116 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index 1da2547..31638f7 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -36,6 +36,7 @@
import com.xiaopeng.api.feignClient.automaticPilot.VehicleBuriedPointClient;
import com.xiaopeng.api.feignClient.maintenance.XpTaskRuleClient;
import com.xiaopeng.api.feignClient.map.XpMapClient;
+import com.xiaopeng.api.feignClient.map.XpStationClient;
import com.xiaopeng.api.feignClient.operation.*;
import com.xiaopeng.api.feignClient.order.XpCruiseOrderClient;
import com.xiaopeng.api.feignClient.payFront.XpPayFrontClient;
@@ -215,6 +216,8 @@
@Resource
private XpPayFrontClient xpPayFrontClient;
+ @Resource
+ private XpStationClient xpStationClient;
@Value("${robotaxi.appId:xp_robotaxi_api}")
private String appid;
@@ -1001,6 +1004,12 @@
if(order.getOfficialPartnerId() == null){
//创建定时任务执行延迟驶离终点和下发巡游单
XpPoint point = xpPointClient.queryById(order.getEndPointId()).getData();
+ Integer parkingTimeLimit = point.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != point.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(point.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
Map<String, ? extends Object> jobMaps =
new ImmutableMap.Builder<String, String>()
.put("id", order.getId().toString())
@@ -1010,7 +1019,7 @@
AddCruiseMissionJob.class,
(AddCruiseMissionJob.name + order.getId()).toUpperCase(),
TimeJobType.ADD_CRUISE_MISSION,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(parkingTimeLimit)),
jobMaps
);
}else{
@@ -1443,6 +1452,12 @@
.orElse(new ArrayList<>());
for (Long pointId : endPointId) {
XpPoint endPoint = getPointById(pointId);
+ Integer parkingTimeLimit = endPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != endPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(endPoint.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
// 计算直线距离,如果endPoint到startPoint的距离大于minOrderDistance,则返回该点
GlobalCoordinates endCoordinates = new GlobalCoordinates(endPoint.getPointLon(), endPoint.getPointLat());
double distanceMeter = GeodesyUtil.getDistanceMeter(startCoordinates, endCoordinates, Ellipsoid.WGS84);
@@ -1454,7 +1469,7 @@
ret.setLongitude(endPoint.getPointLon());
ret.setDistance(new BigDecimal(distanceMeter).setScale(2, RoundingMode.HALF_UP).doubleValue());
ret.setAddress(endPoint.getPointAddress());
- ret.setTime(endPoint.getParkingTimeLimit());
+ ret.setTime(parkingTimeLimit);
ret.setElectronicAreaId(endPoint.getElectronicAreaId());
// 判断是否收藏
if (pointIdsByUserId.contains(endPoint.getId())) {
@@ -1786,20 +1801,32 @@
for (XpOrderHistoryListVO xpOrderHistoryListVO : value) {
XpPoint xpPoint = pointList.stream().filter(e -> e.getId().equals(xpOrderHistoryListVO.getStartPointId())).findFirst().orElse(null);
if (xpPoint != null) {
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(xpPoint.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
xpOrderHistoryListVO.setStartPointName(xpPoint.getPointName());
xpOrderHistoryListVO.setStartLat(xpPoint.getPointLat());
xpOrderHistoryListVO.setStartLon(xpPoint.getPointLon());
xpOrderHistoryListVO.setXpElectronicFenceAreaId(xpPoint.getElectronicAreaId());
- xpOrderHistoryListVO.setStartParkingTimeLimit(xpPoint.getParkingTimeLimit());
+ xpOrderHistoryListVO.setStartParkingTimeLimit(parkingTimeLimit);
}
xpPoint = pointList.stream().filter(e -> e.getId().equals(xpOrderHistoryListVO.getEndPointId())).findFirst().orElse(null);
if (xpPoint != null) {
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(xpPoint.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
xpOrderHistoryListVO.setEndPointName(xpPoint.getPointName());
xpOrderHistoryListVO.setEndLat(xpPoint.getPointLat());
xpOrderHistoryListVO.setEndLon(xpPoint.getPointLon());
xpOrderHistoryListVO.setXpElectronicFenceAreaId(xpPoint.getElectronicAreaId());
- xpOrderHistoryListVO.setEndParkingTimeLimit(xpPoint.getParkingTimeLimit());
+ xpOrderHistoryListVO.setEndParkingTimeLimit(parkingTimeLimit);
}
}
@@ -2092,6 +2119,12 @@
// 查询起点点位
Long startPointId = xpOrder.getStartPointId();
XpPoint xpPoint = xpPointClient.queryById(startPointId).getData();
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(xpPoint.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
// 添加取消订单定时任务job 时间为点位限停时长
Map<String, ? extends Object> cancelJobMaps =
new ImmutableMap.Builder<String, Long>().
@@ -2101,7 +2134,7 @@
OrderCancelJob.class,
(OrderCancelJob.name + xpOrder.getId()).toUpperCase(),
TimeJobType.ORDER_CANCEL,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(xpPoint.getParkingTimeLimit())),
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(parkingTimeLimit)),
cancelJobMaps
);
// 车辆到达上车点时间
@@ -2227,6 +2260,12 @@
// 添加车辆到达终点后限停时间到后驶离的定时任务
//时间到后将车辆状态回滚到空闲、添加巡游订单,解绑用户和车辆关系,车辆驶离点位
XpPoint point = xpPointClient.queryById(xpOrder.getEndPointId()).getData();
+ Integer parkingTimeLimit2 = point.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != point.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(point.getStationId()).getData();
+ parkingTimeLimit2 = xpStation.getParkingTimeLimit();
+ }
Map<String, ? extends Object> jobMaps =
new ImmutableMap.Builder<String, String>()
.put("id", xpOrder.getId().toString())
@@ -2253,7 +2292,7 @@
PushChainReactionOrderJob.class,
(PushChainReactionOrderJob.name + id).toUpperCase(),
TimeJobType.ADD_CHAIN_REACTION_ORDER_MISSION,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(parkingTimeLimit2)),
jobMaps
);
}
@@ -2263,7 +2302,7 @@
AddCruiseMissionJob.class,
(AddCruiseMissionJob.name + xpOrder.getId()).toUpperCase(),
TimeJobType.ADD_CRUISE_MISSION,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(parkingTimeLimit2)),
jobMaps
);
}
@@ -2272,7 +2311,7 @@
AddCruiseMissionJob.class,
(AddCruiseMissionJob.name + xpOrder.getId()).toUpperCase(),
TimeJobType.ADD_CRUISE_MISSION,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(parkingTimeLimit2)),
jobMaps
);
}
@@ -2986,6 +3025,17 @@
R<XpCruisePlanVehicle> xpCruisePlanR = xpCruisePlanClient.getCruisePlan(vehicle.getId());
if (xpCruisePlanR == null || xpCruisePlanR.getData() == null) {
log.info("未找到匹配的巡游计划,无法执行巡游订单 {}", vehicle.getPlateNumber());
+ log.info("给车端发送取消行程报文 {}", vehicle.getPlateNumber());
+
+ PushOrderDto cancelDto = new PushOrderDto();
+ cancelDto.setStartTaskId(order.getXpuStartTaskId());
+ cancelDto.setEndTaskId(order.getXpuEndTaskId());
+ cancelDto.setOrderId(order.getId().toString());
+ String vin1 = SensitiveDataCryptoUtil.decryptIfPossible(vehicle.getVehicleVin());
+ cancelDto.setVin(vin1);
+ cancelDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
+ cancelDto.setCancelScene(CancelOrderSceneEnum.REASSIGN_OLD_VEHICLE.getCode());
+ orderMissionClient.cancelOrder(cancelDto);
return;
}
String vin = SensitiveDataCryptoUtil.decryptIfPossible(vehicle.getVehicleVin());
@@ -3361,109 +3411,109 @@
public R payment(XpOrderPayDto dto, String uid) {
- XpOrder order = this.getById(dto.getOrderId());
-
- HashMap<String, Object> resultMap = new HashMap<>();
-
- // 1.0 免密 //查询是否开通免密
- // 1先查用户是否申请 申请了拿到通过的businessOrderId
- boolean signed = false;
- CreditPaySignQueryDto creditPaySignQueryDto = new CreditPaySignQueryDto();
- creditPaySignQueryDto.setUid(Long.valueOf(uid));
- creditPaySignQueryDto.setBusinessId("xp-robotaxi");
- creditPaySignQueryDto.setCategory("009001");
- creditPaySignQueryDto.setBusinessOrderId(OrderCodeUtil.getOrderCode("MMZF"));
- R<CreditPaySignQueryVo> creditPaySignQueryVoR = xpPayFrontClient.queryCreditPaySign(creditPaySignQueryDto);
- if (creditPaySignQueryVoR.getCode()==200) {
- CreditPaySignQueryVo data = creditPaySignQueryVoR.getData();
- // 查看是否有签约的
- long count = data.getSignList().stream().filter(e -> e.getStatus().equals("VALID")).count();
- if (count > 0){
- signed = true;
- }
- }
-
-
- if(signed){
- // y已签约 1.信用下单
- CreditOrderCreateDto creditOrderCreateDto = new CreditOrderCreateDto();
- creditOrderCreateDto.setUid(Long.valueOf(uid));
- creditOrderCreateDto.setBusinessId("xp-robotaxi");
- creditOrderCreateDto.setCategory("009001");
- creditOrderCreateDto.setBusinessOrderId("");
- creditOrderCreateDto.setSubject("小鹏集团|robotaxi");
- creditOrderCreateDto.setPayType("13");
-
-
- // 信用下单
- ArrayList<CreditOrderCreateDto.PostPayment> postPayments = new ArrayList<>(1);
- CreditOrderCreateDto.PostPayment postPayment = new CreditOrderCreateDto.PostPayment();
- postPayment.setName("收费标准");
- postPayment.setDescription("行程价格动态浮动,具体详情可在费用详情或计价规则查看");
- postPayments.add(postPayment);
- creditOrderCreateDto.setPostPayments(postPayments);
- R<CreditOrderCreateVo> creditOrderCreateVoR = xpPayFrontClient.createCreditOrder(creditOrderCreateDto);
- if(creditOrderCreateVoR.getCode()==200){
- CreditOrderCreateVo data = creditOrderCreateVoR.getData();
- resultMap.put("status", 1);
- resultMap.put("value", data);
-
- order.setPayType(3);
- order.setAuthOrderId(data.getAuthOrderId());
-
- return R.ok(resultMap);
- }
-
- }else {
-
- // 未签约
- // 调用预下单接口
- CreditPrecreateDto creditPrecreateDto = new CreditPrecreateDto();
- creditPrecreateDto.setUid(uid);
- creditPrecreateDto.setBizId("xp-robotaxi");
- creditPrecreateDto.setBizOrderId("");
- creditPrecreateDto.setPayScene(99);
- creditPrecreateDto.setAmount(order.getOrderMoney().multiply(new BigDecimal(100)).intValue());
- creditPrecreateDto.setCategory("009001");
- creditPrecreateDto.setTitle("信用下单");
- creditPrecreateDto.setDetail("信用下单");
-
- HashMap<String, String> businessExtend = new HashMap<>();
- businessExtend.put("returnUrl", "");
- businessExtend.put("notifyUrl", "");
- creditPrecreateDto.setBusinessExtend(businessExtend);
-
- R<CreditPrecreateVo> creditPrecreateVoR = xpPayFrontClient.precreate(creditPrecreateDto);
- if (creditPrecreateVoR.getCode()==200) {
- CreditPrecreateVo data = creditPrecreateVoR.getData();
- resultMap.put("status", 2);
- resultMap.put("value", data);
- return R.ok(resultMap);
- }
- }
+// XpOrder order = this.getById(dto.getOrderId());
+//
+// HashMap<String, Object> resultMap = new HashMap<>();
+//
+// // 1.0 免密 //查询是否开通免密
+// // 1先查用户是否申请 申请了拿到通过的businessOrderId
+// boolean signed = false;
+// CreditPaySignQueryDto creditPaySignQueryDto = new CreditPaySignQueryDto();
+// creditPaySignQueryDto.setUid(Long.valueOf(uid));
+// creditPaySignQueryDto.setBusinessId("xp-robotaxi");
+// creditPaySignQueryDto.setCategory("009001");
+// creditPaySignQueryDto.setBusinessOrderId(OrderCodeUtil.getOrderCode("MMZF"));
+// R<CreditPaySignQueryVo> creditPaySignQueryVoR = xpPayFrontClient.queryCreditPaySign(creditPaySignQueryDto);
+// if (creditPaySignQueryVoR.getCode()==200) {
+// CreditPaySignQueryVo data = creditPaySignQueryVoR.getData();
+// // 查看是否有签约的
+// long count = data.getSignList().stream().filter(e -> e.getStatus().equals("VALID")).count();
+// if (count > 0){
+// signed = true;
+// }
+// }
+//
+//
+// if(signed){
+// // y已签约 1.信用下单
+// CreditOrderCreateDto creditOrderCreateDto = new CreditOrderCreateDto();
+// creditOrderCreateDto.setUid(Long.valueOf(uid));
+// creditOrderCreateDto.setBusinessId("xp-robotaxi");
+// creditOrderCreateDto.setCategory("009001");
+// creditOrderCreateDto.setBusinessOrderId("");
+// creditOrderCreateDto.setSubject("小鹏集团|robotaxi");
+// creditOrderCreateDto.setPayType("13");
+//
+//
+// // 信用下单
+// ArrayList<CreditOrderCreateDto.PostPayment> postPayments = new ArrayList<>(1);
+// CreditOrderCreateDto.PostPayment postPayment = new CreditOrderCreateDto.PostPayment();
+// postPayment.setName("收费标准");
+// postPayment.setDescription("行程价格动态浮动,具体详情可在费用详情或计价规则查看");
+// postPayments.add(postPayment);
+// creditOrderCreateDto.setPostPayments(postPayments);
+// R<CreditOrderCreateVo> creditOrderCreateVoR = xpPayFrontClient.createCreditOrder(creditOrderCreateDto);
+// if(creditOrderCreateVoR.getCode()==200){
+// CreditOrderCreateVo data = creditOrderCreateVoR.getData();
+// resultMap.put("status", 1);
+// resultMap.put("value", data);
+//
+// order.setPayType(3);
+// order.setAuthOrderId(data.getAuthOrderId());
+//
+// return R.ok(resultMap);
+// }
+//
+// }else {
+//
+// // 未签约
+// // 调用预下单接口
+// CreditPrecreateDto creditPrecreateDto = new CreditPrecreateDto();
+// creditPrecreateDto.setUid(uid);
+// creditPrecreateDto.setBizId("xp-robotaxi");
+// creditPrecreateDto.setBizOrderId("");
+// creditPrecreateDto.setPayScene(99);
+// creditPrecreateDto.setAmount(order.getOrderMoney().multiply(new BigDecimal(100)).intValue());
+// creditPrecreateDto.setCategory("009001");
+// creditPrecreateDto.setTitle("信用下单");
+// creditPrecreateDto.setDetail("信用下单");
+//
+// HashMap<String, String> businessExtend = new HashMap<>();
+// businessExtend.put("returnUrl", "");
+// businessExtend.put("notifyUrl", "");
+// creditPrecreateDto.setBusinessExtend(businessExtend);
+//
+// R<CreditPrecreateVo> creditPrecreateVoR = xpPayFrontClient.precreate(creditPrecreateDto);
+// if (creditPrecreateVoR.getCode()==200) {
+// CreditPrecreateVo data = creditPrecreateVoR.getData();
+// resultMap.put("status", 2);
+// resultMap.put("value", data);
+// return R.ok(resultMap);
+// }
+// }
// mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可
-// XpOrder order = this.getById(dto.getOrderId());
-// order.setStatus(9);
-// order.setAppUserId(null);
-// if (order.getCouponId() != null) {
-// UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
-// useUserCouponDto.setUserCouponId(order.getCouponId());
-// R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
-// if (decimalR.getCode() == 200) {
-// order.setCouponMoney(decimalR.getData());
-// if (order.getCouponMoney().compareTo(order.getOrderMoney()) > 0) {
-// order.setPayMoney(BigDecimal.ZERO);
-// order.setCouponMoney(order.getOrderMoney());
-// } else {
-// order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
-// }
-// }
-// }
-// baseMapper.updateById(order);
-// bootCommonService.setCache_orderStatus(order.getId(), order, null);
+ XpOrder order = this.getById(dto.getOrderId());
+ order.setStatus(9);
+ order.setAppUserId(null);
+ if (order.getCouponId() != null) {
+ UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
+ useUserCouponDto.setUserCouponId(order.getCouponId());
+ R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
+ if (decimalR.getCode() == 200) {
+ order.setCouponMoney(decimalR.getData());
+ if (order.getCouponMoney().compareTo(order.getOrderMoney()) > 0) {
+ order.setPayMoney(BigDecimal.ZERO);
+ order.setCouponMoney(order.getOrderMoney());
+ } else {
+ order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
+ }
+ }
+ }
+ baseMapper.updateById(order);
+ bootCommonService.setCache_orderStatus(order.getId(), order, null);
return R.fail();
}
@@ -3848,9 +3898,22 @@
Object cacheObject = redisService.getCacheObject("ORDER_NAVIGATION_END_DATA:" + appUserId);
RouteVo routeVo1 = JSON.parseObject(cacheObject.toString(), RouteVo.class);
XpPoint endPoint = xpPointClient.queryById(order.getEndPointId()).getData();
- LocalDateTime localDateTime = order.getAcceptanceTime().plusMinutes(routeVo.getDuration()).plusMinutes(startPoint.getParkingTimeLimit())
- .plusMinutes(routeVo1.getDuration()).plusMinutes(endPoint.getParkingTimeLimit()).plusMinutes(30);
- long expirationTime = localDateTime.toEpochSecond(ZoneOffset.of("+8"));
+ Integer parkingTimeLimit = startPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != startPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(startPoint.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
+
+ Integer parkingTimeLimit1 = endPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != endPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(endPoint.getStationId()).getData();
+ parkingTimeLimit1 = xpStation.getParkingTimeLimit();
+ }
+ LocalDateTime localDateTime = order.getAcceptanceTime().plusSeconds(routeVo.getDuration()).plusMinutes(parkingTimeLimit)
+ .plusSeconds(routeVo1.getDuration()).plusMinutes(parkingTimeLimit1).plusMinutes(30);
+ long expirationTime = localDateTime.toEpochSecond(ZoneOffset.of("+8")) * 1000;
//生成token
String token = bluetoothUnlockTokenUtil.generateBluetoothUnlockToken(order.getAppUserId(),
order.getId(), order.getVehicleId(), expirationTime);
@@ -3873,10 +3936,11 @@
vo.setVin(vin);
vo.setPassengerUid(order.getAppUserId());
BaseVehicleUserDto deliver = bluetoothUnlockClient.deliver(vo);
+ log.info("下发蓝牙token结果:{}", JSON.toJSONString(deliver));
if(null == deliver){
throw new ServiceException("下发蓝牙token失败");
}
- if(deliver.getCode() != 0){
+ if(200 != deliver.getCode()){
log.error("下发蓝牙token失败:{} {}", deliver.getMsg(), order.getOrderNumber());
throw new ServiceException(deliver.getMsg());
}
@@ -4036,13 +4100,25 @@
R<XpPoint> xpPointR = xpPointClient.queryById(xpOrder.getStartPointId());
if (xpPointR.getCode() == R.SUCCESS) {
XpPoint startPoint = xpPointR.getData();
- xpOrderDetailVO.setStartParkingTimeLimit(startPoint.getParkingTimeLimit());
+ Integer parkingTimeLimit = startPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != startPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(startPoint.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
+ xpOrderDetailVO.setStartParkingTimeLimit(parkingTimeLimit);
}
R<XpPoint> xpPointR1 = xpPointClient.queryById(xpOrder.getEndPointId());
if (xpPointR1.getCode() == R.SUCCESS) {
XpPoint endPoint = xpPointR1.getData();
- xpOrderDetailVO.setEndParkingTimeLimit(endPoint.getParkingTimeLimit());
+ Integer parkingTimeLimit = endPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != endPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(endPoint.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
+ xpOrderDetailVO.setEndParkingTimeLimit(parkingTimeLimit);
}
// // 算时间
// if (xpOrder.getStatus() == 1) {
@@ -4477,6 +4553,12 @@
// 查询起点点位
Long startPointId = xpOrder.getStartPointId();
XpPoint xpPoint = xpPointClient.queryById(startPointId).getData();
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(xpPoint.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
// 添加取消订单定时任务job 时间为点位限停时长
Map<String, ? extends Object> cancelJobMaps =
new ImmutableMap.Builder<String, Long>().
@@ -4486,7 +4568,7 @@
OrderCancelJob.class,
(OrderCancelJob.name + xpOrder.getId()).toUpperCase(),
TimeJobType.ORDER_CANCEL,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(xpPoint.getParkingTimeLimit())),
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(parkingTimeLimit)),
cancelJobMaps
);
@@ -4637,6 +4719,12 @@
// 添加车辆到达终点后限停时间到后驶离的定时任务
//时间到后将车辆状态回滚到空闲、添加巡游订单,解绑用户和车辆关系,车辆驶离点位
XpPoint point = xpPointClient.queryById(xpOrder.getEndPointId()).getData();
+ Integer parkingTimeLimit1 = point.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != point.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(point.getStationId()).getData();
+ parkingTimeLimit1 = xpStation.getParkingTimeLimit();
+ }
Map<String, ? extends Object> jobMaps =
new ImmutableMap.Builder<String, String>()
.put("id", xpOrder.getId().toString())
@@ -4660,7 +4748,7 @@
PushChainReactionOrderJob.class,
(PushChainReactionOrderJob.name + id).toUpperCase(),
TimeJobType.ADD_CHAIN_REACTION_ORDER_MISSION,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(parkingTimeLimit1)),
jobMaps
);
} else {
@@ -4668,7 +4756,7 @@
AddCruiseMissionJob.class,
(AddCruiseMissionJob.name + xpOrder.getId()).toUpperCase(),
TimeJobType.ADD_CRUISE_MISSION,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(parkingTimeLimit1)),
jobMaps
);
}
--
Gitblit v1.7.1