xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/WeatherDTO.java
@@ -17,7 +17,8 @@ List<Lives> lives; static class Lives { @Data static public class Lives { String province; String city; String adcode; xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/account/XpOperationsUserPositionDTO.java
@@ -22,9 +22,8 @@ @ApiModelProperty(value = "纬度") private double longitude; @ApiModelProperty(value = "纬度") @ApiModelProperty(value = "距离,这个是mongoDB查询时填充") private double distance; @ApiModelProperty(value = "状态;在线 , 上班中 , 空闲") private Long status; xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/map/XpMapClientFallbackFactory.java
@@ -1,5 +1,6 @@ package com.xiaopeng.api.factory.map; import com.xiaopeng.api.dto.WeatherDTO; import com.xiaopeng.api.dto.map.OrderRouteAndFareDto; import com.xiaopeng.api.dto.map.RouteAndFareDto; import com.xiaopeng.api.feignClient.map.XpMapClient; @@ -41,6 +42,12 @@ log.error("判断是否同一经营区域失败:{}", cause.getMessage()); return R.fail("判断是否同一经营区域失败"); } @Override public R<WeatherDTO> wether(String cityCode) { log.error("获取天气失败:{}", cause.getMessage()); return R.fail("获取天气失败"); } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/map/XpMapClient.java
@@ -1,5 +1,6 @@ package com.xiaopeng.api.feignClient.map; import com.xiaopeng.api.dto.WeatherDTO; import com.xiaopeng.api.dto.map.OrderRouteAndFareDto; import com.xiaopeng.api.dto.map.RouteAndFareDto; import com.xiaopeng.api.factory.map.XpMapClientFallbackFactory; @@ -53,5 +54,9 @@ R<Boolean> diagnosisArea(@RequestBody RouteAndFareDto dto); /** * 获取指定城市的天气 */ @GetMapping("/logan/inner/weatherInfo") R<WeatherDTO> wether(@RequestParam String cityCode); } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/utils/XpPricingUtil.java
@@ -4,7 +4,9 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.xiaopeng.api.dto.WeatherDTO; import com.xiaopeng.api.dto.order.GetOrderNumDto; import com.xiaopeng.api.feignClient.map.XpMapClient; import com.xiaopeng.api.feignClient.order.XpOrderClient; import com.xiaopeng.api.vo.order.XpPricingCardVo; import com.xiaopeng.common.core.domain.R; @@ -14,10 +16,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Calendar; import java.util.Date; import java.util.*; import java.util.concurrent.TimeUnit; /** @@ -66,6 +68,7 @@ // } // @Resource XpMapClient xpMapClient; /** * 计算一口价 */ @@ -103,12 +106,26 @@ // 当前费率+(费率*上升百分比) priceRate = new BigDecimal(priceRate).multiply(divide).add(new BigDecimal(priceRate)).setScale(2, RoundingMode.HALF_UP).doubleValue(); } List<WeatherDTO.Lives> lives = xpMapClient.wether(openCityId.toString()).getData().getLives(); if(lives!=null && !lives.isEmpty()){ String w = lives.get(0).getWeather(); Set<String> weather = jsonObject.getJSONObject("weather").keySet(); for (String k : weather) { if(w.contains(k)){ double floatRate = jsonObject.getDouble(k); priceRate = new BigDecimal(priceRate).add(new BigDecimal(floatRate)).doubleValue(); break; } } } // 冷却时间 Integer time = getOrderNum(jsonObject, 6); // 触发调价了 redisService.setCacheObject("USER_DYNAMIC_PRICE_" + openCityId + "_" + uid, priceRate,time.longValue(), TimeUnit.MINUTES); } } } @@ -197,6 +214,9 @@ // 冷却时间 Integer time = getOrderNum(jsonObject, 6); // 触发调价了 redisService.setCacheObject("USER_DYNAMIC_PRICE_" + openCityId + "_" + uid, priceRate,time.longValue(), TimeUnit.MINUTES); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -1491,9 +1491,11 @@ // List<XpOperationsUserPositionDTO> users = mongoTemplate.find(new Query(Criteria.where("_id").in(ids)), XpOperationsUserPositionDTO.class); List<XpOperationsUserPositionDTO> XpOperationsUserPositionDTOs = repository.findWithDistance(new Point(vehiclePosition.getPoint().getX(), vehiclePosition.getPoint().getY()), 1000, ids); boolean skipBusy = false;//TODO 获取系统配置,是否开启跳过忙碌 List<XpOperationsUserPositionDTO> candidates = XpOperationsUserPositionDTOs.stream() .filter(positionDTO -> skipBusy && positionDTO.getStatus() == 1) // .filter(positionDTO -> skipBusy && positionDTO.getStatus() == 1) .sorted(Comparator.comparing(XpOperationsUserPositionDTO::getDistance)) .collect(Collectors.toList()); xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/dto/WhitelistAddDto.java
@@ -1,11 +1,14 @@ package com.xiaopeng.map.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.time.LocalDate; @Data @ApiModel(value = "白名单新增DTO") @@ -18,4 +21,23 @@ @ApiModelProperty(value = "优先派单 1=是 0=否", required = true) @NotNull(message = "优先派单不能为空") private Boolean isPriorityDispatch; @ApiModelProperty(value = "状态 0=冻结 1=正常", required = true) @NotNull(message = "状态不能为空") private Boolean status; @ApiModelProperty(value = "有限期") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate expireTime; @ApiModelProperty(value = "最大下单数量") @Min(value = 0, message = "不能为负") private Integer maxOrderNum; public Boolean getStatus() { if (LocalDate.now().isAfter(expireTime)) { return false; } return status; } } xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/dto/WhitelistEditDto.java
@@ -1,11 +1,14 @@ package com.xiaopeng.map.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.time.LocalDate; @Data @ApiModel(value = "白名单编辑DTO") @@ -29,4 +32,20 @@ private Boolean status; @ApiModelProperty(value = "有限期") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate expireTime; @ApiModelProperty(value = "最大下单数量") @Min(value = 0, message = "不能为负") private Integer maxOrderNum; public Boolean getStatus() { if (LocalDate.now().isAfter(expireTime)) { return false; } return status; } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/dto/WhitelistAddDto.java
@@ -30,4 +30,14 @@ @Min(value = 0, message = "不能为负") private Integer maxOrderNum; @ApiModelProperty(value = "状态 0=冻结 1=正常", required = true) @NotNull(message = "状态不能为空") private Boolean status; public Boolean getStatus() { if (LocalDate.now().isAfter(expireTime)) { return false; } return status; } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/dto/WhitelistEditDto.java
@@ -31,6 +31,7 @@ @NotNull(message = "状态不能为空") private Boolean status; @ApiModelProperty(value = "有限期") @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate expireTime; @@ -38,4 +39,11 @@ @ApiModelProperty(value = "最大下单数量") @Min(value = 0, message = "不能为负") private Integer maxOrderNum; public Boolean getStatus() { if (LocalDate.now().isAfter(expireTime)) { return false; } return status; } } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/vo/XpTradingStrategyDetailVO.java
@@ -137,7 +137,7 @@ private String cityCode; @ApiModelProperty(value = "路线时效,过了需要重新获取,单位:秒") private Integer MaxStandingTiming; private Integer maxStandingTiming; @ApiModelProperty(value = "触发步行导航的最小距离") private Integer walkingGuideDistance;