sql/增量sql/xprt_maintenance.sql
@@ -0,0 +1,39 @@ ALTER TABLE `xp_task_0` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_1` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_2` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_3` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_4` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_5` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_6` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_7` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_8` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_9` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_10` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_11` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_12` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_13` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_14` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_15` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_16` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_17` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_18` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; ALTER TABLE `xp_task_19` MODIFY COLUMN `vehicle_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '车辆位置' AFTER `task_image`; sql/增量sql/xprt_operation.sql
@@ -1,19 +1,119 @@ ALTER TABLE `xp_point_0` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_0` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_1` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_0` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_2` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_0` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_3` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_0` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_4` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_0` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_5` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_0` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_6` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_1` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_7` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_1` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_8` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_1` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_9` MODIFY COLUMN `point_pictures` json NULL COMMENT '点位照片' AFTER `remarks`; ALTER TABLE `xp_point_1` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_1` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_1` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_2` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_2` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_2` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_2` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_2` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_2` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_3` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_3` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_3` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_3` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_3` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_3` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_4` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_4` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_4` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_4` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_4` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_4` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_5` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_5` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_5` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_5` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_5` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_5` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_6` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_6` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_6` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_6` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_6` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_6` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_7` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_7` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_7` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_7` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_7` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_7` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_8` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_8` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_8` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_8` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_8` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_8` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; ALTER TABLE `xp_point_9` ADD COLUMN `province_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份名称' AFTER `parking_point`; ALTER TABLE `xp_point_9` ADD COLUMN `province_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '省份code' AFTER `province_name`; ALTER TABLE `xp_point_9` ADD COLUMN `city_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市名称' AFTER `province_code`; ALTER TABLE `xp_point_9` ADD COLUMN `city_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '城市code' AFTER `city_name`; ALTER TABLE `xp_point_9` ADD COLUMN `district_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县名称' AFTER `city_code`; ALTER TABLE `xp_point_9` ADD COLUMN `district_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '区县code' AFTER `district_name`; xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -874,6 +874,14 @@ case ORDER_CANCELLED: //已取消 if(!orderId.contains("XU")){ //判断订单状态,已经取消的不作处理 Object cacheObject = redisService.getCacheObject("ORDER_STATUS:" + orderId); if(null != cacheObject){ int order_status = Integer.parseInt(cacheObject.toString()); if(0 == order_status){ return; } } //行程中取消订单,按照行程结束处理 buildPushOrderStatus(orderId, OrderStatusEnum.SEE_OFF_GUESTS, sequence); xpOrderClient.updateOrderStatus(Long.parseLong(orderId), OrderStatusEnum.SEE_OFF_GUESTS.getCode()); @@ -904,9 +912,6 @@ public void buildPushOrderStatus(String orderId, OrderStatusEnum status, Long sequence){ if(orderId.contains("XU")){ //巡游单 //响应消息 // TODO 1.处理结束当前巡游订单 2.创建新的巡游订单 返航 3.调用xpu车机接口 (判断是返航还是正常 返航需要存储之前的订单id) responseMessage(sequence, ""); //到达目的地 if(OrderStatusEnum.COMPLETED.equals(status)){ // 返程找到目前的订单 -》之前的订单 查询生成一个 正常巡游 找到下一个点位 若到达最后点位 则反向找点位 每次判断是否收车状态 是则不进行处理了 @@ -919,6 +924,8 @@ xpCruiseOrderClient.completeCruiseOrder(Long.parseLong(orderId.substring(2))); R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(vehicleId); XpVehicle xpVehicle = xpVehicleR.getData(); //响应消息 responseMessage(sequence, xpVehicle.getVehicleVin()); // 运营中 继续执行 if(xpVehicle.getOperatingStatus()==1 && xpVehicle.getState()==0){ log.info("巡游单到达终点,继续执行下一笔巡游单"); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/AddCruiseMissionJob.java
@@ -41,12 +41,15 @@ cancelTaxiPassengerVo.setOrderNo(xpOrder.getOrderNumber()); cancelTaxiPassengerVo.setAppId(appid); userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo); log.info("车辆到达终点后的定时任务解绑用户和车辆关系 {}", xpOrder.getOrderNumber()); // 修改车辆接单状态 vehicle.setState(0); xpVehicleClient.updateVehicleById(vehicle); log.info("车辆到达终点后的定时任务回滚车辆状态为空闲 {}", xpOrder.getOrderNumber()); } xpOrderService.addCruiseMission(vehicle, xpOrder); log.info("车辆到达终点后的定时任务给车辆派巡游单 {}", xpOrder.getOrderNumber()); } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -635,6 +635,7 @@ order.setStatus(0); order.setAppUserId(null); baseMapper.updateById(order); redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); // 消息推送 Map<String, Object> params = new HashMap<>(); Map<String, Object> content = new HashMap<>(); @@ -1278,11 +1279,13 @@ order.setStatus(0); order.setAppUserId(null); baseMapper.updateById(order); redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); return; } order.setStatus(0); order.setAppUserId(null); baseMapper.updateById(order); redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); XpOrderCancel xpOrderCancel = new XpOrderCancel(); xpOrderCancel.setOrderId(orderId); xpOrderCancel.setUserId(Long.valueOf(uid)); @@ -1299,21 +1302,6 @@ Integer i = Integer.valueOf(cacheObject.toString()); redisService.setCacheCancelOrder("CANCEL_ORDER_" + uid, i + 1); } // 消息推送 // Map<String, Object> params = new HashMap<>(); // Map<String, Object> content = new HashMap<>(); // content.put("orderId", order.getId().toString()); // content.put("status", OrderStatusEnum.CANCELED.getCode()); // params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc()); // params.put("content", JSONObject.toJSONString(content)); // params.put("timestamp", new Date().getTime() + ""); // String message = JSONObject.toJSONString(params); // SendMessageDTO sendMessageDTO = new SendMessageDTO(); // sendMessageDTO.setMessage(message); // sendMessageDTO.setAppUserId(uid); // xpPushMessageClient.sendStatus(sendMessageDTO); // log.info("订单取消消息推送完毕"); // 移除mongo数据 xpPricingClient.deleteXpGeoQueryEntity(order.getId().toString()); @@ -1369,6 +1357,7 @@ order.setStatus(0); order.setAppUserId(null); baseMapper.updateById(order); redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); XpOrderCancel xpOrderCancel = new XpOrderCancel(); xpOrderCancel.setOrderId(Long.valueOf(orderId)); xpOrderCancel.setUserId(1l); @@ -1450,6 +1439,7 @@ xpOrder.setAppUserId(null); xpOrder.setStatus(10); baseMapper.updateById(xpOrder); redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), 10, 24L, TimeUnit.HOURS); XpOrderEvaluate evaluate = new XpOrderEvaluate(); evaluate.setOrderId(xpOrder.getId()); @@ -1476,6 +1466,9 @@ if(xpOrder.getStatus() >= 8){ return R.fail("订单已结束"); } Long appUserId = xpOrder.getAppUserId(); // 查询车辆 XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData(); switch (status) { case 4: // 查询起点点位 @@ -1500,6 +1493,8 @@ LocalDateTime now = LocalDateTime.now(); xpOrder.setBoardingTime(now); xpOrder.setRideTime(now); //推送行起点到终点的驶轨迹给乘客端 sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", xpVehicle.getVehicleVin()); // 删除定时任务job QuartzManager.removeJob((OrderCancelJob.name + xpOrder.getId()).toUpperCase(), TimeJobType.ORDER_CANCEL); break; @@ -1510,8 +1505,6 @@ case 7: xpOrder.setGetoffTime(LocalDateTime.now()); // 解析下车地点 // 查询车辆 XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData(); VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class); if(Objects.nonNull(vehiclePosition)){ GeoJsonPoint point = vehiclePosition.getPoint(); @@ -1522,6 +1515,13 @@ xpOrder.setGetoffAddress(geocode.get("address")); } } //计算行驶总距离和时长 List<OrderTrajectory> orderTrajectoryList = mongoTemplate.find(new Query().addCriteria(Criteria.where("orderId").is(xpOrder.getId())), OrderTrajectory.class); Double reduce = orderTrajectoryList.stream().map(OrderTrajectory::getDistance).reduce(0.0, Double::sum); xpOrder.setMileageKilometers(new BigDecimal(reduce).divide(new BigDecimal(1000)).setScale(4, RoundingMode.HALF_EVEN).doubleValue()); long duration = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) - xpOrder.getTripBegin().toEpochSecond(ZoneOffset.of("+8")); xpOrder.setDuration(new BigDecimal(duration).divide(new BigDecimal(60), 2, RoundingMode.HALF_EVEN).doubleValue()); // 推送倒计时消息 Map<String, Object> params = new HashMap<>(); Map<String, Object> content = new HashMap<>(); @@ -1570,7 +1570,7 @@ endTripJobMaps ); // 添加车辆到达终点后限停时间到后驶离的定时任务 //时间到后添加巡游订单,解绑车辆关系,车辆驶离点位 //时间到后将车辆状态回滚到空闲、添加巡游订单,解绑用户和车辆关系,车辆驶离点位 XpPoint point = xpPointClient.queryById(xpOrder.getEndPointId()).getData(); Map<String, ? extends Object> jobMaps = new ImmutableMap.Builder<String, String>() @@ -1589,6 +1589,7 @@ xpOrder.setStatus(status); xpOrder.setAppUserId(null); this.updateById(xpOrder); redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), status, 24L, TimeUnit.HOURS); return R.ok(); } @@ -1614,12 +1615,8 @@ order.setStatus(8); order.setAppUserId(null); order.setTripEnd(LocalDateTime.now()); double exactMinutes = Duration.between(order.getBoardingTime(), order.getTripEnd()).toMillis() / (1000.0 * 60); exactMinutes = new BigDecimal(exactMinutes).setScale(2, RoundingMode.HALF_UP).doubleValue(); order.setDuration(exactMinutes); baseMapper.updateById(order); redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 8, 24L, TimeUnit.HOURS); // 根据订单所属开通城市id 查询定价 R<XpPricing> pricingByCityId = xpPricingClient.getPricingByCid(order.getCityId()); @@ -1664,6 +1661,8 @@ xpOrderDetail.setOrderId(orderId); xpOrderDetail.setType(1); xpOrderDetail.setMileage(new BigDecimal(mileageKilometers).setScale(2, RoundingMode.HALF_UP)); String currentTimeSlot = DateUtils.getCurrentTimeSlot(); xpOrderDetail.setTime(currentTimeSlot); xpOrderDetail.setDuration(duration1); xpOrderDetail.setMoney(new BigDecimal(xpPricingCardVo.getStartPrice()).setScale(2, RoundingMode.HALF_UP)); xpOrderDetails.add(xpOrderDetail); @@ -1671,7 +1670,6 @@ xpOrderDetail.setDetailType(2); xpOrderDetail.setOrderId(orderId); xpOrderDetail.setType(1); xpOrderDetail.setMileage(new BigDecimal(mileageKilometers).setScale(2, RoundingMode.HALF_UP)); xpOrderDetail.setMoney(new BigDecimal(xpPricingCardVo.getDistancePrice()).setScale(2,RoundingMode.HALF_UP)); xpOrderDetails.add(xpOrderDetail); xpOrderDetail = new XpOrderDetail(); @@ -2410,16 +2408,8 @@ @Override public R<FareBreakdownVo> fareBreakdown(Long orderId, String uid) { XpOrder order = this.getById(orderId); order.setAppUserId(null); // 查询订单轨迹 List<OrderTrajectory> trajectories = mongoTemplate.find( new Query(Criteria.where("orderId").is(orderId)) .with(Sort.by(Sort.Direction.ASC, "locatetime")), OrderTrajectory.class ); FareBreakdownVo res = new FareBreakdownVo(); res.setChangeMoneyFlag(order.getChangeMoneyFlag()); @@ -2447,22 +2437,6 @@ } } // if (order.getDuration() != null && order.getDuration() > 0) { // FareBreakdownDetailVo durationDetail = new FareBreakdownDetailVo(); // durationDetail.setType(order.getDurationType()); // durationDetail.setDuration(order.getDuration()); // durationDetail.setMoney(order.getDurationMoney()); // duration.add(durationDetail); // } // // if (order.getLongDistance() != null && order.getLongDistance() > 0) { // FareBreakdownDetailVo longDistanceDetail = new FareBreakdownDetailVo(); // longDistanceDetail.setType(order.getLongDistanceType()); // longDistanceDetail.setMileage(BigDecimal.valueOf(order.getLongDistance())); // longDistanceDetail.setMoney(order.getLongDistancemoney()); // longDistance.add(longDistanceDetail); // } res.setStart(start); res.setMileage(mileage); res.setDuration(duration); @@ -2478,9 +2452,7 @@ order.setTripEnd(tripEnd); this.updateById(order); } double exactMinutes = Duration.between(order.getBoardingTime(), order.getTripEnd()).toMillis() / (1000.0 * 60); res.setTime(new BigDecimal(exactMinutes).setScale(2, RoundingMode.HALF_UP)); res.setTime(new BigDecimal(order.getDuration() == null ? 0 : order.getDuration()).multiply(new BigDecimal(60)).setScale(0, RoundingMode.HALF_UP)); return R.ok(res); } @@ -2508,6 +2480,7 @@ } baseMapper.updateById(order); redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 9, 24L, TimeUnit.HOURS); return R.ok(); } @@ -2557,8 +2530,8 @@ @Override public void saveVehicleLocation(OrderTrajectory orderTrajectory) { // 查询订单信息 XpOrder xpOrder = this.getById(orderTrajectory.getOrderId()); if(xpOrder.getStatus() != 6){ Integer status = redisService.getCacheObject("ORDER_STATUS:" + orderTrajectory.getOrderId()); if(status != 6){ return; } @@ -2566,10 +2539,6 @@ // 获取上一次定位 String oldLocation = redisService.getCacheObject(CacheConstants.ORDER_OLD_LOCATION + orderTrajectory.getOrderId()); if (StringUtils.isEmpty(oldLocation)) { // 首次定位 xpOrder.setMileageKilometers(0D); xpOrder.setAppUserId(null); this.updateById(xpOrder); orderTrajectory.setDistance(0D); // 存储mongo数据 mongoTemplate.save(orderTrajectory); @@ -2579,17 +2548,12 @@ Map<String, Double> distance = GeodesyUtil.getDistance(orderTrajectory.getLocation(), oldLocation); if (null != distance) { Double distance1 = distance.get("WGS84"); if (distance1 > 50 && xpOrder.getStatus() == 6) {//大于50米表示在移动,且在服务中的时候记录里程 xpOrder.setMileageKilometers(BigDecimal.valueOf(xpOrder.getMileageKilometers()).add(new BigDecimal(distance1).divide(new BigDecimal(1000)).setScale(4, RoundingMode.HALF_EVEN)).doubleValue()); xpOrder.setAppUserId(null); this.updateById(xpOrder); // 存储本次距离 orderTrajectory.setDistance(distance1); // 存储mongo数据 mongoTemplate.save(orderTrajectory); // 更新定位 redisService.setCacheObject(CacheConstants.ORDER_OLD_LOCATION + orderTrajectory.getOrderId(), orderTrajectory.getLocation()); } } else { log.error("调用高德计算距离出错"); } @@ -2782,26 +2746,55 @@ } // 存mongo数据 xpPricingClient.updateXpGeoQueryEntity(order.getId().toString()); // 修改车辆信息 vehicle.setState(1); xpVehicleClient.updateVehicleById(vehicle); //绑定用户和车辆关系 addTaxiPassengerVo.setUid(appUserId.toString()); order.setAppUserId(null); this.updateById(order); //构建推送消息 Map<String, Object> params = new HashMap<>(); Map<String, Object> content = new HashMap<>(); content.put("orderId", orderId.toString()); content.put("status", 2); params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc()); params.put("content", JSONObject.toJSONString(content)); params.put("timestamp", System.currentTimeMillis() + ""); String message = JSONObject.toJSONString(params); SendMessageDTO dto1 = new SendMessageDTO(); dto1.setAppUserId(appUserId + ""); dto1.setMessage(message); R<String> stringR = xpPushMessageClient.sendStatus(dto1); //推送失败,重试3次 if(stringR.getCode() != Constants.SUCCESS){ ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>()); executor.execute(() -> { for (int i = 0; i < 3; i++) { R<String> stringR1 = xpPushMessageClient.sendStatus(dto1); if(stringR1.getCode() == Constants.SUCCESS){ break; } try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } log.info("推送订单状态消息失败:{} {} {}", stringR1.getMsg(), JSON.toJSONString(dto), order.getOrderNumber()); } }); } redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS); addTaxiPassengerVo.setOrderNo(order.getOrderNumber()); // TODO appid addTaxiPassengerVo.setAppId(appid); userVehicleClient.addTaxiPassenger(addTaxiPassengerVo); //推送乘客车辆到达预约点的导航数据 sendRoute(addTaxiPassengerVo.getUid(), orderId, "ORDER_NAVIGATION_START_DATA", dto.getXpVehicleVin()); } else { //推送行起点到终点的驶轨迹给乘客端 sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", dto.getXpVehicleVin()); } } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TaskOrderCancelUtil.java
@@ -3,6 +3,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.order.service.IXpOrderService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -11,6 +12,7 @@ import java.time.LocalDateTime; import java.util.List; import java.util.concurrent.TimeUnit; @Slf4j @Component @@ -19,6 +21,9 @@ @Autowired private IXpOrderService xpOrderService; @Autowired private RedisService redisService; /** * 30秒执行一次 @@ -54,6 +59,7 @@ order.setAppUserId(null); order.setStatus(0); xpOrderService.updateById(order); redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS); } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/utils/TrajectoryGenerator.java
File was deleted xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -628,7 +628,7 @@ String jsonString = jsonObject.toJSONString(); vehicleDetail.setVehiclePictures(jsonString); } return R.ok(); return R.ok(vehicleDetail); } /**