From 086c8c208e6af4d593a80d8e6ea85013d8dd14cc Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 10 三月 2026 09:04:25 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   73 +++++++++++++++++++++++++++++++++---
 1 files changed, 66 insertions(+), 7 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 1bb247d..18de3d3 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
@@ -87,6 +87,7 @@
 import com.xiaopeng.order.service.IXpOrderReassignService;
 import com.xiaopeng.order.service.IXpOrderService;
 import com.xiaopeng.order.utils.TaxiPricingDemoService;
+import com.xiaopeng.order.utils.RegionCodeFilterUtil;
 import com.xiaopeng.order.utils.holiday.HolidayUtil;
 import com.xiaopeng.order.vo.OrderDetailVo;
 import lombok.RequiredArgsConstructor;
@@ -184,8 +185,28 @@
 
     @Override
     public PageInfo<XpOrderPageVO> pageList(XpOrderPageQuery query) {
+        // 0. 车牌号筛选:先查车辆服务获取车辆ID列表
+        List<Long> vehicleIdsFilter = null;
+        if (StringUtils.isNotBlank(query.getPlateNumber())) {
+            R<List<XpVehicle>> vehicleResult = xpVehicleClient.listByPlateNumber(query.getPlateNumber());
+            if (vehicleResult == null || CollectionUtils.isEmpty(vehicleResult.getData())) {
+                return buildEmptyOrderPage(query);
+            }
+            vehicleIdsFilter = vehicleResult.getData().stream()
+                    .map(XpVehicle::getId)
+                    .filter(Objects::nonNull)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(vehicleIdsFilter)) {
+                return buildEmptyOrderPage(query);
+            }
+        }
+
         // 1. 构建查询条件
         LambdaQueryWrapper<XpOrder> wrapper = buildQueryWrapper(query);
+        if (CollUtil.isNotEmpty(vehicleIdsFilter)) {
+            wrapper.in(XpOrder::getVehicleId, vehicleIdsFilter);
+        }
         wrapper.orderByDesc(XpOrder::getCreateTime);
 
         // 2. 分页查询
@@ -193,10 +214,7 @@
         Page<XpOrder> pageResult = this.page(page, wrapper);
 
         if (CollectionUtils.isEmpty(pageResult.getRecords())) {
-            PageInfo<XpOrderPageVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
-            resultPage.setTotal(0L);
-            resultPage.setRecords(new ArrayList<>());
-            return resultPage;
+            return buildEmptyOrderPage(query);
         }
 
         // 3. 收集关联ID
@@ -229,6 +247,13 @@
         PageInfo<XpOrderPageVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
         resultPage.setTotal(pageResult.getTotal());
         resultPage.setRecords(voList);
+        return resultPage;
+    }
+
+    private PageInfo<XpOrderPageVO> buildEmptyOrderPage(XpOrderPageQuery query) {
+        PageInfo<XpOrderPageVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        resultPage.setTotal(0L);
+        resultPage.setRecords(new ArrayList<>());
         return resultPage;
     }
 
@@ -303,6 +328,23 @@
         // 1. 构建查询条件
         LambdaQueryWrapper<XpOrder> wrapper = buildExcelQueryWrapper(query);
 
+        // 1.1 车牌号筛选:先查车辆服务获取车辆ID列表
+        if (StringUtils.isNotBlank(query.getPlateNumber())) {
+            R<List<XpVehicle>> vehicleResult = xpVehicleClient.listByPlateNumber(query.getPlateNumber());
+            if (vehicleResult == null || CollectionUtils.isEmpty(vehicleResult.getData())) {
+                return new ArrayList<>();
+            }
+            List<Long> vehicleIdsFilter = vehicleResult.getData().stream()
+                    .map(XpVehicle::getId)
+                    .filter(Objects::nonNull)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(vehicleIdsFilter)) {
+                return new ArrayList<>();
+            }
+            wrapper.in(XpOrder::getVehicleId, vehicleIdsFilter);
+        }
+
         // 2. 查询订单列表
         List<XpOrder> orderList = this.list(wrapper);
 
@@ -346,8 +388,16 @@
         wrapper.like(StringUtils.isNotBlank(query.getOrderNumber()), XpOrder::getOrderNumber, query.getOrderNumber())
                 .eq(Objects.nonNull(query.getFleetId()), XpOrder::getFleetId, query.getFleetId())
                 .eq(Objects.nonNull(query.getOrderSource()), XpOrder::getOrderSource, query.getOrderSource())
-                .like(StringUtils.isNotBlank(query.getCityCode()), XpOrder::getCityCode, query.getCityCode())
                 .eq(Objects.nonNull(query.getStatus()), XpOrder::getStatus, query.getStatus());
+
+        RegionCodeFilterUtil.resolveCityCodeFilter(query.getCityCode())
+                .ifPresent(filter -> {
+                    if (RegionCodeFilterUtil.MatchType.LIKE_RIGHT.equals(filter.getMatchType())) {
+                        wrapper.likeRight(XpOrder::getCityCode, filter.getValue());
+                    } else {
+                        wrapper.eq(XpOrder::getCityCode, filter.getValue());
+                    }
+                });
 
         if (Objects.nonNull(query.getStartTime())) {
             wrapper.ge(XpOrder::getCreateTime, LocalDateTime.of(query.getStartTime(), LocalTime.MIN));
@@ -364,8 +414,16 @@
         wrapper.like(StringUtils.isNotBlank(query.getOrderNumber()), XpOrder::getOrderNumber, query.getOrderNumber())
                 .eq(Objects.nonNull(query.getFleetId()), XpOrder::getFleetId, query.getFleetId())
                 .eq(Objects.nonNull(query.getOrderSource()), XpOrder::getOrderSource, query.getOrderSource())
-                .like(StringUtils.isNotBlank(query.getCityCode()), XpOrder::getCityCode, query.getCityCode())
                 .eq(Objects.nonNull(query.getStatus()), XpOrder::getStatus, query.getStatus());
+
+        RegionCodeFilterUtil.resolveCityCodeFilter(query.getCityCode())
+                .ifPresent(filter -> {
+                    if (RegionCodeFilterUtil.MatchType.LIKE_RIGHT.equals(filter.getMatchType())) {
+                        wrapper.likeRight(XpOrder::getCityCode, filter.getValue());
+                    } else {
+                        wrapper.eq(XpOrder::getCityCode, filter.getValue());
+                    }
+                });
 
         if (Objects.nonNull(query.getStartTime())) {
             wrapper.ge(XpOrder::getCreateTime, LocalDateTime.of(query.getStartTime(), LocalTime.MIN));
@@ -379,6 +437,7 @@
         wrapper.orderByDesc(XpOrder::getCreateTime);
         return wrapper;
     }
+
     /**
      * 批量获取用户信息
      */
@@ -531,7 +590,7 @@
                 PushOrderDto pushOrderDto = new PushOrderDto();
                 pushOrderDto.setOrderId(order.getId().toString());
                 pushOrderDto.setVin(xpVehicleR.getData().getVehicleVin());
-                pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
+                // pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
                 orderMissionClient.cancelOrder(pushOrderDto);
             }
         } else {

--
Gitblit v1.7.1