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-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCollectAddrServiceImpl.java | 8
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java | 16 +
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java | 92 ++----
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/MiniprogramConfigurer.java | 2
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/ActiveOrderController.java | 20 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTargetedServiceServiceImpl.java | 2
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java | 27 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRoutePlanServiceImpl.java | 16 +
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/OrderCancelJob.java | 2
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpStationServiceImpl.java | 16 +
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpTargetedServiceMapper.xml | 4
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java | 60 ++--
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java | 16 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java | 27 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java | 36 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/config/MiniprogramConfigurer.java | 2
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/config/MiniprogramConfigurer.java | 2
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java | 24
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java | 10
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java | 24 +
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/ReassignOrderController.java | 5
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpTargetedServiceService.java | 1
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java | 1
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/MiniprogramConfigurer.java | 2
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/MiniprogramConfigurer.java | 2
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 320 ++++++++++++++--------
/dev/null | 24 -
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpTargetedServiceMapper.java | 2
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java | 17
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml | 2
xp-robotaxi-map-boot/src/main/resources/mapper/XpStationMapper.xml | 43 ++
31 files changed, 527 insertions(+), 298 deletions(-)
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/MiniprogramConfigurer.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/MiniprogramConfigurer.java
index 323fe9d..b3b1b19 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/MiniprogramConfigurer.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/MiniprogramConfigurer.java
@@ -10,7 +10,7 @@
import javax.annotation.Resource;
@Slf4j
-//@Configuration
+@Configuration
public class MiniprogramConfigurer extends WebMvcConfigurerAdapter {
@Resource
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/SecurityConfig.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/SecurityConfig.java
deleted file mode 100644
index 0f36c9d..0000000
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/config/SecurityConfig.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.xiaopeng.account.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.web.SecurityFilterChain;
-
-/**
- * 放行 Spring Security 默认鉴权,由翼虎 SSO 拦截器处理登录态。
- */
-@Configuration
-public class SecurityConfig {
-
- @Bean
- public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
- http.csrf().disable()
- .formLogin().disable()
- .httpBasic().disable()
- .authorizeRequests()
- .anyRequest()
- .permitAll();
- return http.build();
- }
-}
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCollectAddrServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCollectAddrServiceImpl.java
index a1f6a28..fd3607e 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCollectAddrServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCollectAddrServiceImpl.java
@@ -181,10 +181,16 @@
}
private void fillPointInfo(XpAppUserCollectAddrVO collectAddrVO, XpPoint point, XpUserCollectAddrListQuery query) {
+ Integer parkingTimeLimit = point.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != point.getStationId()){
+ XpStation xpStation = xpStationClient.getXpStationById(point.getStationId()).getData();
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
collectAddrVO.setPointName(point.getPointName());
collectAddrVO.setPointAddress(point.getPointAddress());
collectAddrVO.setElectronicAreaId(point.getElectronicAreaId());
- collectAddrVO.setTime(point.getParkingTimeLimit());
+ collectAddrVO.setTime(parkingTimeLimit);
fillEffectiveTime(collectAddrVO, point.getEffectiveTimePeriod());
fillDistance(collectAddrVO, point, query);
}
diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
index 6f74482..af2fd1e 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -1,5 +1,6 @@
package com.xiaopeng.account.service.impl;
+import cn.hutool.core.util.DesensitizedUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -19,8 +20,7 @@
import com.xiaopeng.account.vo.CouponReceiptRecordDto;
import com.xiaopeng.account.vo.CouponReceiptRecordVo;
import com.xiaopeng.api.model.operation.XpWhitelist;
-import com.xiaopeng.api.vo.account.CalculateDiscountAmountVo;
-import com.xiaopeng.api.vo.account.CouponVo;
+import com.xiaopeng.api.vo.account.*;
import com.xiaopeng.account.vo.UserCouponListVo;
import com.xiaopeng.api.dto.account.NavigationCouponPickerRequest;
import com.xiaopeng.api.dto.account.UcUserInfo;
@@ -30,8 +30,6 @@
import com.xiaopeng.api.feignClient.pushMessage.SubscribeMessageClient;
import com.xiaopeng.api.model.operation.XpActicityStrategy;
import com.xiaopeng.api.query.account.XpAppUserCouponPageListQuery;
-import com.xiaopeng.api.vo.account.NavigationCouponItemVo;
-import com.xiaopeng.api.vo.account.NavigationCouponPickerVo;
import com.xiaopeng.api.feignClient.account.UserResourcesClient;
import com.xiaopeng.api.feignClient.operation.XpCouponClient;
import com.xiaopeng.api.feignClient.operation.XpWhiteListClient;
@@ -41,8 +39,10 @@
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.enums.MessageTemplateEnum;
import com.xiaopeng.common.core.utils.DateUtils;
+import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
+import com.xiaopeng.common.security.service.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -82,6 +82,9 @@
@Resource
private XpActicityClient xpActicityClient;
+
+ @Resource
+ private TokenService tokenService;
@Override
@@ -602,6 +605,7 @@
* @return
*/
public List<CouponReceiptRecordDto> getCouponReceiptRecord(PageInfo<CouponReceiptRecordDto> pageInfo, CouponReceiptRecordVo vo) {
+ LoginUser loginUser = tokenService.getLoginUser();
List<Long> appUserIds = new ArrayList<Long>();
if(StringUtils.isNotEmpty(vo.getName())){
List<XpWhitelist> data = xpWhiteListClient.getXpWhitelistByName(vo.getName()).getData();
@@ -625,7 +629,10 @@
XpWhitelist data = xpWhiteListClient.getXpWhitelistByUid(xpAppUserCoupon.getAppUserId()).getData();
if(null != data){
dto.setName(data.getNickName());
- dto.setPhone(data.getAccount());
+ dto.setPhone(SensitiveDataCryptoUtil.decryptIfPossible(data.getAccount()));
+ if(!loginUser.getPhoneDesensitizationExempt()){
+ dto.setPhone(DesensitizedUtil.mobilePhone(dto.getPhone()));
+ }
}
dto.setNum(1);
dto.setExpireTime(xpAppUserCoupon.getExpirationTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
diff --git a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/config/MiniprogramConfigurer.java b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/config/MiniprogramConfigurer.java
index d016ef1..47de3c8 100644
--- a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/config/MiniprogramConfigurer.java
+++ b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/config/MiniprogramConfigurer.java
@@ -10,7 +10,7 @@
import javax.annotation.Resource;
@Slf4j
-//@Configuration
+@Configuration
public class MiniprogramConfigurer extends WebMvcConfigurerAdapter {
@Resource
diff --git a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
index 74ade76..5cfd07b 100644
--- a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
+++ b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -566,19 +566,19 @@
@Override
public String saveOrder(XpOrderDto dto, String uid) {
//校验白名单用户
-// UcUserInfo userInfo = userResourcesClient.getBaseUserByUid(uid);
-// XpWhitelist xpWhitelist = xpWhitelistMapper.selectOne(new QueryWrapper<XpWhitelist>().eq("account", userInfo.getMobile())
-// .eq("status", 1).last(" and (DATE(expire_time) < DATE(NOW()) or expire_time is null)"));
-// if(null == xpWhitelist){
-// throw new ServiceException("未授权用户,不能使用该功能", I18nKeyConstant.NO_PERMISSION);
-// }
+ List<XpWhitelist> xpWhitelists = xpWhitelistMapper.selectList(new QueryWrapper<XpWhitelist>().eq("app_user_id", uid)
+ .eq("status", 1).eq("is_deleted", 0).last(" and (expire_time >= DATE(NOW()) or expire_time is null)"));
+ if(xpWhitelists.isEmpty()){
+ throw new ServiceException("未授权用户,不能使用该功能", I18nKeyConstant.NO_PERMISSION);
+ }
+ XpWhitelist xpWhitelist = xpWhitelists.get(0);
//判断最大下单数
-// if(null != xpWhitelist.getMaxOrderNum() && xpWhitelist.getMaxOrderNum()>0){
-// Long count = xpOrderClient.getUserOrderNum(Long.valueOf(uid)).getData();
-// if(xpWhitelist.getMaxOrderNum() <= count){
-// throw new ServiceException("已达到最大下单数量,不能使用该功能", I18nKeyConstant.MAX_ORDER_NUM);
-// }
-// }
+ if(null != xpWhitelist.getMaxOrderNum() && xpWhitelist.getMaxOrderNum()>0){
+ Long count = xpOrderClient.getUserOrderNum(Long.valueOf(uid)).getData();
+ if(xpWhitelist.getMaxOrderNum() <= count){
+ throw new ServiceException("已达到最大下单数量,不能使用该功能", I18nKeyConstant.MAX_ORDER_NUM);
+ }
+ }
// 是否在运营区域时间内
XpElectronicFenceArea xpElectronicFenceArea = xpElectronicFenceAreaMapper.selectById(dto.getXpElectronicFenceAreaId());
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
index b7bd54a..8babcb0 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
@@ -200,39 +200,29 @@
ElectronicFenceDetailVo.Numbers pointsNumbers = new ElectronicFenceDetailVo.Numbers();
if(CollUtil.isNotEmpty(pointList)){
LocalTime localTime = LocalTime.now();
- for (XpPoint xpPoint : pointList) {
- if(xpPoint.getVerificationStatus() !=5){
- //verificationStatus 验证状态 1=待验证、2=验证中、3=已验证 4验证失败 5待生效
- if (xpPoint.getVerificationStatus() == 1){
- pointsNumbers.setToBeTested(pointsNumbers.getToBeTested() + 1);
- }else if (xpPoint.getVerificationStatus() == 2){
- pointsNumbers.setTesting(pointsNumbers.getTesting() + 1);
- }else if (xpPoint.getVerificationStatus() == 4){
- pointsNumbers.setTestNotPass(pointsNumbers.getTestNotPass() + 1);
- }
- }else{
- //operationStatus 运营状态 1=待启用 2=启用中 3=已停用 4=已失效
- if(xpPoint.getOperationStatus() == 1){
- pointsNumbers.setPendingLaunch(pointsNumbers.getPendingLaunch() + 1);
- }
- else if (xpPoint.getOperationStatus() == 2) {
- boolean pointOperation = bootCommonService.getPointOperation(localTime, xpPoint);
- if (pointOperation) {
- pointsNumbers.setStartingUp(pointsNumbers.getStartingUp() + 1);
- }else{
- pointsNumbers.setPendingLaunch(pointsNumbers.getPendingLaunch() + 1);
- }
- }
- else if (xpPoint.getOperationStatus() == 3) {
- pointsNumbers.setExpired(pointsNumbers.getExpired() + 1);
- }
- else if (xpPoint.getOperationStatus() == 4) {
- pointsNumbers.setDisabled(pointsNumbers.getDisabled() + 1);
- }
- }
-
- }
+ //总数
pointsNumbers.setTotalNum(pointList.size());
+ //待测试
+ long count = pointList.stream().filter(xpPoint -> xpPoint.getVerificationStatus() == 1).count();
+ pointsNumbers.setToBeTested(Integer.parseInt(count+""));
+ //测试中
+ long count2 = pointList.stream().filter(xpPoint -> xpPoint.getVerificationStatus() == 2).count();
+ pointsNumbers.setTesting(Integer.parseInt(count2+""));
+ //测试不通过
+ long count3 = pointList.stream().filter(xpPoint -> xpPoint.getVerificationStatus() == 4).count();
+ pointsNumbers.setTestNotPass(Integer.parseInt(count3+""));
+ //待启用
+ long count4 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 1 && xpPoint.getVerificationStatus() == 3).count();
+ pointsNumbers.setPendingLaunch(Integer.parseInt(count4+""));
+ //启用中
+ long count5 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 2 && xpPoint.getVerificationStatus() == 3).count();
+ pointsNumbers.setStartingUp(Integer.parseInt(count5+""));
+ //已停用
+ long count6 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 3 && xpPoint.getVerificationStatus() == 3).count();
+ pointsNumbers.setDisabled(Integer.parseInt(count6+""));
+ //已失效
+ long count7 = pointList.stream().filter(xpPoint -> xpPoint.getOperationStatus() == 4 && xpPoint.getVerificationStatus() == 3).count();
+ pointsNumbers.setExpired(Integer.parseInt(count7+""));
}
res.setPointsNumbers(pointsNumbers);
}
@@ -244,34 +234,20 @@
ElectronicFenceDetailVo.Numbers stationNumbers = new ElectronicFenceDetailVo.Numbers();
if(CollUtil.isNotEmpty(stationList)){
- LocalTime localTime = LocalTime.now();
//status 场站状态 0=草稿 1=待启用 2=启用中 3=已停用 4=失效
- for (XpStation xpStation : stationList) {
- switch (xpStation.getStatus()) {
- case 0:
- stationNumbers.setDraft(stationNumbers.getDraft() + 1);
- break;
- case 1:
- stationNumbers.setPendingLaunch(stationNumbers.getPendingLaunch() + 1);
- break;
- case 2: //启动中 判断 待启动的状态 ,当前时间在 运营时间 内是启动中,否则是 待启动
-
- boolean stationOperation = bootCommonService.getStationOperation(localTime, xpStation.getOperationType(), xpStation.getEffectivePeriod(), xpStation.getEffectiveTimePeriod(), xpStation.getFenceOperationStrategy());
- if (stationOperation) {
- stationNumbers.setStartingUp(stationNumbers.getStartingUp() + 1);
- }else{
- stationNumbers.setPendingLaunch(stationNumbers.getPendingLaunch() + 1);
- }
- break;
- case 3:
- stationNumbers.setDisabled(stationNumbers.getDisabled() + 1);
- break;
- case 4:
- stationNumbers.setExpired(stationNumbers.getExpired() + 1);
- break;
- }
- }
stationNumbers.setTotalNum(stationList.size());
+ //待生效
+ long count1 = stationList.stream().filter(xpStation -> xpStation.getStatus() == 1).count();
+ stationNumbers.setPendingLaunch(Integer.parseInt(count1+""));
+ //启用中
+ long count2 = stationList.stream().filter(xpStation -> xpStation.getStatus() == 2).count();
+ stationNumbers.setStartingUp(Integer.parseInt(count2+""));
+ //已停用
+ long count3 = stationList.stream().filter(xpStation -> xpStation.getStatus() == 3).count();
+ stationNumbers.setDisabled(Integer.parseInt(count3+""));
+ //已失效
+ long count4 = stationList.stream().filter(xpStation -> xpStation.getStatus() == 4).count();
+ stationNumbers.setExpired(Integer.parseInt(count4+""));
}
res.setStationNumbers(stationNumbers);
return R.ok(res);
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
index f74df0d..fa2f00d 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
@@ -302,6 +302,12 @@
if (!intime) {
continue;
}
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationService.getById(xpPoint.getStationId());
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
// 计算距离 小于的站点
double v = FastDistanceCalculator.distanceFast(dto.getLatitude(), dto.getLongitude(), xpPoint.getPointLat(), xpPoint.getPointLon());
if (v < orderDistance) {
@@ -312,7 +318,7 @@
nearestNextVo.setLongitude(xpPoint.getPointLon());
nearestNextVo.setDistance(v);
nearestNextVo.setAddress(xpPoint.getPointAddress());
- nearestNextVo.setTime(xpPoint.getParkingTimeLimit());
+ nearestNextVo.setTime(parkingTimeLimit);
nearestNextVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
@@ -441,6 +447,12 @@
List<XpPoint> xpPoints = this.baseMapper.selectBatchIds(historyStartPointsDto.getPointIds());
ArrayList<XpHistoryStartPointsVo> resultList = new ArrayList<>(10);
for (XpPoint xpPoint : xpPoints) {
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationService.getById(xpPoint.getStationId());
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
XpHistoryStartPointsVo xpHistoryStartPointsVo = new XpHistoryStartPointsVo();
xpHistoryStartPointsVo.setName(xpPoint.getPointName());
xpHistoryStartPointsVo.setAddress(xpPoint.getPointAddress());
@@ -449,7 +461,7 @@
xpHistoryStartPointsVo.setId(xpPoint.getId());
double distanced = FastDistanceCalculator.distanceFastKm(historyStartPointsDto.getLat(), historyStartPointsDto.getLon(), xpPoint.getPointLat(), xpPoint.getPointLon());
xpHistoryStartPointsVo.setDistance(distanced);
- xpHistoryStartPointsVo.setTime(xpPoint.getParkingTimeLimit());
+ xpHistoryStartPointsVo.setTime(parkingTimeLimit);
xpHistoryStartPointsVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
resultList.add(xpHistoryStartPointsVo);
@@ -463,6 +475,12 @@
List<XpPoint> xpPoints = this.baseMapper.selectBatchIds(historyEndPointsDto.getPointIds());
ArrayList<XpHistoryEndPointsVo> resultList = new ArrayList<>(10);
for (XpPoint xpPoint : xpPoints) {
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationService.getById(xpPoint.getStationId());
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
XpHistoryEndPointsVo xpHistoryEndPointsVo = new XpHistoryEndPointsVo();
xpHistoryEndPointsVo.setName(xpPoint.getPointName());
xpHistoryEndPointsVo.setAddress(xpPoint.getPointAddress());
@@ -471,7 +489,7 @@
xpHistoryEndPointsVo.setId(xpPoint.getId());
double distanced = FastDistanceCalculator.distanceFastKm(historyEndPointsDto.getLat(), historyEndPointsDto.getLon(), xpPoint.getPointLat(), xpPoint.getPointLon());
xpHistoryEndPointsVo.setDistance(distanced);
- xpHistoryEndPointsVo.setTime(xpPoint.getParkingTimeLimit());
+ xpHistoryEndPointsVo.setTime(parkingTimeLimit);
xpHistoryEndPointsVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
resultList.add(xpHistoryEndPointsVo);
}
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpStationServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpStationServiceImpl.java
index 632892e..18c4497 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpStationServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpStationServiceImpl.java
@@ -3,6 +3,7 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.model.map.XpGeoFencingPolygon;
import com.xiaopeng.api.model.operation.*;
@@ -12,6 +13,7 @@
import com.xiaopeng.api.vo.operation.XpStationVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
+import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.map.constant.I18nKeyConstant;
@@ -94,6 +96,16 @@
}
@Override
public List<XpStation> findList(PageInfo<XpStation> pageInfo, XpStationQuery query) {
+ if(StringUtils.isNotEmpty(query.getStationPointNum())){
+ if(query.getStationPointNum().contains(",")){
+ throw new ServiceException("点位数量只能单选");
+ }
+ if(query.getStationPointNum().contains("gt")){
+ query.setStationPointNum(query.getStationPointNum().replace("gt", " > "));
+ }else{
+ query.setStationPointNum(" = " + query.getStationPointNum());
+ }
+ }
List<XpStation> list = null;
if(pageInfo ==null){
list = this.baseMapper.pageList(query);
@@ -109,8 +121,8 @@
}
PointPageListListQuery queryPoint = new PointPageListListQuery();
queryPoint.setStationIds(stationIds);
- List<XpPoint> xpPoints = xpPointService.pageList(null, queryPoint);
-
+ List<XpPoint> xpPoints = xpPointService.list(new QueryWrapper<XpPoint>().in("station_id", stationIds)
+ .eq("operation_status", 2).eq("is_deleted", 0));
// 将点位按场站ID分组,提高后续处理效率
Map<Long, List<XpPoint>> pointMap = xpPoints.stream()
.collect(Collectors.groupingBy(XpPoint::getStationId));
diff --git a/xp-robotaxi-map-boot/src/main/resources/mapper/XpStationMapper.xml b/xp-robotaxi-map-boot/src/main/resources/mapper/XpStationMapper.xml
index b1fc5f9..825c10a 100644
--- a/xp-robotaxi-map-boot/src/main/resources/mapper/XpStationMapper.xml
+++ b/xp-robotaxi-map-boot/src/main/resources/mapper/XpStationMapper.xml
@@ -4,9 +4,39 @@
<select id="pageList" resultType="com.xiaopeng.api.model.operation.XpStation">
- select a.*,b.operation_strategy as fence_operation_strategy
+ select
+ a.id,
+ a.station_name as stationName,
+ a.station_number as stationNumber,
+ a.status,
+ a.city_code as cityCode,
+ a.city_name as cityName,
+ a.electronic_id as electronicId,
+ a.electronic_area_id as electronicAreaId,
+ a.default_point_id as defaultPointId,
+ a.station_area as stationArea,
+ a.fence_points as fencePoints,
+ a.center_lon as centerLon,
+ a.center_lat as centerLat,
+ a.parking_time_limit as parkingTimeLimit,
+ a.operation_type as operationType,
+ a.effective_period as effectivePeriod,
+ a.effective_time_period as effectiveTimePeriod,
+ a.sync_points as syncPoints,
+ a.remark,
+ a.stop_reason as stopReason,
+ a.test_fail_reason as testFailReason,
+ a.effect_time as effectTime,
+ a.sort_no as sortNo,
+ a.is_deleted as isDeleted,
+ a.create_time as createTime,
+ a.update_time as updateTime,
+ a.create_by as createBy,
+ a.update_by as updateBy,
+ b.operation_strategy as fence_operation_strategy
from xp_station a
inner join xp_electronic_fence b on a.electronic_id = b.id and b.is_deleted = 0
+ left join (select station_id,count(id) as point_num from xp_point where is_deleted=0 group by station_id) c on a.id = c.station_id
where a.is_deleted = 0
<if test="query.id != null">
and a.id = #{query.id}
@@ -40,7 +70,12 @@
<if test="query.createBy != null and query.createBy!=''">
and a.create_by like concat('%',#{query.createBy},'%')
</if>
-
+ <if test="query.createStartTime != null and query.createStartTime!=''">
+ and a.create_time >= #{query.createStartTime}
+ </if>
+ <if test="query.createEndTime != null and query.createEndTime!=''">
+ and #{query.createEndTime} >= a.create_time
+ </if>
<if test="query.updateBy != null and query.updateBy!=''">
and a.update_by like concat('%',#{query.updateBy},'%')
</if>
@@ -51,9 +86,7 @@
and #{query.updateEndTime} >= a.update_time
</if>
<if test="query.stationPointNum != null and query.stationPointNum!=''">
- and (
- FIND_IN_SET( (SELECT COUNT(xp.id) FROM xp_point xp WHERE xp.is_deleted=0 and xp.station_id = a.id ),#{query.stationPointNum})
- )
+ and c.point_num #{query.stationPointNum}
</if>
GROUP BY a.id
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/config/MiniprogramConfigurer.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/config/MiniprogramConfigurer.java
index 7479812..a0063c3 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/config/MiniprogramConfigurer.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/config/MiniprogramConfigurer.java
@@ -10,7 +10,7 @@
import javax.annotation.Resource;
@Slf4j
-//@Configuration
+@Configuration
public class MiniprogramConfigurer extends WebMvcConfigurerAdapter {
@Resource
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java
index 0d14245..c2e7fa4 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/OssController.java
@@ -35,22 +35,22 @@
public R<FileUploadVO> uploadOSS(@RequestParam("file") MultipartFile file) {
try {
// 上传并返回访问地址
-// String fileName = file.getOriginalFilename();
-// String prefix = fileName.substring(fileName.lastIndexOf("."));
-// long fileSize = file.getSize();
-// String fileId = UUID.randomUUID().toString();
-// //上传文件
-// aliOssService.uploadFile(file.getBytes(), fileId);
-// String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true);
-// FileUploadVO fileUploadVO = new FileUploadVO();
-// fileUploadVO.setId(fileId);
-// fileUploadVO.setName(fileName);
-// fileUploadVO.setUrl(downloadUrl);
-
+ String fileName = file.getOriginalFilename();
+ String prefix = fileName.substring(fileName.lastIndexOf("."));
+ long fileSize = file.getSize();
+ String fileId = UUID.randomUUID().toString();
+ //上传文件
+ aliOssService.uploadFile(file.getBytes(), fileId);
+ String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true);
FileUploadVO fileUploadVO = new FileUploadVO();
- fileUploadVO.setId(UUID.randomUUID().toString());
- fileUploadVO.setName("测试.jpg");
- fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png");
+ fileUploadVO.setId(fileId);
+ fileUploadVO.setName(fileName);
+ fileUploadVO.setUrl(downloadUrl);
+
+// FileUploadVO fileUploadVO = new FileUploadVO();
+// fileUploadVO.setId(UUID.randomUUID().toString());
+// fileUploadVO.setName("测试.jpg");
+// 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);
@@ -66,22 +66,22 @@
public R<FileUploadVO> uploadOSS1(@RequestParam("file") MultipartFile file) {
try {
// 上传并返回访问地址
-// String fileName = file.getOriginalFilename();
-// String prefix = fileName.substring(fileName.lastIndexOf("."));
-// long fileSize = file.getSize();
-// String fileId = UUID.randomUUID().toString();
-// //上传文件
-// aliOssService.uploadFile(file.getBytes(), fileId);
-// String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true);
-// FileUploadVO fileUploadVO = new FileUploadVO();
-// fileUploadVO.setId(fileId);
-// fileUploadVO.setName(fileName);
-// fileUploadVO.setUrl(downloadUrl);
-
+ String fileName = file.getOriginalFilename();
+ String prefix = fileName.substring(fileName.lastIndexOf("."));
+ long fileSize = file.getSize();
+ String fileId = UUID.randomUUID().toString();
+ //上传文件
+ aliOssService.uploadFile(file.getBytes(), fileId);
+ String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true);
FileUploadVO fileUploadVO = new FileUploadVO();
- fileUploadVO.setId(UUID.randomUUID().toString());
- fileUploadVO.setName("测试.jpg");
- fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png");
+ fileUploadVO.setId(fileId);
+ fileUploadVO.setName(fileName);
+ fileUploadVO.setUrl(downloadUrl);
+
+// FileUploadVO fileUploadVO = new FileUploadVO();
+// fileUploadVO.setId(UUID.randomUUID().toString());
+// fileUploadVO.setName("测试.jpg");
+// 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);
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/ReassignOrderController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/ReassignOrderController.java
index 7c8b69b..156c870 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/ReassignOrderController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/ReassignOrderController.java
@@ -53,7 +53,6 @@
*/
@Scheduled(cron = "0/3 * * * * ?")
public void taskReassignPushOrder() {
-// System.out.println("3秒执行一次");
//从redis 获取数据 同步 处理数据
R<List<XpOrderReassign>> r = xpOrderReassignClient.findListOrderReassign();
if(r.getCode()==200 && !r.getData().isEmpty()){
@@ -62,7 +61,9 @@
//改派次数小4
if(!reassign.getIsComplete() && reassign.getReassignNum()<=3){
XpOrderReassign reassign2 = taskOrderUtil.reassignPushOrder(10, String.valueOf(reassign.getAppUserId()),reassign.getLongitude(),reassign.getLatitude(),reassign.getOrderNumber());
- xpOrderReassignClient.saveOrderReassign(reassign2);
+ if(null != reassign2){
+ xpOrderReassignClient.saveOrderReassign(reassign2);
+ }
}
}
}
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
index ef52092..2b77da3 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
@@ -10,14 +10,18 @@
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.core.io.resource.ClassPathResource;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.xiaopeng.api.dto.account.UcUserInfo;
import com.xiaopeng.api.feignClient.account.SysGroupMenuClient;
+import com.xiaopeng.api.feignClient.account.UserResourcesClient;
import com.xiaopeng.api.model.operation.XpInvitationCode;
import com.xiaopeng.api.model.operation.XpWhitelist;
import com.xiaopeng.api.vo.account.LoginUser;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.DateUtils;
+import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
import com.xiaopeng.common.core.utils.WebUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.log.annotation.AdminOperationLog;
@@ -36,6 +40,7 @@
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.transaction.annotation.Transactional;
@@ -82,6 +87,8 @@
private SysGroupMenuClient groupMenuClient;
@Resource
private TokenService tokenService;
+ @Autowired
+ private UserResourcesClient userResourcesClient;
private static final Pattern CHINESE_PATTERN = Pattern.compile("\\p{IsHan}");
private static final long INVITATION_CODE_LIMIT = 500L;
@@ -304,11 +311,14 @@
String res = replace.replace("/", "-");
locationExcel.setBindTime(res);
}
-
- xpInvitationCode.setBindTime(DateUtils.stringToLocalDateTime(locationExcel.getBindTime()));
- xpInvitationCode.setStatus(2);
+ UcUserInfo userByMobile = userResourcesClient.getUserByMobile(locationExcel.getBindAccount());
+ if(null == userByMobile || StringUtils.isEmpty(userByMobile.getUid())){
+ throw new ServiceException("手机号"+locationExcel.getBindAccount()+"查询用户失败");
+ }
XpWhitelist xpWhitelist = new XpWhitelist();
- xpWhitelist.setAccount(locationExcel.getBindAccount());
+ xpWhitelist.setAccount(SensitiveDataCryptoUtil.encrypt(locationExcel.getBindAccount()));
+ xpWhitelist.setNickName(userByMobile.getNickName());
+ xpWhitelist.setAppUserId(userByMobile.getUid());
xpWhitelist.setStatus(true);
xpWhitelist.setIsPriorityDispatch(false);
xpWhitelist.setWhitelistSource(2);
@@ -396,6 +406,15 @@
public R deleteByIds(String ids){
// 再转化为Long类型
List<Long> longs = Arrays.stream(ids.split(",")).map(Long::parseLong).collect(Collectors.toList());
+ List<XpInvitationCode> xpInvitationCodes = xpInvitationCodeService.listByIds(longs);
+ for (XpInvitationCode xpInvitationCode : xpInvitationCodes) {
+ XpWhitelist one = xpWhitelistService.getOne(new QueryWrapper<XpWhitelist>().eq("whitelist_source", 2)
+ .eq("status", 1).eq("is_deleted", 0)
+ .eq("account", SensitiveDataCryptoUtil.encrypt(xpInvitationCode.getBindAccount())).last(" limit 1"));
+ if(null != one){
+ xpWhitelistService.removeById(one);
+ }
+ }
xpInvitationCodeService.removeBatchByIds(longs);
return R.ok();
}
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
index 1308beb..85206d8 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
@@ -31,6 +31,8 @@
import com.xiaopeng.operation.query.WhitelistPageListQuery;
import com.xiaopeng.operation.service.IXpWhitelistOperlogService;
import com.xiaopeng.operation.service.IXpWhitelistService;
+import com.xiaopeng.operation.vo.XpAgreementVo;
+import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -46,6 +48,7 @@
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
@@ -533,4 +536,17 @@
XpWhitelist one = xpWhitelistService.getOne(new QueryWrapper<XpWhitelist>().eq("app_user_id", uid).eq("is_deleted", 0));
return R.ok(one);
}
+
+
+
+ @ApiOperation(value = "获取白名单权限", tags = {"小程序-首页"})
+ @GetMapping("/api/v1/mini-program/whitelist/getUserWhitelist")
+ @XpClientCheck(checkToken = false, checkOtpToken = true)
+ public R<Boolean> getUserWhitelist(HttpServletRequest request){
+ String uid = request.getHeader("XP-Uid");
+ long count = xpWhitelistService.count(new QueryWrapper<XpWhitelist>()
+ .eq("app_user_id", uid).eq("status", 1).eq("is_deleted", 0)
+ .last(" and (DATE(expire_time) > DATE(NOW()) or expire_time is null)"));
+ return R.ok(count > 0);
+ }
}
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpTargetedServiceMapper.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpTargetedServiceMapper.java
index 4ab2aa8..0ce6107 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpTargetedServiceMapper.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/mapper/XpTargetedServiceMapper.java
@@ -35,6 +35,6 @@
* @param time 时间
* @return
*/
- List<XpTargetedServiceVehicleVo> findListInfoVehicle(@Param("appUserId") Long appUserId, @Param("cityCode") String cityCode, @Param("time")LocalDateTime time);
+ List<XpTargetedServiceVehicleVo> findListInfoVehicle(@Param("appUserId") Long appUserId, @Param("cityCode") String cityCode);
}
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpTargetedServiceService.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpTargetedServiceService.java
index 6786271..a3a46e6 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpTargetedServiceService.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpTargetedServiceService.java
@@ -9,7 +9,6 @@
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Set;
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java
index eac9104..1b1861f 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpInvitationCodeServiceImpl.java
@@ -1,9 +1,13 @@
package com.xiaopeng.operation.service.impl;
+import com.xiaopeng.api.dto.account.UcUserInfo;
+import com.xiaopeng.api.feignClient.account.UserResourcesClient;
import com.xiaopeng.api.model.operation.XpInvitationCode;
import com.xiaopeng.api.model.operation.XpPoint;
import com.xiaopeng.api.model.operation.XpWhitelist;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.exception.ServiceException;
+import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.operation.constant.I18nKeyConstant;
import com.xiaopeng.operation.mapper.XpInvitationCodeMapper;
@@ -15,6 +19,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
+import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -32,6 +37,8 @@
@Autowired
private XpWhitelistMapper xpWhitelistMapper;
+ @Autowired
+ private UserResourcesClient userResourcesClient;
private static final long INVITATION_CODE_LIMIT = 500L;
@Override
public PageInfo<XpInvitationCode> pageList(InvitationPageListQuery query) {
@@ -80,13 +87,18 @@
xpInvitationCode.setBindTime(LocalDateTime.now());
xpInvitationCode.setStatus(2);
addInvitationCodeList.add(xpInvitationCode);
+ UcUserInfo userByMobile = userResourcesClient.getUserByMobile(phone);
+ if(null == userByMobile || StringUtils.isEmpty(userByMobile.getUid())){
+ throw new ServiceException("手机号"+phone+"查询用户失败");
+ }
XpWhitelist xpWhitelist = new XpWhitelist();
- xpWhitelist.setAccount(phone);
+ xpWhitelist.setAccount(SensitiveDataCryptoUtil.encrypt(phone));
+ xpWhitelist.setNickName(userByMobile.getNickName());
+ xpWhitelist.setAppUserId(userByMobile.getUid());
xpWhitelist.setStatus(true);
xpWhitelist.setIsPriorityDispatch(false);
xpWhitelist.setWhitelistSource(2);
xpWhitelistMapper.insert(xpWhitelist);
-
}
this.saveBatch(addInvitationCodeList);
return R.ok();
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
index fce9338..59fe59f 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -28,16 +28,14 @@
import com.xiaopeng.operation.mapper.XpPointMapper;
import com.xiaopeng.operation.mapper.XpSystemSettingMapper;
import com.xiaopeng.operation.query.PointByNameQuery;
-import com.xiaopeng.operation.service.IXpElectronicFenceAreaService;
-import com.xiaopeng.operation.service.IXpElectronicFenceService;
-import com.xiaopeng.operation.service.IXpTradingStrategyService;
-import com.xiaopeng.operation.service.XpPointService;
+import com.xiaopeng.operation.service.*;
import com.xiaopeng.operation.utils.TimeRangeChecker;
import com.xiaopeng.operation.utils.holiday.HolidayUtil;
import com.xiaopeng.operation.utils.map.FastDistanceCalculator;
import com.xiaopeng.api.vo.operation.NearestNextVo;
import com.xiaopeng.operation.vo.NearestVo;
import com.xiaopeng.operation.vo.OrderDistanceVo;
+import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@@ -88,6 +86,10 @@
@Resource
private IXpTradingStrategyService xpTradingStrategyService;
+
+ @Resource
+ @Lazy
+ private XpStationService xpStationService;
/**
* 如果站点是挂在场站下的 需要返回一个场站id stationId
@@ -389,7 +391,12 @@
}
}
-
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationService.getById(xpPoint.getStationId());
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
XpHistoryStartPointsVo xpHistoryStartPointsVo = new XpHistoryStartPointsVo();
xpHistoryStartPointsVo.setOperationStatus(1);
xpHistoryStartPointsVo.setName(xpPoint.getPointName());
@@ -399,7 +406,7 @@
xpHistoryStartPointsVo.setId(xpPoint.getId());
double distanced = FastDistanceCalculator.distanceFast(historyStartPointsDto.getLat(), historyStartPointsDto.getLon(), xpPoint.getPointLat(), xpPoint.getPointLon());
xpHistoryStartPointsVo.setDistance(distanced);
- xpHistoryStartPointsVo.setTime(xpPoint.getParkingTimeLimit());
+ xpHistoryStartPointsVo.setTime(parkingTimeLimit);
xpHistoryStartPointsVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
// 判断是否收藏
if(pointIdsByUserId!=null && !pointIdsByUserId.getData().isEmpty()){
@@ -475,6 +482,12 @@
continue;
}
}
+ Integer parkingTimeLimit = xpPoint.getParkingTimeLimit();
+ //如果点位位于场站内,则使用场站的限停时间
+ if(null != xpPoint.getStationId()){
+ XpStation xpStation = xpStationService.getById(xpPoint.getStationId());
+ parkingTimeLimit = xpStation.getParkingTimeLimit();
+ }
XpHistoryEndPointsVo xpHistoryEndPointsVo = new XpHistoryEndPointsVo();
xpHistoryEndPointsVo.setOperationStatus(1);
xpHistoryEndPointsVo.setName(xpPoint.getPointName());
@@ -484,7 +497,7 @@
xpHistoryEndPointsVo.setId(xpPoint.getId());
double distanced = FastDistanceCalculator.distanceFast(historyEndPointsDto.getLat(), historyEndPointsDto.getLon(), xpPoint.getPointLat(), xpPoint.getPointLon());
xpHistoryEndPointsVo.setDistance(distanced);
- xpHistoryEndPointsVo.setTime(xpPoint.getParkingTimeLimit());
+ xpHistoryEndPointsVo.setTime(parkingTimeLimit);
xpHistoryEndPointsVo.setElectronicAreaId(xpPoint.getElectronicAreaId());
// 判断是否收藏
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRoutePlanServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRoutePlanServiceImpl.java
index 3822585..8c63010 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRoutePlanServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRoutePlanServiceImpl.java
@@ -1,5 +1,6 @@
package com.xiaopeng.operation.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaopeng.api.model.operation.XpOpenCity;
import com.xiaopeng.api.model.operation.XpRoutePlan;
import com.xiaopeng.common.core.exception.ServiceException;
@@ -49,6 +50,16 @@
if (openCity == null) {
throw new ServiceException("开通城市不存在");
}
+ long count = this.count(new QueryWrapper<XpRoutePlan>().eq("open_city_id", openCity.getId())
+ .eq("is_deleted", 0));
+ if(count >= 3){
+ throw new ServiceException("同一个城市只能添加三个路线规划");
+ }
+ count = this.count(new QueryWrapper<XpRoutePlan>().eq("open_city_id", openCity.getId())
+ .eq("plan_name", dto.getPlanName()).eq("is_deleted", 0));
+ if(count > 0){
+ throw new ServiceException("路线规划名称不能重复");
+ }
// 2. 创建路线规划配置对象
XpRoutePlan routePlan = new XpRoutePlan();
@@ -82,6 +93,11 @@
if (openCity == null) {
throw new ServiceException("开通城市不存在");
}
+ long count = this.count(new QueryWrapper<XpRoutePlan>().eq("open_city_id", openCity.getId())
+ .eq("plan_name", dto.getPlanName()).eq("is_deleted", 0).ne("id", dto.getId()));
+ if(count > 0){
+ throw new ServiceException("路线规划名称不能重复");
+ }
// 3. 更新字段
routePlan.setOpenCityId(dto.getOpenCityId());
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
index 4a67dd8..d0bab2f 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
@@ -106,6 +106,7 @@
.set(XpSystemSetting::getXczSyTime, xpSystemSetting.getXczSyTime())
.set(XpSystemSetting::getXczHmSpeedPerHour, xpSystemSetting.getXczHmSpeedPerHour())
.set(XpSystemSetting::getXczHmDuration, xpSystemSetting.getXczHmDuration())
+ .set(XpSystemSetting::getOperateFree, xpSystemSetting.getOperateFree())
.update();
}else {
save(xpSystemSetting);
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTargetedServiceServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTargetedServiceServiceImpl.java
index 25bae83..a35de89 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTargetedServiceServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTargetedServiceServiceImpl.java
@@ -216,7 +216,7 @@
@Override
public List<XpTargetedServiceVehicleVo> findListByUserIdAndCityCode(Long appUserId, String cityCode) {
- List<XpTargetedServiceVehicleVo> listInfoVehicle = baseMapper.findListInfoVehicle(appUserId, cityCode, LocalDateTime.now());
+ List<XpTargetedServiceVehicleVo> listInfoVehicle = baseMapper.findListInfoVehicle(appUserId, cityCode);
if(!listInfoVehicle.isEmpty()){
// 提取车辆ID列表
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
index 8c29513..af2bc5a 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -1228,6 +1228,13 @@
continue;
}
log.info("连环派单查询车辆结果 {} {}", orderNo, JSON.toJSONString(servingVehicles.getData()));
+ if(!isTargetedService){
+ servingVehicles.getData().removeAll(vehicleVinByTargetedService);
+ log.info("剔除定向服务车辆后的结果 {} 单号 {}", JSON.toJSONString(servingVehicles), orderNo);
+ }else{
+ servingVehicles.setData(vehicleVinByTargetedService);
+ log.info("查找定向服务车辆后的结果 {} 单号 {}", JSON.toJSONString(servingVehicles), orderNo);
+ }
XpTradingStrategyDetailVO strategyDetailVO = tradingStrategyClient.queryById().getData();
log.info("连环排查推单逻辑 {} {}", orderNo, JSON.toJSONString(strategyDetailVO));
@@ -1247,7 +1254,8 @@
XpOrder xpOrder1 = xpOrderClient.queryOrderById(vehiclePosition.getOrderId()).getData();
Object cacheObject = redisService.getCacheObject(CacheConstants.navigationEnd(xpOrder1.getAppUserId().toString()));
RouteVo routeRemain = JSON.parseObject(cacheObject.toString(), RouteVo.class);
- if (routeRemain.getDuration() / 60 > timeRegardAsEnding && routeRemain.getDistance() / 1000 > distanceRegardAsEnding) {
+ //距离和时间只要有一个满足条件就达到候选对象
+ if (routeRemain.getDuration() > timeRegardAsEnding * 60 && routeRemain.getDistance() > distanceRegardAsEnding * 1000) {
log.info("连环派单 {} 车辆订单结束时间不满足条件 {} 秒 {} 米 {}", vin, routeRemain.getDuration(), routeRemain.getDistance(), orderNo);
continue;
}
@@ -1260,21 +1268,22 @@
RouteVo route = xpMapClient.getDistanceAndDuration(next).getData();
Object new_cacheObject = redisService.getCacheObject(CacheConstants.navigationEnd(xpOrder.getAppUserId().toString()));
RouteVo new_routeRemain = JSON.parseObject(new_cacheObject.toString(), RouteVo.class);
- long xh = (new_routeRemain.getDistance() + route.getDistance()) / 1000 + backupPower;
- if(vehiclePosition.getMileageRange() < xh){
- log.info("连环派单 {} 车辆剩余续航不满足派车条件 {} KM {}", vin, xh, orderNo);
+ //总续航里程 米
+ long xh = new_routeRemain.getDistance() + route.getDistance() + backupPower * 1000;
+ if(vehiclePosition.getMileageRange() * 1000 < xh){
+ log.info("连环派单 {} 车辆剩余续航不满足派车条件 {} 米 {}", vin, xh, orderNo);
continue;
}
//下一单的起点距离本单终点小于X公里,或者下一单的用车时间与本单的预计结束时间偏差小于X分钟
- next = new RouteAndFareDto();
- next.setOrigin(new LonLatDto(xpOrder1.getEndLon(),xpOrder1.getEndLat()));
- next.setDestination(new LonLatDto(xpOrder.getStartLon(),xpOrder.getStartLat()));
- route = xpMapClient.getDistanceAndDuration(next).getData();
- //相差秒时间
- long time = routeRemain.getDuration() - xpOrder.getCreateTime().toEpochSecond(ZoneOffset.of("+8"));
- if(route.getDistance() / 1000 <= destToPassenger || time / 60 <= endingTimeToUseTime){
- log.info("连环派单 {} 找到满足条件的车辆 {}", vin, orderNo);
+ //上一单的预估结束时间
+ LocalDateTime localDateTime = LocalDateTime.now().plusSeconds(routeRemain.getDuration());
+ //上一单预估结束时间与本单用车时间差 秒
+ long time = localDateTime.toEpochSecond(ZoneOffset.of("+8")) - xpOrder1.getCreateTime().toEpochSecond(ZoneOffset.of("+8"));
+ if(route.getDistance() <= destToPassenger * 1000 || time <= endingTimeToUseTime * 60){
+ log.info("连环派单 {} 找到满足条件的车辆 {} 距离 {} 时间 {}", orderNo, vin, route.getDistance(), time);
+ log.info("上一单终点与当前订单起点距离 {} 米 {}", route.getDistance(), orderNo);
+ log.info("当前订单用车时间与上一单预估结束时间偏差 {} 秒 {}", time, orderNo);
// 设置接驾导航数据
//将上一单的剩余导航添加到接驾导航中
route.getPolyline().addAll(0, routeRemain.getPolyline());
@@ -1286,6 +1295,7 @@
xpOrder.setAcceptanceTime(LocalDateTime.now());
xpOrder.setStatus(2);
xpOrderClient.updateOrder(xpOrder);
+ log.info("连环派单 {} 修改订单状态为接单成功 {}", orderNo, xpOrder.getId());
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderId", xpOrder.getId());
@@ -1294,7 +1304,7 @@
redisService.setCacheObject(CacheConstants.nextOrder(xpOrder1.getId().toString()), jsonObject.toJSONString());
redisService.setCacheObject(CacheConstants.navigationStart(xpOrder.getAppUserId().toString()), JSON.toJSONString(route));
redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
- log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
+ log.info("连环派单 {} 设置下一单接驾导航数据 {}", orderNo, JSON.toJSONString(route));
//构建推送消息
Map<String, Object> params = new HashMap<>();
diff --git a/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpTargetedServiceMapper.xml b/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpTargetedServiceMapper.xml
index 71ee891..86c6c99 100644
--- a/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpTargetedServiceMapper.xml
+++ b/xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpTargetedServiceMapper.xml
@@ -39,11 +39,11 @@
FROM xp_targeted_service a
INNER JOIN xp_targeted_service_whitelist c on c.targeted_service_id = a.id
INNER JOIN xp_whitelist w on w.id = c.whitelist_id and w.`status` = 1 and w.is_priority_dispatch = 1
- and ( w.expire_time > #{time} or w.end_time is null )
+ and (w.expire_time >= DATE(now()) or w.expire_time is null )
left JOIN xp_targeted_service_vehicle b on b.targeted_service_id = a.id
WHERE a.is_deleted = 0 and a.`status` =1
and a.city_code = #{cityCode}
- and ( a.is_long_valid =1 or #{time} between a.start_time and a.end_time > )
+ and ( a.is_long_valid =1 or now() between a.start_time and a.end_time)
and w.app_user_id = #{appUserId}
</select>
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/MiniprogramConfigurer.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/MiniprogramConfigurer.java
index 2a6e71e..fd72c03 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/MiniprogramConfigurer.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/config/MiniprogramConfigurer.java
@@ -10,7 +10,7 @@
import javax.annotation.Resource;
@Slf4j
-//@Configuration
+@Configuration
public class MiniprogramConfigurer extends WebMvcConfigurerAdapter {
@Resource
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/ActiveOrderController.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/ActiveOrderController.java
index 518a87e..5b65bc9 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/ActiveOrderController.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/ActiveOrderController.java
@@ -2,9 +2,11 @@
import com.alibaba.fastjson2.JSON;
import com.xiaopeng.api.dto.QueryOrderRouteDTO;
+import com.xiaopeng.api.feignClient.map.XpStationClient;
import com.xiaopeng.api.feignClient.operation.XpPointClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.operation.XpPoint;
+import com.xiaopeng.api.model.operation.XpStation;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
@@ -55,6 +57,8 @@
private final XpVehicleClient xpVehicleClient;
@Resource
private RedisService redisService;
+ @Resource
+ private XpStationClient xpStationClient;
private R<XpOrder> getOrderTripEnd(String orderId) {
@@ -153,13 +157,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.getVehicleId() != null) {
R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId());
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
index 4418c6f..51ba173 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -999,4 +999,14 @@
}
+
+ /**
+ * 查询是否有未支付订单
+ */
+ @PostMapping("/logan/inner/order/has-unpay-order")
+ public R<Long> hasUnPayOrder(@RequestParam String uid){
+ long count = xpOrderService.count(new QueryWrapper<XpOrder>().eq("app_user_id", Long.valueOf(uid))
+ .eq("status", 8).eq("is_deleted", 0));
+ return R.ok(count);
+ }
}
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/OrderCancelJob.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/OrderCancelJob.java
index 205a4fd..d2d4af7 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/OrderCancelJob.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/OrderCancelJob.java
@@ -31,7 +31,7 @@
JobDataMap maps = context.getMergedJobDataMap();
Long orderId = maps.getLong("id");
try {
- log.info("开始执行订单取消任务");
+ log.info("开始执行订单取消任务 {}", orderId);
XpOrder xpOrder = xpOrderService.getById(orderId);
if(Objects.nonNull(xpOrder) && (xpOrder.getStatus()==4 || xpOrder.getStatus()==5)){
Integer status = xpOrder.getStatus();
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
);
}
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/MiniprogramConfigurer.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/MiniprogramConfigurer.java
index 3752c05..1cd963d 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/MiniprogramConfigurer.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/MiniprogramConfigurer.java
@@ -10,7 +10,7 @@
import javax.annotation.Resource;
@Slf4j
-//@Configuration
+@Configuration
public class MiniprogramConfigurer extends WebMvcConfigurerAdapter {
@Resource
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml b/xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml
index cddad9c..ed1f115 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml
@@ -122,7 +122,7 @@
</foreach>
</if>
<if test="query.electronicId != null and query.electronicId != ''">
- AND a.electronic_id #{query.electronicId}
+ AND a.electronic_id = #{query.electronicId}
</if>
<if test="query.electronicIdList != null and query.electronicIdList.size()>0">
AND a.electronic_id in
--
Gitblit v1.7.1