xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpPointClientFallbackFactory.java
@@ -14,6 +14,7 @@ import com.xiaopeng.api.query.operation.PointPageListListQuery; import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo; import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo; import com.xiaopeng.api.vo.order.XpPointInfoVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -23,6 +24,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; @Slf4j @Component @@ -101,6 +103,12 @@ log.error("获取地图点位失败:{}", cause.getMessage()); return R.ok(new ArrayList<>()); } @Override public R<List<XpPoint>> getPointsInfo(Set<Long> points) { log.error("获取点位信息失败:{}", cause.getMessage()); return null; } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpPointClient.java
@@ -14,6 +14,7 @@ import com.xiaopeng.api.query.operation.PointPageListListQuery; import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo; import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo; import com.xiaopeng.api.vo.order.XpPointInfoVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; import com.xiaopeng.common.core.web.page.PageInfo; @@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Set; @FeignClient(contextId = "XpPointClient", value = ServiceNameConstantsEnum.XP_OPERATION_SERVICE, fallbackFactory = XpPointClientFallbackFactory.class) public interface XpPointClient { @@ -74,6 +76,7 @@ R<List<XpPoint>> pointMap(@RequestBody PointMapQuery query); @PostMapping("/base/v1/mini-program/inner/point/getPointsInfo") R<List<XpPoint>> getPointsInfo(@RequestBody Set<Long> points); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointController.java
@@ -6,6 +6,7 @@ import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo; import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo; import com.xiaopeng.api.vo.order.XpPointInfoVo; import com.xiaopeng.api.vo.order.XpPointsSearchVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.controller.BaseController; @@ -21,6 +22,7 @@ import javax.validation.Valid; import java.util.List; import java.util.Set; @Slf4j @RestController @@ -79,6 +81,12 @@ } @PostMapping("/inner/point/getPointsInfo") public R<List<XpPoint>> getPointsInfo(@RequestBody Set<Long> points){ List<XpPoint> xpPoints = xpPointService.listByIds(points); return R.ok(xpPoints); } /** * 获取下单最大距离 最小距离 */ xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/vo/XpOrderHistoryListVO.java
@@ -35,5 +35,34 @@ private LocalDateTime time; private Long startPointId; private String startPointName; private Double startLon; private Double startLat; private Long xpElectronicFenceAreaId; private Integer startParkingTimeLimit; private Long endPointId; private String endPointName; private Double endLat; private Double endLon; private Integer endParkingTimeLimit; } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -696,9 +696,19 @@ public XpOrderHistoryVO getHistoryOrderList(XpHistoryOrderListQuery query, String uid) { Page<XpOrderHistoryListVO> page = new Page<>(query.getPageNum(), query.getPageSize()); List<XpOrderHistoryListVO> list = this.baseMapper.getHistoryOrderList(page, query, Long.parseLong(uid)); XpOrderHistoryVO xpOrderHistoryVO = new XpOrderHistoryVO(); if(list.isEmpty()){ return xpOrderHistoryVO; } Set<Long> points = list.stream().map(XpOrderHistoryListVO::getStartPointId).collect(Collectors.toSet()); points.addAll(list.stream().map(XpOrderHistoryListVO::getEndPointId).collect(Collectors.toSet())); // 查询 点位信息 R<List<XpPoint>> pointInfoVos = xpPointClient.getPointsInfo(points); List<XpPoint> pointList = pointInfoVos.getData(); xpOrderHistoryVO.setTotal((int) page.getTotal()); // 根据time分组 @@ -708,6 +718,28 @@ xpOrderHistoryDateVO.setDateLabel(entry.getKey()); List<XpOrderHistoryListVO> value = entry.getValue(); value = value.stream().sorted(Comparator.comparing(XpOrderHistoryListVO::getTime).reversed()).collect(Collectors.toList()); for (XpOrderHistoryListVO xpOrderHistoryListVO : value) { XpPoint xpPoint = pointList.stream().filter(e -> e.getId().equals(xpOrderHistoryListVO.getStartPointId())).findFirst().orElse(null); if(xpPoint!=null){ xpOrderHistoryListVO.setStartPointName(xpPoint.getPointName()); xpOrderHistoryListVO.setStartLat(xpPoint.getPointLat()); xpOrderHistoryListVO.setStartLon(xpPoint.getPointLon()); xpOrderHistoryListVO.setXpElectronicFenceAreaId(xpPoint.getElectronicAreaId()); xpOrderHistoryListVO.setStartParkingTimeLimit(xpPoint.getParkingTimeLimit()); } xpPoint = pointList.stream().filter(e -> e.getId().equals(xpOrderHistoryListVO.getEndPointId())).findFirst().orElse(null); if(xpPoint!=null){ xpOrderHistoryListVO.setEndPointName(xpPoint.getPointName()); xpOrderHistoryListVO.setEndLat(xpPoint.getPointLat()); xpOrderHistoryListVO.setEndLon(xpPoint.getPointLon()); xpOrderHistoryListVO.setXpElectronicFenceAreaId(xpPoint.getElectronicAreaId()); xpOrderHistoryListVO.setEndParkingTimeLimit(xpPoint.getParkingTimeLimit()); } } xpOrderHistoryDateVO.setOrders(value); return xpOrderHistoryDateVO; }).collect(Collectors.toList()); xp-robotaxi-order-boot/src/main/resources/mapper/order/XpOrderMapper.xml
@@ -45,7 +45,7 @@ ORDER BY date ASC </select> <select id="getHistoryOrderList" resultType="com.xiaopeng.order.model.vo.XpOrderHistoryListVO"> select start_point_name as originAddress, end_point_name as destinationAddress, select start_point_name as originAddress, end_point_name as destinationAddress,start_point_id as startPointId,end_point_id as endPointId, DATE_FORMAT(create_time, '%H:%i') AS orderTime, pay_money as amount,create_time as time,DATE_FORMAT(create_time,'%Y-%m-%d') AS timeStr, id as orderId from xp_order where app_user_id = #{uid} and is_deleted = 0 and status in (9,10) <if test="query.status != null">