xp-robotaxi-itinerary-boot/pom.xml
@@ -15,6 +15,12 @@ </description> <dependencies> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.18.1</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> @@ -118,6 +124,12 @@ <artifactId>snakeyaml</artifactId> <version>1.33</version> </dependency> <dependency> <groupId>com.xiaopeng.logan</groupId> <artifactId>xp-evi-oss-sdk</artifactId> <version>1.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> <build> xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/XpPricingController.java
@@ -13,6 +13,7 @@ import com.xiaopeng.itinerary.service.IXpGeoQueryEntityService; import com.xiaopeng.itinerary.service.XpPricingService; import com.xiaopeng.api.vo.HotFixInfoVo; import com.xiaopeng.itinerary.utils.ImageTagProcessor; import com.xiaopeng.itinerary.vo.SaveOrderVo; import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.Api; @@ -42,13 +43,14 @@ private final XpPricingService xpPricingService; private final IXpGeoQueryEntityService xpGeoQueryEntityService; private final RedisService redisService; private final ImageTagProcessor imageTagProcessor; public XpPricingController(XpPricingService xpPricingService, IXpGeoQueryEntityService xpGeoQueryEntityService, RedisService redisService) { public XpPricingController(XpPricingService xpPricingService, IXpGeoQueryEntityService xpGeoQueryEntityService, RedisService redisService, ImageTagProcessor imageTagProcessor) { this.xpPricingService = xpPricingService; this.xpGeoQueryEntityService = xpGeoQueryEntityService; this.redisService = redisService; this.imageTagProcessor = imageTagProcessor; } @@ -66,9 +68,13 @@ @GetMapping("/base/v1/mini-program/pricing/rules/{openCityId}") @ApiOperation(value = "获取费用规则", tags = {"小程序-根据开通城市获取费用规则"}, response = String.class) public R<?> getPricingRules(@PathVariable Long openCityId) { XpPricing xpPricing = xpPricingService.getOne(new LambdaQueryWrapper<XpPricing>().eq(XpPricing::getCityId, openCityId).eq(XpPricing::getPricingType, 1).last("limit 1")); XpPricing xpPricing = xpPricingService.getOne(new LambdaQueryWrapper<XpPricing>().eq(XpPricing::getCityId, openCityId).last("limit 1")); if (xpPricing != null) { return R.ok(xpPricing.getPriceRule()); String priceRule = xpPricing.getPriceRule(); if (priceRule != null && priceRule.contains("<img")) { priceRule = imageTagProcessor.replaceImgSrcWithDownloadUrl(priceRule); } return R.ok(priceRule); } return R.ok(""); } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/utils/ImageTagProcessor.java
New file @@ -0,0 +1,49 @@ package com.xiaopeng.itinerary.utils; import com.xiaopeng.evi.oss.service.AliOssService; import lombok.extern.slf4j.Slf4j; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import java.io.UnsupportedEncodingException; @Slf4j @Component public class ImageTagProcessor { private final AliOssService aliOssService; public ImageTagProcessor(AliOssService aliOssService) { this.aliOssService = aliOssService; } public String replaceImgSrcWithDownloadUrl(String html) { if (!StringUtils.hasText(html)) { return html; } Document document = Jsoup.parse(html); Elements imgTags = document.select("img"); for (Element imgTag : imgTags) { String dataId = imgTag.attr("data-id"); String dataName = imgTag.attr("data-name"); if (!StringUtils.hasText(dataId) || !StringUtils.hasText(dataName)) { continue; } try { String downloadUrl = aliOssService.getDownloadUrl(dataId, dataName, true); if (StringUtils.hasText(downloadUrl)) { imgTag.attr("src", downloadUrl); } } catch (UnsupportedEncodingException e) { log.warn("replace image src failed, dataId={}, dataName={}", dataId, dataName, e); } } return document.body().html(); } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -521,15 +521,23 @@ vehiclePosition.setDistance(0.0); } } // availableVehiclesNearby = availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getDistance)).collect(Collectors.toList()); // int size = tendencyDistance; // // 做比对的分数 // double temp = availableVehiclesNearby.get(0).getDistance(); // for (VehiclePositionVo vehiclePosition : availableVehiclesNearby) { // vehiclePosition.setDistanceScore(vehiclePosition.getDistanceScore() + size); // if (temp != vehiclePosition.getDistance()) { // size--; // } // } // 分数计算 把时间短的分数调高 availableVehiclesNearby = availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getDistance)).collect(Collectors.toList()); int size = tendencyDistance; // 做比对的分数 double temp = availableVehiclesNearby.get(0).getDistance(); int score = 10; for (VehiclePositionVo vehiclePosition : availableVehiclesNearby) { vehiclePosition.setDistanceScore(vehiclePosition.getDistanceScore() + size); if (temp != vehiclePosition.getDistance()) { size--; } vehiclePosition.setDistanceScore(score); score--; } } @@ -558,16 +566,24 @@ vehiclePosition.setSecond(0); } } // 分数计算 把时间短的分数调高 availableVehiclesNearby = availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getSecond)).collect(Collectors.toList()); int size = tendencyTime; // 做比对的分数 double temp = availableVehiclesNearby.get(0).getSecond(); int score = 10; for (VehiclePositionVo vehiclePosition : availableVehiclesNearby) { vehiclePosition.setTimeScore(vehiclePosition.getTimeScore() + size); if (temp != vehiclePosition.getSecond()) { size--; } vehiclePosition.setTimeScore(score); score--; } // availableVehiclesNearby = availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getSecond)).collect(Collectors.toList()); // int size = tendencyTime; // // 做比对的分数 // double temp = availableVehiclesNearby.get(0).getSecond(); // for (VehiclePositionVo vehiclePosition : availableVehiclesNearby) { // vehiclePosition.setTimeScore(vehiclePosition.getTimeScore() + size); // if (temp != vehiclePosition.getSecond()) { // size--; // } // } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java
@@ -211,8 +211,8 @@ @ApiOperation(value = "巡游订单详情", tags = {"管理后台-巡游订单"}) @GetMapping(value = "/api/v1/cruise-order/getDetailById/{id}") public R<XpCruiseOrder> getDetailById(@PathVariable Long id){ XpCruiseOrder xpCruiseOrder = xpCruiseOrderService.getById(id); public R<XpCruiseOrderPageVO> getDetailById(@PathVariable Long id){ XpCruiseOrderPageVO xpCruiseOrder = xpCruiseOrderService.getDetailById(id); return R.ok(xpCruiseOrder); } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpCruiseOrderService.java
@@ -44,4 +44,5 @@ */ List<XpCruiseOrderPageVO> getExportList(XpCruiseOrderExcelQuery query); XpCruiseOrderPageVO getDetailById(Long id); } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
@@ -1,8 +1,11 @@ package com.xiaopeng.order.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; import com.xiaopeng.api.dto.automaticPilot.PushOrderDto; import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient; @@ -335,4 +338,23 @@ }).collect(Collectors.toList()); return voList; } @Override public XpCruiseOrderPageVO getDetailById(Long id) { XpCruiseOrder cruiseOrder = getById(id); XpCruiseOrderPageVO xpCruiseOrderPageVO = BeanUtil.copyProperties(cruiseOrder, XpCruiseOrderPageVO.class); if (Objects.isNull(xpCruiseOrderPageVO)) { return new XpCruiseOrderPageVO(); } XpVehicle vehicle = xpVehicleClient.queryById(cruiseOrder.getVehicleId()).getData(); if (Objects.nonNull(vehicle)) { xpCruiseOrderPageVO.setPlateNumber(vehicle.getPlateNumber()); } List<XpFleet> data = xpFleetClient.listByIds(Lists.newArrayList(cruiseOrder.getFleetId())).getData(); if (CollUtil.isNotEmpty(data)) { XpFleet xpFleet = data.get(0); xpCruiseOrderPageVO.setFleetName(xpFleet.getFleetName()); } return xpCruiseOrderPageVO; } }