.gitignore
@@ -15,7 +15,7 @@ target *.yaml *.yml #*.yaml #*.yml *.log.DS_Store **/.DS_Store pom.xml
@@ -255,16 +255,16 @@ <module>xp-robotaxi-common</module> <module>xp-robotaxi-gateway-boot</module> <module>xp-robotaxi-account-boot</module> <module>xp-robotaxi-automaticPilot-boot</module> <module>xp-robotaxi-automatic-pilot-boot</module> <module>xp-robotaxi-itinerary-boot</module> <module>xp-robotaxi-maintenance-boot</module> <module>xp-robotaxi-map-boot</module> <module>xp-robotaxi-operation-boot</module> <module>xp-robotaxi-order-boot</module> <module>xp-robotaxi-payment-boot</module> <module>xp-robotaxi-pushMessage-boot</module> <module>xp-robotaxi-remoteDriving-boot</module> <module>xp-robotaxi-vehicleConvoy-boot</module> <module>xp-robotaxi-push-message-boot</module> <module>xp-robotaxi-remote-driving-boot</module> <module>xp-robotaxi-vehicle-convoy-boot</module> <module>xp-robotaxi-job-boot</module> <module>xp-robotaxi-file-boot</module> </modules> xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/vehicleConvoy/XpVehicleClientFallbackFactory.java
@@ -70,7 +70,7 @@ @Override public R<XpVehicle> findByVehicleXpuId(String xpuid) { log.error("查询车辆信息失败,原因: {}", cause.getMessage()); log.error("根据车辆xpuid查询车辆信息,原因: {}", cause.getMessage()); return R.fail(); } }; xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpOrder.java
@@ -53,6 +53,7 @@ @ApiModelProperty(value = "订单来源 1=APP下单") private Integer orderSource; @ApiModelProperty(value = "乘车时间") private LocalDateTime rideTime; @@ -133,7 +134,8 @@ @ApiModelProperty(value = "时长分钟") private Double duration; @ApiModelProperty(value = "时长费所属时段type=1 普通时段 type=2 夜间行驶时段 3高峰时段 4节假日时段") private Integer durationType; @ApiModelProperty(value = "时长费") private BigDecimal durationMoney; @@ -145,7 +147,8 @@ @ApiModelProperty(value = "远途公里") private Double longDistance; @ApiModelProperty(value = "远途费所属时段type=1 普通时段 type=2 夜间行驶时段 3高峰时段 4节假日时段") private Integer longDistanceType; @ApiModelProperty(value = "远途费") private BigDecimal longDistancemoney; xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpOrderDetail.java
New file @@ -0,0 +1,70 @@ package com.xiaopeng.api.model.order; import com.baomidou.mybatisplus.annotation.*; import com.xiaopeng.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; /** * <p> * 订单费用明细表 * </p> * * @author mitao * @since 2026-02-03 */ @Data @TableName("xp_order_detail") @ApiModel(value = "XpOrderDetail对象", description = "订单费用明细表") public class XpOrderDetail extends BaseModel { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) @ApiModelProperty(value = "自增id") private Long id; @ApiModelProperty(value = "订单id") private Long orderId; @ApiModelProperty(value = "type=1 普通时段 type=2 夜间行驶时段 3高峰时段 4节假日时段") private Integer type; @ApiModelProperty(value = "1=起步价 2=里程费") private Integer detailType; @ApiModelProperty(value = "时段") private String time; @ApiModelProperty(value = "时长分钟") private Integer duration; @ApiModelProperty(value = "里程") private BigDecimal mileage; @ApiModelProperty(value = "金额") private BigDecimal money; @TableLogic @ApiModelProperty(value = "是否删除 0=未删除 1=已删除") private Boolean isDeleted; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "创建时间") private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT_UPDATE) @ApiModelProperty(value = "修改时间") private LocalDateTime updateTime; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "创建人") private String createBy; @TableField(fill = FieldFill.INSERT_UPDATE) @ApiModelProperty(value = "修改人") private String updateBy; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/order/FareBreakdownDetailVo.java
@@ -15,7 +15,7 @@ private String time; @ApiModelProperty(value = "里程 单位公里") private BigDecimal mileage; @ApiModelProperty(value = "时间") @ApiModelProperty(value = "时间 分钟") private long duration; @ApiModelProperty(value = "金额") private BigDecimal money; xp-robotaxi-automatic-pilot-boot/pom.xml
File was renamed from xp-robotaxi-automaticPilot-boot/pom.xml @@ -8,7 +8,7 @@ </parent> <modelVersion>4.0.0</modelVersion> <artifactId>xp-robotaxi-automaticPilot-boot</artifactId> <artifactId>xp-robotaxi-automatic-pilot-boot</artifactId> <description> xp-modules-automaticPilot自动驾驶模块 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/AutomaticPilotApplication.java
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/config/KafkaConfig.java
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/config/MessageLocalConfig.java
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/config/MyLocaleResolver.java
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/KafkaTestController.java
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/XpuVinController.java
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
File was renamed from xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java @@ -6,15 +6,12 @@ import com.alibaba.fastjson2.JSONObject; import com.xiaopeng.api.dto.map.OrderRouteAndFareDto; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.dto.operation.ReassignOrderDTO; import com.xiaopeng.api.dto.order.PopOrderDto; import com.xiaopeng.api.dto.pushMessage.PushOrderRouteDTO; import com.xiaopeng.api.dto.pushMessage.SendMessageDTO; import com.xiaopeng.api.feignClient.map.XpMapClient; import com.xiaopeng.api.feignClient.operation.ReassignOrderClient; import com.xiaopeng.api.feignClient.order.XpOrderClient; import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient; import com.xiaopeng.api.feignClient.vehicleConvoy.UserVehicleClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; @@ -35,7 +32,6 @@ import com.xiaopeng.api.vo.automaticPilot.proto.up.xpuNavigationRequest.NavigationRequest; import com.xiaopeng.api.vo.automaticPilot.proto.up.xpuNavigationRequest.OrderPhase; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo; import com.xiaopeng.automaticPilot.util.XPUUtil; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.enums.OrderStatusEnum; @@ -56,9 +52,6 @@ import javax.annotation.Resource; import java.util.*; import java.util.concurrent.TimeUnit; import static org.bouncycastle.asn1.x500.style.RFC4519Style.l; import static org.bouncycastle.asn1.x500.style.RFC4519Style.uid; /** * Kafka 消费者服务 @@ -84,13 +77,9 @@ @Autowired public RedisTemplate redisTemplate; @Autowired private UserVehicleClient userVehicleClient; @Resource private XpPushMessageClient xpPushMessageClient; @Autowired private ReassignOrderClient reassignOrderClient; @@ -195,9 +184,7 @@ Object sequence = redisTemplate.opsForValue().get(requestSeq); if(sequence!=null){ String[] split = sequence.toString().split("_"); String typeStr = split[0]; // 推单处理 if(typeStr.equals("pushOrder")){ if(split[0].equals("pushOrder")){ PopOrderDto dto = new PopOrderDto(); dto.setOrderId(Long.valueOf(split[1])); dto.setXpVehicleVin(split[2]); @@ -278,56 +265,6 @@ dto.setDuration(rtTripInfo.getRemaining_time()); dto.setDistance(rtTripInfo.getRemaining_distance().intValue()); xpPushMessageClient.pushOrderRoute(dto); } } /** * XPU发布系统运行状态---车辆实时位置 * * @param msgContent */ public void systemStatusXpuAndReassign(MsgContent msgContent) { //开始处理消息对应的业务逻辑 SystemRuntimeStatus systemRuntimeStatus = msgContent.getContent_detail().getObject("systemRuntimeStatus", SystemRuntimeStatus.class); AbnormalReason abnormalReason = systemRuntimeStatus.getSystem_status().getAbnormal_reason(); // 判断是否为故障状态 if (abnormalReason == AbnormalReason.FAULT) { log.info("车辆故障,开始处理故障"); // TODO 添加异常任务 // 解绑用户与车辆关系 CancelTaxiPassengerVo cancelTaxiPassengerVo = new CancelTaxiPassengerVo(); String orderId = systemRuntimeStatus.getRunning_order_status_info().getOrder_id(); XpOrder xpOrder = xpOrderClient.queryOrderById(Long.parseLong(orderId)).getData(); XpVehicle vehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData(); if (vehicle != null) { // 修改车辆状态 vehicle.setOperatingStatus(4); xpVehicleClient.updateVehicleById(vehicle); cancelTaxiPassengerVo.setVin(vehicle.getVehicleVin()); cancelTaxiPassengerVo.setUid(xpOrder.getAppUserId().toString()); cancelTaxiPassengerVo.setOrderNo(xpOrder.getOrderNumber()); // TODO // cancelTaxiPassengerVo.setAppId(); userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo); } // 取消订单 R<?> r = xpOrderClient.cancelOrder(String.valueOf(xpOrder.getId())); if (r.getCode() == R.SUCCESS){ log.info("取消订单成功"); // 重新派单 ReassignOrderDTO reassignOrderDTO = new ReassignOrderDTO(); reassignOrderDTO.setUid(xpOrder.getAppUserId().toString()); reassignOrderDTO.setOrderNo(xpOrder.getOrderNumber()); reassignOrderDTO.setCount(10); RealtimePose pose = systemRuntimeStatus.getPose(); Wgs naviPose = pose.getNavi_pose(); Double latitude = naviPose.getLatitude(); Double longitude = naviPose.getLongitude(); reassignOrderDTO.setLongitude(longitude); reassignOrderDTO.setLatitude(latitude); reassignOrderClient.reassignOrder(reassignOrderDTO); } } } xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/util/XPUUtil.java
File was renamed from xp-robotaxi-automaticPilot-boot/src/main/java/com/xiaopeng/automaticPilot/util/XPUUtil.java @@ -18,6 +18,7 @@ import com.xiaopeng.common.core.utils.StringUtils; import com.xiaopeng.common.core.utils.uuid.UUID; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -32,6 +33,9 @@ @Slf4j @Component public class XPUUtil { @Value("${xpu.topic}") private String topic; @Resource private XPUClient xpuClient; @@ -71,7 +75,7 @@ String xpuId = getXpuIdByVin(vin); //组装请求消息体 MqttPublishVo vo = new MqttPublishVo(); vo.setTopic("topic-prod-xpu-robotaxi-high/" + xpuId); vo.setTopic(topic + "/" + xpuId); vo.setPayload(JSON.toJSONString(msgContent)); return xpuClient.publish(vo); } @@ -103,7 +107,7 @@ String xpuId = getXpuIdByVin(vin); //组装请求消息体 MqttPublishVo vo = new MqttPublishVo(); vo.setTopic("topic-prod-xpu-robotaxi-high/" + xpuId); vo.setTopic(topic + "/" + xpuId); vo.setPayload(JSON.toJSONString(msgContent)); return xpuClient.publish(vo); } @@ -137,7 +141,7 @@ String xpuId = getXpuIdByVin(vin); //组装请求消息体 MqttPublishVo vo = new MqttPublishVo(); vo.setTopic("topic-prod-xpu-robotaxi-high/" + xpuId); vo.setTopic(topic + "/" + xpuId); vo.setPayload(JSON.toJSONString(msgContent)); return xpuClient.publish(vo); } xp-robotaxi-automatic-pilot-boot/src/main/resources/bootstrap.yml
New file @@ -0,0 +1,161 @@ server: port: 6020 tomcat: basedir: /data/tomcat # Spring spring: application: # 应用名称 name: xp-robotaxi-automatic-pilot-boot main: allow-bean-definition-overriding: true allow-circular-references: true profiles: # 环境配置 active: dev # active: prod --- spring: config: activate: on-profile: dev cloud: nacos: discovery: # 服务注册地址 server-addr: 192.168.110.80:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 username: nacos password: nacos config: # 配置中心地址 server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP name: ${spring.application.name} username: nacos password: nacos # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} --- seata: enabled: true application-id: ${spring.application.name} tx-service-group: seata_tx_group #此处配置自定义的seata事务分组名称 enable-auto-data-source-proxy: false #关闭数据库代理 service: vgroup-mapping: seata_tx_group: default data-source-proxy-mode: AT config: type: nacos nacos: # 开发环境 server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # data-id: seata-server.properties # username: nacos # password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # username: nacos # password: nacos cloud: nacos: discovery: # 开发环境 server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # application: seata-server #Nacos 中 Seata 名称 # username: nacos # password: nacos sentinel: transport: dashboard: 192.168.0.137:8080 # Sentinel控制台地址 eager: true --- spring: config: activate: on-profile: prod cloud: nacos: discovery: # 服务注册地址 server-addr: 192.168.0.137:8848,192.168.0.123:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a username: nacos password: nacos config: # 配置中心地址 server-addr: 192.168.0.137:8848,192.168.0.123:8848 namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a username: nacos password: nacos group: DEFAULT_GROUP name: ${spring.application.name} # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} --- spring: config: activate: on-profile: test cloud: nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 96712c7a-480b-4f40-b783-39f00f3b33ce config: # 配置中心地址 server-addr: 127.0.0.1:8848 namespace: 96712c7a-480b-4f40-b783-39f00f3b33ce group: DEFAULT_GROUP name: ${spring.application.name} # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} xp-robotaxi-automatic-pilot-boot/src/main/resources/i18n/messages.properties
xp-robotaxi-automatic-pilot-boot/src/main/resources/i18n/messages_en_US.properties
xp-robotaxi-automatic-pilot-boot/src/main/resources/i18n/messages_zh_CN.properties
xp-robotaxi-automatic-pilot-boot/src/main/resources/logback.xml
xp-robotaxi-automatic-pilot-boot/src/main/resources/mybatis-config.xml
xp-robotaxi-automatic-pilot-boot/src/main/resources/seata.conf
xp-robotaxi-automatic-pilot-boot/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java
xp-robotaxi-automatic-pilot-boot/xp-modules-account.iml
xp-robotaxi-automaticPilot-boot/src/main/resources/bootstrap.yml
File was deleted xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/dto/ServiceNameConstantsEnum.java
@@ -12,7 +12,7 @@ /** * 自动驾驶服务 */ String XP_AUTOMATIC_PILOT_SERVICE = "xp-robotaxi-automaticPilot-boot"; String XP_AUTOMATIC_PILOT_SERVICE = "xp-robotaxi-automatic-pilot-boot"; /** * 行程服务 */ @@ -40,15 +40,15 @@ /** * 推送服务 */ String XP_PUSH_MESSAGE_SERVICE = "xp-robotaxi-pushMessage-boot"; String XP_PUSH_MESSAGE_SERVICE = "xp-robotaxi-push-message-boot"; /** * 远程驾驶服务 */ String XP_REMOTE_DRIVING_SERVICE = "xp-robotaxi-remoteDriving-boot"; String XP_REMOTE_DRIVING_SERVICE = "xp-robotaxi-remote-driving-boot"; /** * 车辆车队服务 */ String XP_VEHICLE_CONVOY_SERVICE = "xp-robotaxi-vehicleConvoy-boot"; String XP_VEHICLE_CONVOY_SERVICE = "xp-robotaxi-vehicle-convoy-boot"; /** * 小鹏用户中心乘客车辆绑定 */ xp-robotaxi-gateway-boot/src/main/resources/bootstrap.yml
@@ -7,7 +7,7 @@ spring: application: # 应用名称 name: xp-gateway name: xp-gateway-boot main: allow-bean-definition-overriding: true profiles: xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/mapper/XpOrderDetailMapper.java
New file @@ -0,0 +1,17 @@ package com.xiaopeng.order.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xiaopeng.api.model.order.XpOrderCancel; import com.xiaopeng.api.model.order.XpOrderDetail; /** * <p> * 订单取消 Mapper 接口 * </p> * * @author mitao * @since 2026-02-03 */ public interface XpOrderDetailMapper extends BaseMapper<XpOrderDetail> { } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderDetailService.java
New file @@ -0,0 +1,17 @@ package com.xiaopeng.order.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.api.model.order.XpOrderCancel; import com.xiaopeng.api.model.order.XpOrderDetail; /** * <p> * 订单取消 服务类 * </p> * * @author mitao * @since 2026-02-03 */ public interface IXpOrderDetailService extends IService<XpOrderDetail> { } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderDetailServiceImpl.java
New file @@ -0,0 +1,23 @@ package com.xiaopeng.order.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.model.order.XpOrderCancel; import com.xiaopeng.api.model.order.XpOrderDetail; import com.xiaopeng.order.mapper.XpOrderCancelMapper; import com.xiaopeng.order.mapper.XpOrderDetailMapper; import com.xiaopeng.order.service.IXpOrderCancelService; import com.xiaopeng.order.service.IXpOrderDetailService; import org.springframework.stereotype.Service; /** * <p> * 订单取消 服务实现类 * </p> * * @author mitao * @since 2026-02-03 */ @Service public class XpOrderDetailServiceImpl extends ServiceImpl<XpOrderDetailMapper, XpOrderDetail> implements IXpOrderDetailService { } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -35,10 +35,7 @@ import com.xiaopeng.api.model.operation.XpFeedbackType; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.model.operation.XpPricing; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.model.order.XpOrderCancel; import com.xiaopeng.api.model.order.XpOrderEvaluate; import com.xiaopeng.api.model.order.XpOrderReassign; import com.xiaopeng.api.model.order.*; import com.xiaopeng.api.model.vehicleConvoy.XpFleet; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.account.UserCouponVo; @@ -66,6 +63,7 @@ import com.xiaopeng.order.job.jobs.OrderCancelJob; import com.xiaopeng.order.mangodb.model.OrderTrajectory; import com.xiaopeng.order.mangodb.service.OrderTrajectoryService; import com.xiaopeng.order.mapper.XpOrderDetailMapper; import com.xiaopeng.order.mapper.XpOrderMapper; import com.xiaopeng.order.model.dto.XpOrderCommentDto; import com.xiaopeng.order.model.dto.XpOrderPayDto; @@ -131,6 +129,8 @@ private final XpSystemSettingClient xpSystemSettingClient; private final OrderTrajectoryService orderTrajectoryService; private final XpPushMessageClient xpPushMessageClient; private final OrderMissionClient orderMissionClient; private final XpOrderDetailMapper xpOrderDetailMapper; private final OrderMissionClient orderMissionClient; @Autowired @@ -904,6 +904,7 @@ @Override public void endTrip(Long orderId, String uid) { List<XpOrderDetail> xpOrderDetails = new ArrayList<>(); // 起步价格明细 List<FareBreakdownDetailVo> start = new ArrayList<>(); // 里程费价格明细 @@ -984,11 +985,11 @@ } // --- 远途加价区间配置 (关键修改) --- // 1. 超过 num1(12) 不足 num2(20), 加收 num3(1.2) config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(5.0, 6.0, 1.2)); config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num6")), Double.parseDouble(basicPricingJson.getString("num7")), Double.parseDouble(basicPricingJson.getString("num8")))); // 2. 超过 num4(20) 不足 num5(35), 加收 num6(2.0) config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(6.0, 7.0, 2.0)); config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num9")), Double.parseDouble(basicPricingJson.getString("num10")), Double.parseDouble(basicPricingJson.getString("num11")))); // 3. 超过 num7(35) 以后, 加收 num8(3.5) -> numEnd 传个极大值 config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(7.0, 8.0, 3.5)); config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num12")), 999999, Double.parseDouble(basicPricingJson.getString("num13")))); TaxiPricingDemoService.TaxiPricingService service = new TaxiPricingDemoService.TaxiPricingService(); Map<String, BigDecimal> bill = service.calculateOrderPrice(DateUtils.toDate(order.getCreateTime()), order.getMileageKilometers(), gpsPoints, config); @@ -1057,6 +1058,7 @@ mileageDetail.setMileage(distance); mileageDetail.setMoney(money); } mileage.add(mileageDetail); } // 封装时长费 @@ -1076,354 +1078,39 @@ longDistance.add(longDetail); } } // // 计算实际价格 // // 查询订单轨迹 // List<OrderTrajectory> trajectories = mongoTemplate.find( // new Query(Criteria.where("orderId").is(orderId)) // .with(Sort.by(Sort.Direction.ASC, "locatetime")), // OrderTrajectory.class // ); // // 计算等待时间 // LocalDateTime boardingTime = order.getBoardingTime();// 上车时间 // LocalDateTime arrivalTime = order.getArrivalTime();// 车辆到达上车点时间 // // 行程开始时间 // Integer waitTime = Math.abs((int) Duration.between(boardingTime, arrivalTime).getSeconds()); // // // 行程总时间 秒 // LocalDateTime tripBegin = order.getTripBegin(); // LocalDateTime tripEnd = order.getTripEnd(); // long seconds = Duration.between(tripBegin, tripEnd).getSeconds(); // // 默认费率1 // double priceRate = 1; // if (pricing.getIsDynamicPrice() == 1) { // // 先判断是否已经调价过了 // Object userDynamicPriceObj = redisService.getCacheObject("USER_DYNAMIC_PRICE_" + order.getCityId() + "_" + uid); // if (userDynamicPriceObj != null) { // // 是否调价过了 // priceRate = Double.parseDouble(userDynamicPriceObj.toString()); // } else { // // 没有调过 // //是否触发动态调价 redis获取 // Object dynamicPriceObj = redisService.getCacheObject("DYNAMIC_PRICE_" + order.getCityId()); // if (dynamicPriceObj != null) { // JSONObject jsonObject = JSONObject.parseObject(pricing.getDynamicPricingJson()); // // 触发动态调价 // // value=时间 // String timeStr = dynamicPriceObj.toString(); // // 判断当前距离这个时间范围的新增订单数(排除取消) / 上浮数量 算出应该增加的价格率 // Integer num = this.getOrderNum(new GetOrderNumDto(timeStr, order.getCityId())); // // X单上升一次调价 // Integer orderNum = getOrderNum(jsonObject, 4); // // 需要调价的次数 // int count = num / orderNum; // if (count > 0) { // // 计算每次上升的费率 // Integer upRate = getOrderNum(jsonObject, 5); // BigDecimal divide = new BigDecimal(upRate).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); // for (int i = count; i > 0; i--) { // // 当前费率+(费率*上升百分比) // priceRate = new BigDecimal(priceRate).multiply(divide).add(new BigDecimal(priceRate)).setScale(2, RoundingMode.HALF_UP).doubleValue(); // } // // 冷却时间 // Integer time = getOrderNum(jsonObject, 6); // // 触发调价了 // redisService.setCacheObject("USER_DYNAMIC_PRICE_" + order.getCityId() + "_" + uid, priceRate, time.longValue(), TimeUnit.MINUTES); // } // // } // } // } // if (trajectories.isEmpty()) { // return; // } // // 起步价规则 // String startingFareJson = pricing.getStartingFareJson(); // JSONArray startingFareJsonArray = JSONArray.parseArray(startingFareJson); // // 基础信息规则 // String basicPricing = pricing.getBasicPricingJson(); // JSONObject basicPricingJson = JSONObject.parseObject(basicPricing); // // // 计算过后得到起步价 // String num3 = ""; // String num4 = ""; // String num5 = ""; // String num6 = ""; // String num7 = ""; // String startTime = ""; // String endTime = ""; // // 等待费设置 // String num4Wait = basicPricingJson.getString("num4"); // String num5Wait = basicPricingJson.getString("num5"); // // 远途费设置 // String numLong6 = basicPricingJson.getString("num6"); // String numLong7 = basicPricingJson.getString("num7"); // String numLong8 = basicPricingJson.getString("num8"); // String numLong9 = basicPricingJson.getString("num9"); // String numLong10 = basicPricingJson.getString("num10"); // String numLong11 = basicPricingJson.getString("num11"); // String numLong12 = basicPricingJson.getString("num12"); // String numLong13 = basicPricingJson.getString("num13"); // String numLong14 = basicPricingJson.getString("num14"); // String numLong15 = basicPricingJson.getString("num15"); // // 节假日基础价格规则 // String num29 = basicPricingJson.getString("num29"); // String num30 = basicPricingJson.getString("num30"); // String num31 = basicPricingJson.getString("num31"); // String num32 = basicPricingJson.getString("num32"); // String num33 = basicPricingJson.getString("num33"); // String num34 = basicPricingJson.getString("num34"); // // // 高峰期基础价格规则 // String num21 = basicPricingJson.getString("num21"); // String num22 = basicPricingJson.getString("num22"); // String num23 = basicPricingJson.getString("num23"); // String num24 = basicPricingJson.getString("num24"); // String num25 = basicPricingJson.getString("num25"); // String num26 = basicPricingJson.getString("num26"); // String num27 = basicPricingJson.getString("num27"); // String num28 = basicPricingJson.getString("num28"); // // 夜间行驶基础价格规则 // String num14 = basicPricingJson.getString("num14"); // String num15 = basicPricingJson.getString("num15"); // String num16 = basicPricingJson.getString("num16"); // String num17 = basicPricingJson.getString("num17"); // String num18 = basicPricingJson.getString("num18"); // String num19 = basicPricingJson.getString("num19"); // String num20 = basicPricingJson.getString("num20"); // // 起步里程 // Double startDistance = 0.00D; // // 临时超出起步里程的额外里程 // Double mileageDistance = 0.00D; // // 起步价所属时段 type 1 普通时段 2 夜间行驶时段 3 高峰时段 4 节假日时段 // Integer startType = 1; // // 里程费所属时段 type 0默认临时 1 普通时段 2 夜间行驶时段 3 高峰时段 4 节假日时段 // Integer mileageType = 0; // // 里程费所属时段临时字段 用于区分时段是否变化 type 0默认临时 1 普通时段 2 夜间行驶时段 3 高峰时段 4 节假日时段 // Integer mileageTypeTemp = 0; // // // 起步价时段开始时间 // Date startDate = DateUtils.toDate(order.getTripBegin()); // // 根据订单创建时间确定使用哪个起步价规则 // Date createTime = DateUtils.toDate(order.getCreateTime()); // // 起步价时段结束时间 // Date endDate = new Date(); // // 计算订单总行驶距离,单位米 // Double totalDistance = 0.00D; // // 起步价计算完成表示 // boolean startFlag = true; // SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm"); // if (pricing.getPricingType() == 1) { // // // 计算起步价 // for (Object o : startingFareJsonArray) { // JSONObject startingFare = (JSONObject) o; // Calendar calendarStart = Calendar.getInstance(); // calendarStart.setTime(createTime); // calendarStart.set(Calendar.HOUR_OF_DAY, Integer.valueOf(startingFare.getString("num1").split(":")[0])); // calendarStart.set(Calendar.MINUTE, Integer.valueOf(startingFare.getString("num1").split(":")[1])); // // Calendar calendarEnd = Calendar.getInstance(); // calendarEnd.setTime(createTime); // calendarEnd.set(Calendar.HOUR_OF_DAY, Integer.valueOf(startingFare.getString("num2").split(":")[0])); // calendarEnd.set(Calendar.MINUTE, Integer.valueOf(startingFare.getString("num2").split(":")[1])); // // 找到符合条件的直接跳出循环 // if (createTime.getTime() > calendarStart.getTimeInMillis() && createTime.getTime() < calendarEnd.getTimeInMillis()) { // num3 = startingFare.getString("num3"); // num4 = startingFare.getString("num4"); // num5 = startingFare.getString("num5"); // num6 = startingFare.getString("num6"); // num7 = startingFare.getString("num7"); // startTime = startingFare.getString("num1"); // endTime = startingFare.getString("num2"); // break; // } // } // // 判断是否为夜间行驶 起步价修改 // Calendar calendarStart = Calendar.getInstance(); // calendarStart.setTime(createTime); // calendarStart.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num14.split("-")[0].split(":")[0])); // calendarStart.set(Calendar.MINUTE, Integer.valueOf(num14.split("-")[0].split(":")[1])); // Calendar calendarEnd = Calendar.getInstance(); // calendarEnd.setTime(createTime); // calendarEnd.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num14.split("-")[1].split(":")[0])); // calendarEnd.set(Calendar.MINUTE, Integer.valueOf(num14.split("-")[1].split(":")[1])); // if (createTime.getTime() > calendarStart.getTimeInMillis() && createTime.getTime() < calendarEnd.getTimeInMillis() // ) { // num3 = num15; // num6 = num16; // num7 = num17; // startType = 2; // // } // // 判断是否为高峰期 // Calendar calendar1Start = Calendar.getInstance(); // calendar1Start.setTime(createTime); // calendar1Start.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num21.split("-")[0].split(":")[0])); // calendar1Start.set(Calendar.MINUTE, Integer.valueOf(num21.split("-")[0].split(":")[1])); // // Calendar calendar1End = Calendar.getInstance(); // calendar1End.setTime(createTime); // calendar1End.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num21.split("-")[1].split(":")[0])); // calendar1End.set(Calendar.MINUTE, Integer.valueOf(num21.split("-")[1].split(":")[1])); // // Calendar calendar2Start = Calendar.getInstance(); // calendar2Start.setTime(createTime); // calendar2Start.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num22.split("-")[0].split("-")[0].split(":")[0])); // calendar2Start.set(Calendar.MINUTE, Integer.valueOf(num22.split("-")[0].split("-")[0].split(":")[1])); // // Calendar calendar2End = Calendar.getInstance(); // calendar2End.setTime(createTime); // calendar2End.set(Calendar.HOUR_OF_DAY, Integer.valueOf(num22.split("-")[1].split(":")[0])); // calendar2End.set(Calendar.MINUTE, Integer.valueOf(num22.split("-")[1].split(":")[1])); // // 判断是否为高峰期 起步价,里程费,时长费修改 // if ((createTime.getTime() > calendar1Start.getTimeInMillis() && createTime.getTime() < calendar1End.getTimeInMillis()) // || (createTime.getTime() > calendar2Start.getTimeInMillis() && createTime.getTime() < calendar2End.getTimeInMillis())) { // num3 = num23; // num6 = num24; // num7 = num25; // startType = 3; // } // // 判断当前是否属于节假日 // boolean holiday = holidayUtil.isHoliday(DateUtils.toLocalDate(createTime)); // if (holiday) { // // 判断是否为节假日 起步价修改 // num3 = num29; // num6 = num30; // num7 = num31; // startType = 4; // } // // 查询起步价结束时间段 // for (OrderTrajectory trajectory : trajectories) { // Long locatetime = trajectory.getLocatetime(); // endDate = new Date(locatetime); // LocalDateTime end = DateUtils.dateToLocalDateTime(endDate); // if (end.isAfter(tripBegin)) { // // 行程开始 开始计算里程数 // if (startDistance >= Double.parseDouble(num4)) { // // 行驶里程大于基础配置里程 那么起步价时段计算完成 // break; // } // startDistance += trajectory.getDistance(); // } // } // // 起步价价格明细封装 // FareBreakdownDetailVo startDetail = new FareBreakdownDetailVo(); // startDetail.setType(startType); // startDetail.setTime(timeFormat.format(startDate) + "-" + timeFormat.format(endDate)); // startDetail.setMileage(new BigDecimal(startDistance / 1000).setScale(2, RoundingMode.HALF_UP)); // // // 计算startDate和endDate相差多少分钟 // // 将 Date 转换为 LocalDateTime // LocalDateTime startDateTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); // LocalDateTime endDateTime = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); // // // 计算时间差(单位:分钟) // long minutesDifference = Duration.between(startDateTime, endDateTime).toMinutes(); // startDetail.setDuration(minutesDifference); // startDetail.setMoney(new BigDecimal(num3)); // start.add(startDetail); // // // // 计算起步价格、里程、时段、行驶时间 //// calculateStartingFare(trajectories, tripBegin, startFlag, startDistance, startingFareJsonArray, num3, num4, num5, endDate, order, num14, num15, num16, num17, startType, num21, num22, num23, num24, num25, num29, num30, num31, timeFormat, startDate, start); // // for (OrderTrajectory trajectory : trajectories) { //// FareBreakdownDetailVo mileageDetail = new FareBreakdownDetailVo(); //// mileageDetail.setType(); //// mileageDetail.setTime(); //// mileageDetail.setMileage(); //// mileageDetail.setDuration(); //// mileageDetail.setMoney(); // // Long locatetime = trajectory.getLocatetime(); // Date mileageDate = new Date(locatetime); // LocalDateTime begin = DateUtils.dateToLocalDateTime(mileageDate); // if (begin.isAfter(tripBegin)) { // totalDistance += trajectory.getDistance(); // if (totalDistance >= startDistance) { // // 开始累加起步里程 // mileageDistance += trajectory.getDistance(); // // 判断当前里程费属于什么时段 //// mileageTypeTemp // MileageDto param = new MileageDto(); // param.setMileage(num6); // param.setTime(num7); // param.setMileageTypeTemp(mileageTypeTemp); // MileageDto mileageDto = mileageType(param,startingFareJsonArray, mileageDate, begin, num14, num16, num17, num21, num22, num24, num25, num30, num31); // if (mileageType==0){ // // 首次 // mileageType = mileageDto.getMileageTypeTemp(); // mileageTypeTemp= mileageDto.getMileageTypeTemp(); // } else if (mileageType!=mileageTypeTemp){ // // 新时段 // FareBreakdownDetailVo fareBreakdownDetailVo = new FareBreakdownDetailVo(); // fareBreakdownDetailVo.setType(mileageType); // fareBreakdownDetailVo.setTime(timeFormat.format(endDate)+"-"+timeFormat.format(mileageDate)); // double md = mileageDistance / 1000; // fareBreakdownDetailVo.setMileage(new BigDecimal(md).setScale(2, RoundingMode.HALF_UP)); // // 计算startDate和endDate相差多少分钟 // // 将 Date 转换为 LocalDateTime // LocalDateTime startMileageTime = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); // LocalDateTime endMileageTime = mileageDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); // // // 计算时间差(单位:分钟) // long minutesDifferenceMileage = Duration.between(startMileageTime, endMileageTime).toMinutes(); // startDetail.setDuration(minutesDifference); // fareBreakdownDetailVo.setDuration(minutesDifferenceMileage); // // 如果md小数位是0 那么舍弃小数,如果小数位不为0 那么进1 // fareBreakdownDetailVo.setMileage(new BigDecimal(md).setScale(2, RoundingMode.HALF_UP)); // Integer temp = (int)md; // if (md> temp){ // temp=temp+1; // } // // 超出的里程 // fareBreakdownDetailVo.setMoney(new BigDecimal(temp*6)); // mileage.add(fareBreakdownDetailVo); // // 修改时段标识 // mileageType = mileageTypeTemp; // // 修改新时段开始时间 // endDate = mileageDate; // }else{ // // 时段未变化 // } // } // } // } // // 开始计算里程费用 // for (OrderTrajectory trajectory : trajectories) { // Long locatetime = trajectory.getLocatetime(); // Date mileageDate = new Date(locatetime); // LocalDateTime begin = DateUtils.dateToLocalDateTime(mileageDate); // // 行驶里程大于起步里程配置 开始计算里程和里程费 // if (begin.isAfter(tripBegin)) { // totalDistance += trajectory.getDistance(); // double v = totalDistance / 1000.0; // if (v >= Double.parseDouble(num5)) { // // 增加超出起步里程的里程数 // mileageDistance += trajectory.getDistance(); // // } // if (mileageType == 0) { // // 第一次计算里程费 // // } // } // } // } else { // // } // //// XpPricingCardVo xpPricingCardVo = xpPricingUtil.calculationPrice( //// order.getAppUserId().toString(),JSON.parseObject(pricing.getBasicPricingJson()), //// JSON.parseArray(pricing.getStartingFareJson()), //// pricing.getDynamicPricingJson(), //// pricing.getIsDynamicPrice(), //// totalDistance, //// seconds, //// order.getCityId() //// ); for (FareBreakdownDetailVo fareBreakdownDetailVo : start) { XpOrderDetail xpOrderDetail = new XpOrderDetail(); BeanUtils.copyProperties(fareBreakdownDetailVo, xpOrderDetail); xpOrderDetail.setOrderId(orderId); xpOrderDetail.setDetailType(1); xpOrderDetail.setCreateTime(LocalDateTime.now()); xpOrderDetails.add(xpOrderDetail); } BigDecimal mileageMoney = BigDecimal.ZERO; for (FareBreakdownDetailVo fareBreakdownDetailVo : mileage) { XpOrderDetail xpOrderDetail = new XpOrderDetail(); BeanUtils.copyProperties(fareBreakdownDetailVo, xpOrderDetail); xpOrderDetail.setOrderId(orderId); xpOrderDetail.setDetailType(2); xpOrderDetail.setCreateTime(LocalDateTime.now()); mileageMoney = mileageMoney.add(fareBreakdownDetailVo.getMoney()); xpOrderDetails.add(xpOrderDetail); } order.setMileageMoney(mileageMoney); for (XpOrderDetail xpOrderDetail : xpOrderDetails) { xpOrderDetailMapper.insert(xpOrderDetail); } for (FareBreakdownDetailVo fareBreakdownDetailVo : duration) { order.setDurationType(fareBreakdownDetailVo.getType()); order.setDurationMoney(fareBreakdownDetailVo.getMoney()); order.setDuration(Double.parseDouble(fareBreakdownDetailVo.getDuration()+"")); } for (FareBreakdownDetailVo fareBreakdownDetailVo : longDistance) { order.setLongDistanceType(fareBreakdownDetailVo.getType()); order.setLongDistance(fareBreakdownDetailVo.getMileage().doubleValue()); order.setLongDistancemoney(fareBreakdownDetailVo.getMoney()); } baseMapper.updateById(order); } xp-robotaxi-push-message-boot/pom.xml
File was renamed from xp-robotaxi-pushMessage-boot/pom.xml @@ -8,7 +8,7 @@ </parent> <modelVersion>4.0.0</modelVersion> <artifactId>xp-robotaxi-pushMessage-boot</artifactId> <artifactId>xp-robotaxi-push-message-boot</artifactId> <description> xp-modules-pushMessage消息推送模块 xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/PushMessageApplication.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/config/MessageLocalConfig.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/config/MyLocaleResolver.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/controller/PushOrderRouteController.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/utils/MapMatchingUtil.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/config/WebSocketServer.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/config/WebSocketServerConfig.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/controller/WebSocketController.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/WebSocketAuthHandler.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/handler/WebSocketTextFrameHandler.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/service/WebSocketUserConnectionManager.java
xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/webSocket/service/WebSocketUserService.java
xp-robotaxi-push-message-boot/src/main/resources/bootstrap.ymlcopy from xp-robotaxi-remoteDriving-boot/src/main/resources/bootstrap.yml copy to xp-robotaxi-push-message-boot/src/main/resources/bootstrap.yml
File was copied from xp-robotaxi-remoteDriving-boot/src/main/resources/bootstrap.yml @@ -6,7 +6,7 @@ spring: application: # 应用名称 name: xp-robotaxi-remoteDriving-boot name: xp-robotaxi-push-message-boot main: allow-bean-definition-overriding: true allow-circular-references: true @@ -134,8 +134,6 @@ # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} --- spring: config: @@ -160,7 +158,6 @@ # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} --- spring: xp-robotaxi-push-message-boot/src/main/resources/i18n/messages.properties
xp-robotaxi-push-message-boot/src/main/resources/i18n/messages_en_US.properties
xp-robotaxi-push-message-boot/src/main/resources/i18n/messages_zh_CN.properties
xp-robotaxi-push-message-boot/src/main/resources/logback.xml
xp-robotaxi-push-message-boot/src/main/resources/mybatis-config.xml
xp-robotaxi-push-message-boot/src/main/resources/seata.conf
xp-robotaxi-push-message-boot/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java
xp-robotaxi-push-message-boot/xp-modules-account.iml
xp-robotaxi-pushMessage-boot/src/main/resources/bootstrap.yml
File was deleted xp-robotaxi-remote-driving-boot/pom.xml
File was renamed from xp-robotaxi-remoteDriving-boot/pom.xml @@ -8,7 +8,7 @@ </parent> <modelVersion>4.0.0</modelVersion> <artifactId>xp-robotaxi-remoteDriving-boot</artifactId> <artifactId>xp-robotaxi-remote-driving-boot</artifactId> <description> xp-modules-remoteDriving远程驾驶模块 xp-robotaxi-remote-driving-boot/src/main/java/com/xiaopeng/remoteDriving/RemoteDrivingApplication.java
xp-robotaxi-remote-driving-boot/src/main/java/com/xiaopeng/remoteDriving/config/MessageLocalConfig.java
xp-robotaxi-remote-driving-boot/src/main/java/com/xiaopeng/remoteDriving/config/MyLocaleResolver.java
xp-robotaxi-remote-driving-boot/src/main/resources/bootstrap.yml
File was renamed from xp-robotaxi-remoteDriving-boot/src/main/resources/bootstrap.yml @@ -6,7 +6,7 @@ spring: application: # 应用名称 name: xp-robotaxi-remoteDriving-boot name: xp-robotaxi-remote-driving-boot main: allow-bean-definition-overriding: true allow-circular-references: true xp-robotaxi-remote-driving-boot/src/main/resources/i18n/messages.properties
xp-robotaxi-remote-driving-boot/src/main/resources/i18n/messages_en_US.properties
xp-robotaxi-remote-driving-boot/src/main/resources/i18n/messages_zh_CN.properties
xp-robotaxi-remote-driving-boot/src/main/resources/logback.xml
xp-robotaxi-remote-driving-boot/src/main/resources/mybatis-config.xml
xp-robotaxi-remote-driving-boot/src/main/resources/seata.conf
xp-robotaxi-remote-driving-boot/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java
xp-robotaxi-remote-driving-boot/xp-modules-account.iml
xp-robotaxi-vehicle-convoy-boot/pom.xml
File was renamed from xp-robotaxi-vehicleConvoy-boot/pom.xml @@ -8,7 +8,7 @@ </parent> <modelVersion>4.0.0</modelVersion> <artifactId>xp-robotaxi-vehicleConvoy-boot</artifactId> <artifactId>xp-robotaxi-vehicle-convoy-boot</artifactId> <description> xp-modules-vehicleConvoy车辆车队模块 xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/VehicleConvoyApplication.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/DataUpdateHandlerConfig.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/MessageLocalConfig.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/MyLocaleResolver.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/config/TransactionConfiguration.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/constant/I18nKeyConstant.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/IndexController.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetOperationsController.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetVehicleController.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpPolicyApplicationController.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/mapper/XpFleetMapper.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/mapper/XpFleetOperationsMapper.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/mapper/XpFleetVehicleMapper.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/mapper/XpPolicyApplicationMapper.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/mapper/XpVehicleAnnualRecordMapper.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/mapper/XpVehicleMapper.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/FleetAddDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/FleetEditDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/SetTemperatureDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/UnlockAppletDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/UnlockByTypeDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/VehicleAddDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/VehicleBatchSetElectronicDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/VehicleEditDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/VehicleImproveInfoDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/dto/XpPolicyApplicationAuditDTO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/exportExcel/XpOperationVehicleExportExcel.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/exportExcel/XpVehicleExportExcel.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/importExcel/XpVehicleImportExcel.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/FleetPageQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/FleetUserPageQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/FleetVehiclePageQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/IndexDataQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/OperationVehicleExportQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/OperationVehiclePageQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/VehicleExportQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/VehicleMapQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/VehiclePageQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/VehicleSelectPageQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/VehicleTaskRoutineQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/XpPolicyApplicationQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/XpVehicleAnnualRecordPageQuery.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/FleetDetailVO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/FleetPageVO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/FleetUserVO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/FleetVehicleVO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/IndexDataVO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/XpPolicyApplicationVO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/vo/XpVehicleVO.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpFleetOperationsService.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpFleetService.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpFleetVehicleService.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpPolicyApplicationService.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpVehicleAnnualRecordService.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpVehicleService.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IndexDataService.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/IndexDataServiceImpl.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetOperationsServiceImpl.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetVehicleServiceImpl.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleAnnualRecordServiceImpl.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/util/HMACSHA1.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/util/SnowFlake.java
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/util/VehicleControlUtil.java
xp-robotaxi-vehicle-convoy-boot/src/main/resources/bootstrap.yml
New file @@ -0,0 +1,163 @@ server: port: 6100 tomcat: basedir: /data/tomcat # Spring spring: application: # 应用名称 name: xp-robotaxi-vehicle-convoy-boot main: allow-bean-definition-overriding: true allow-circular-references: true profiles: # 环境配置 active: dev # active: prod --- spring: config: activate: on-profile: dev cloud: nacos: discovery: # 服务注册地址 server-addr: 192.168.110.80:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 username: nacos password: nacos config: # 配置中心地址 server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP name: ${spring.application.name} username: nacos password: nacos # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} --- seata: enabled: true application-id: ${spring.application.name} tx-service-group: seata_tx_group #此处配置自定义的seata事务分组名称 enable-auto-data-source-proxy: false #关闭数据库代理 service: vgroup-mapping: seata_tx_group: default data-source-proxy-mode: AT config: type: nacos nacos: # 开发环境 server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # data-id: seata-server.properties # username: nacos # password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # username: nacos # password: nacos cloud: nacos: discovery: # 开发环境 server-addr: 192.168.110.80:8848 namespace: 5185ac4b-6369-48eb-a21b-a7cbc441c5f1 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos # 生产环境 # server-addr: 192.168.0.137:8848,192.168.0.123:8848 # namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a # group: DEFAULT_GROUP # application: seata-server #Nacos 中 Seata 名称 # username: nacos # password: nacos sentinel: transport: dashboard: 192.168.0.137:8080 # Sentinel控制台地址 eager: true --- spring: config: activate: on-profile: prod cloud: nacos: discovery: # 服务注册地址 server-addr: 192.168.0.137:8848,192.168.0.123:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a username: nacos password: nacos config: # 配置中心地址 server-addr: 192.168.0.137:8848,192.168.0.123:8848 namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a username: nacos password: nacos group: DEFAULT_GROUP name: ${spring.application.name} # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} --- spring: config: activate: on-profile: test cloud: nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8848 service: ${spring.application.name} group: DEFAULT_GROUP namespace: 96712c7a-480b-4f40-b783-39f00f3b33ce config: # 配置中心地址 server-addr: 127.0.0.1:8848 namespace: 96712c7a-480b-4f40-b783-39f00f3b33ce group: DEFAULT_GROUP name: ${spring.application.name} # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} --- xp-robotaxi-vehicle-convoy-boot/src/main/resources/i18n/messages.properties
xp-robotaxi-vehicle-convoy-boot/src/main/resources/i18n/messages_en_US.properties
xp-robotaxi-vehicle-convoy-boot/src/main/resources/i18n/messages_zh_CN.properties
xp-robotaxi-vehicle-convoy-boot/src/main/resources/logback.xml
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpFleetMapper.xml
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpFleetOperationsMapper.xml
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpFleetVehicleMapper.xml
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpPolicyApplicationMapper.xml
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleAnnualRecordMapper.xml
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mybatis-config.xml
xp-robotaxi-vehicle-convoy-boot/src/main/resources/seata.conf
xp-robotaxi-vehicle-convoy-boot/src/test/java/com/ruoyi/account/RuoYiAccountApplicationTests.java
xp-robotaxi-vehicle-convoy-boot/xp-modules-account.iml
xp-robotaxi-vehicleConvoy-boot/src/main/resources/bootstrap.yml
File was deleted