liujie
2026-02-13 fe7a2bc980e9c9a8744842b01e1e5df5497714e3
feat(task-order): 优化任务订单处理逻辑并添加权重策略

- 修复注释格式和字符串拼接中的空格问题
- 统一代码风格,改进条件判断语句的格式化
- 添加基于权重的车辆选择策略,包括时间差、距离差、距离、时间和电量权重
- 实现订单价值计算和车辆评分排序功能
- 重构订单推送逻辑,简化车辆分配流程
- 优化车辆状态检查和订单重新分配机制
- 移除冗余的乘客添加逻辑,直接使用订单推送服务
1个文件已添加
6个文件已修改
388 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/resources/bootstrap.yml 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpOrderDetail.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/resources/bootstrap.yml 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/resources/bootstrap.yml 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/resources/mapper/order/XpOrderDetailMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/resources/bootstrap.yml
@@ -160,121 +160,3 @@
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
---
spring:
  shardingsphere:
    mode:
      type: Standalone
      repository:
        type: File
      overwrite: true
    props:
      sql-show: true
    datasource:
      names: xp0
      xp0:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.110.34:3306/xprt_account?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: 123456
        druid:
          # 连接池初始化时创建的连接数。
          # 应根据实际应用场景设置,确保应用程序启动时即可获取数据库连接。
          initial-size: 10
          # 连接池中最小的空闲连接数,保证即使在低负载时也有足够的连接可用。
          min-idle: 10
          # 连接池中最大活动连接数,限制并发请求时的数据库连接数,避免过多的连接消耗系统资源。
          max-active: 100
          # 获取连接时的最大等待时间,超过该时间则抛出异常。单位通常为毫秒。
          max-wait: 60000
          # 两个连接检查之间的时间间隔,用于检测和清理空闲过久的连接。单位为毫秒。
          time-between-eviction-runs-millis: 60000
          # 连接在被清理前的最小空闲时间。单位为毫秒。
          min-evictable-idle-time-millis: 300000
          # 用于验证连接有效性的 SQL 查询语句。
          validation-query: SELECT 1
          # 如果为真,则连接空闲时会被定期测试有效性。
          test-while-idle: true
          # 如果为真,在获取连接前进行有效性测试。
          test-on-borrow: false
          # 如果为真,在归还连接时进行有效性测试。
          test-on-return: false
          # 是否开启 PreparedStatement 缓存。
          pool-prepared-statements: true
          # 单个连接上缓存的 PreparedStatement 最大数量。
          max-pool-prepared-statement-per-connection-size: 20
          # 指定要启用的过滤器,如 stat, log4j, wall 等,用于监控和日志记录。
          filters: stat,wall,log4j
          # 连接属性,例如配置日志级别或慢 SQL 阈值。
          connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
          # 是否自动回收超时连接
          remove-abandoned: true
          # 超时时间,单位秒
          remove-abandoned-timeout: 1800
          # 是否记录被遗弃的连接
          log-abandoned: true
          # StatViewServlet配置,访问监控页面
          stat-view-servlet:
            enabled: true
            url-pattern: /druid/*
            login-username: admin
            login-password: admin
            reset-enable: false
          # 防火墙配置
          wall:
            config:
              multi-statement-allow: false
    rules:
      sharding:
        tables:
          xp_app_user:
            standard:
              sharding-column: phone_number
              sharding-algorithm-name: xp_app_user_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
          xp_app_user_coupon:
            standard:
              sharding-column: app_user_id
              sharding-algorithm-name: xp_app_user_coupon_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
          xp_operations_user_notification:
            standard:
              sharding-column: operations_user_id
              sharding-algorithm-name: xp_operations_user_notification_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
      sharding-algorithms:
        xp_app_user_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_app_user_${phone_number % 10}
        xp_app_user_coupon_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_app_user_coupon_${app_user_id % 20}
        xp_operations_user_notification_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_operations_user_notification_${operations_user_id % 20}
        single-table:
          tables:
            - xp0.sys_dept
            - xp0.sys_group
            - xp0.sys_group_menu
            - xp0.sys_post
            - xp0.sys_role
            - xp0.sys_role_dept
            - xp0.sys_user
            - xp0.sys_user_post
            - xp0.sys_user_role
            - xp0.xp_operations_position
            - xp0.xp_operations_role
            - xp0.xp_operations_user
            - xp0.xp_qualification_audit
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpOrderDetail.java
@@ -48,7 +48,6 @@
    @ApiModelProperty(value = "金额")
    private BigDecimal money;
    @TableLogic
    @ApiModelProperty(value = "是否删除 0=未删除 1=已删除")
    private Boolean isDeleted;
xp-robotaxi-api/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -25,4 +25,5 @@
com.xiaopeng.api.factory.vehicleConvoy.VehicleControlClientFallbackFactory
com.xiaopeng.api.factory.automaticPilot.XPUClientFallbackFactory
com.xiaopeng.api.factory.automaticPilot.XpuVimClientFallbackFactory
com.xiaopeng.api.factory.automaticPilot.OrderMissionClientFallbackFactory
com.xiaopeng.api.factory.maintenance.XpCheckLocationClientFallbackFactory
xp-robotaxi-operation-boot/src/main/resources/bootstrap.yml
@@ -160,137 +160,3 @@
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
---
spring:
  shardingsphere:
    mode:
      type: Standalone
      repository:
        type: File
      overwrite: true
    datasource:
      names: xp0
      xp0:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.110.34:3306/xprt_operation?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: 123456
        druid:
          # 连接池初始化时创建的连接数。
          # 应根据实际应用场景设置,确保应用程序启动时即可获取数据库连接。
          initial-size: 10
          # 连接池中最小的空闲连接数,保证即使在低负载时也有足够的连接可用。
          min-idle: 10
          # 连接池中最大活动连接数,限制并发请求时的数据库连接数,避免过多的连接消耗系统资源。
          max-active: 100
          # 获取连接时的最大等待时间,超过该时间则抛出异常。单位通常为毫秒。
          max-wait: 60000
          # 两个连接检查之间的时间间隔,用于检测和清理空闲过久的连接。单位为毫秒。
          time-between-eviction-runs-millis: 60000
          # 连接在被清理前的最小空闲时间。单位为毫秒。
          min-evictable-idle-time-millis: 300000
          # 用于验证连接有效性的 SQL 查询语句。
          validation-query: SELECT 1
          # 如果为真,则连接空闲时会被定期测试有效性。
          test-while-idle: true
          # 如果为真,在获取连接前进行有效性测试。
          test-on-borrow: false
          # 如果为真,在归还连接时进行有效性测试。
          test-on-return: false
          # 是否开启 PreparedStatement 缓存。
          pool-prepared-statements: true
          # 单个连接上缓存的 PreparedStatement 最大数量。
          max-pool-prepared-statement-per-connection-size: 20
          # 指定要启用的过滤器,如 stat, log4j, wall 等,用于监控和日志记录。
          filters: stat,wall,log4j
          # 连接属性,例如配置日志级别或慢 SQL 阈值。
          connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
          # 是否自动回收超时连接
          remove-abandoned: true
          # 超时时间,单位秒
          remove-abandoned-timeout: 1800
          # 是否记录被遗弃的连接
          log-abandoned: true
          # StatViewServlet配置,访问监控页面
          stat-view-servlet:
            enabled: true
            url-pattern: /druid/*
            login-username: admin
            login-password: admin
            reset-enable: false
          # 防火墙配置
          wall:
            config:
              multi-statement-allow: false
    rules:
      sharding:
        tables:
          sys_oper_log:
            standard:
              sharding-column: userId
              sharding-algorithm-name: sys_oper_log_inline
            key-generate-strategy:
              column: oper_id
              key-generator-name: snowflake
          xp_agreement_app_user:
            standard:
              sharding-column: app_user_id
              sharding-algorithm-name: xp_agreement_app_user_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
          xp_point:
            standard:
              sharding-column: id
              sharding-algorithm-name: xp_point_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
      sharding-algorithms:
        sys_oper_log_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.sys_oper_log_${userId % 10}
        xp_agreement_app_user_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_agreement_app_user_${app_user_id % 10}
        xp_point_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_point_${id % 10}
        single-table:
          tables:
            - xp0.sys_config
            - xp0.sys_dict_data
            - xp0.sys_dict_type
            - xp0.sys_logininfor
            - xp0.sys_menu
            - xp0.xp_acticity
            - xp0.xp_acticity_coupon
            - xp0.xp_agreement
            - xp0.xp_banner
            - xp0.xp_coupon
            - xp0.xp_electronic_fence
            - xp0.xp_electronic_fence_area
            - xp0.xp_feedback_type
            - xp0.xp_frequently_asked_questions
            - xp0.xp_invitation_code
            - xp0.xp_notification
            - xp0.xp_open_city
            - xp0.xp_pricing
            - xp0.xp_pricing_item
            - xp0.xp_region
            - xp0.xp_ride_guide
            - xp0.xp_route_plan
            - xp0.xp_system_setting
            - xp0.xp_trading_strategy
            - xp0.xp_trading_strategy_city
            - xp0.xp_user_feedback
            - xp0.xp_whitelist
            - xp0.xp_whitelist_operlog
    props:
      sql-show: true
      sql-simple: true
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -131,7 +131,6 @@
    private final XpPushMessageClient xpPushMessageClient;
    private final OrderMissionClient orderMissionClient;
    private final XpOrderDetailMapper xpOrderDetailMapper;
    private final OrderMissionClient orderMissionClient;
    @Autowired
    private MongoTemplate mongoTemplate;
xp-robotaxi-order-boot/src/main/resources/bootstrap.yml
@@ -159,132 +159,4 @@
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
---
spring:
  shardingsphere:
    mode:
      type: Standalone
      repository:
        type: File
      overwrite: true
    datasource:
      names: xp0
      xp0:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.110.34:3306/xprt_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: 123456
        druid:
          # 连接池初始化时创建的连接数。
          # 应根据实际应用场景设置,确保应用程序启动时即可获取数据库连接。
          initial-size: 10
          # 连接池中最小的空闲连接数,保证即使在低负载时也有足够的连接可用。
          min-idle: 10
          # 连接池中最大活动连接数,限制并发请求时的数据库连接数,避免过多的连接消耗系统资源。
          max-active: 100
          # 获取连接时的最大等待时间,超过该时间则抛出异常。单位通常为毫秒。
          max-wait: 60000
          # 两个连接检查之间的时间间隔,用于检测和清理空闲过久的连接。单位为毫秒。
          time-between-eviction-runs-millis: 60000
          # 连接在被清理前的最小空闲时间。单位为毫秒。
          min-evictable-idle-time-millis: 300000
          # 用于验证连接有效性的 SQL 查询语句。
          validation-query: SELECT 1
          # 如果为真,则连接空闲时会被定期测试有效性。
          test-while-idle: true
          # 如果为真,在获取连接前进行有效性测试。
          test-on-borrow: false
          # 如果为真,在归还连接时进行有效性测试。
          test-on-return: false
          # 是否开启 PreparedStatement 缓存。
          pool-prepared-statements: true
          # 单个连接上缓存的 PreparedStatement 最大数量。
          max-pool-prepared-statement-per-connection-size: 20
          # 指定要启用的过滤器,如 stat, log4j, wall 等,用于监控和日志记录。
          filters: stat,wall,log4j
          # 连接属性,例如配置日志级别或慢 SQL 阈值。
          connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
          # 是否自动回收超时连接
          remove-abandoned: true
          # 超时时间,单位秒
          remove-abandoned-timeout: 1800
          # 是否记录被遗弃的连接
          log-abandoned: true
          # StatViewServlet配置,访问监控页面
          stat-view-servlet:
            enabled: true
            url-pattern: /druid/*
            login-username: admin
            login-password: admin
            reset-enable: false
          # 防火墙配置
          wall:
            config:
              multi-statement-allow: false
    rules:
      sharding:
        tables:
          xp_order:
            standard:
              sharding-column: app_user_id
              sharding-algorithm-name: xp_order_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
          xp_order_cancel:
            standard:
              sharding-column: order_id
              sharding-algorithm-name: xp_order_cancel_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
          xp_order_evaluate:
            standard:
              sharding-column: order_id
              sharding-algorithm-name: xp_order_evaluate_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
          xp_order_payment:
            standard:
              sharding-column: order_id
              sharding-algorithm-name: xp_order_payment_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
          xp_order_reassign:
            standard:
              sharding-column: order_id
              sharding-algorithm-name: xp_order_reassign_inline
            key-generate-strategy:
              column: id
              key-generator-name: snowflake
      sharding-algorithms:
        xp_order_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_order_${app_user_id % 20}
        xp_order_cancel_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_order_cancel_${order_id % 20}
        xp_order_evaluate_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_order_evaluate_${order_id % 20}
        xp_order_payment_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_order_payment_${order_id % 20}
        xp_order_reassign_inline:
          type: INLINE
          props:
            algorithm-expression: xp0.xp_order_reassign_${task_id % 10}
        single-table:
          tables:
    props:
      sql-show: true
      sql-simple: true
xp-robotaxi-order-boot/src/main/resources/mapper/order/XpOrderDetailMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiaopeng.order.mapper.XpOrderDetailMapper">
</mapper>