xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserController.java
@@ -84,7 +84,7 @@ public R<Boolean> appUserGetPayPwd(HttpServletRequest request) { // uid已通过拦截器otp校验,可以直接使用 String uid = request.getHeader("XP-Uid"); //调用其他接口获取 免密结果 //调用其他接口获取 免密结果 todo yyy Boolean is = true; return R.ok(is); } @@ -98,7 +98,7 @@ public R<?> appUserSetPayPwd(HttpServletRequest request) { // uid已通过拦截器otp校验,可以直接使用 String uid = request.getHeader("XP-Uid"); //调用其他接口设置免密结果 //调用其他接口设置免密结果 todo yyy return R.ok(); } //-----------------------------------------------app接口------------------------------------------ xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpPricingClientFallbackFactory.java
@@ -34,6 +34,12 @@ } @Override public R<Long> getPriceCountByVmid(String vehicleModelId) { log.error("获取数据失败", cause); return R.fail("获取数据失败"); } @Override public R<?> updateXpGeoQueryEntity(String orderId) { log.error("更新XpGeoQueryEntity失败", cause); return R.fail(); xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpSystemSettingClientFallbackFactory.java
@@ -2,6 +2,7 @@ import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient; import com.xiaopeng.api.model.operation.XpFeedbackType; import com.xiaopeng.api.model.operation.XpSystemSetting; import com.xiaopeng.common.core.domain.R; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.openfeign.FallbackFactory; @@ -36,6 +37,11 @@ log.error("获取反馈类型名称失败:{}", cause.getMessage()); return R.fail(null); } @Override public R<XpSystemSetting> getSystemSettingOne() { return R.fail("获取系统配置失败"); } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpPricingClient.java
@@ -25,6 +25,14 @@ R<XpPricing> getPricingByCid(@RequestParam(value = "cityId") Long cityId,@RequestParam(value = "vehicleModelId",required = false) String vehicleModelId); /** * 根据车型编码查询定价策略的数量 * @param vehicleModelId 车型id * @return */ @GetMapping("/logan/inner/v1/getPriceCountByVmid") R<Long> getPriceCountByVmid(@RequestParam(value = "vehicleModelId") String vehicleModelId) ; /** * 保存XpGeoQueryEntity */ @PostMapping("/logan/inner/updateXpGeoQueryEntity") xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpSystemSettingClient.java
@@ -2,8 +2,10 @@ import com.xiaopeng.api.factory.operation.XpSystemSettingClientFallbackFactory; import com.xiaopeng.api.model.operation.XpFeedbackType; import com.xiaopeng.api.model.operation.XpSystemSetting; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.dto.ServiceNameConstantsEnum; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -31,4 +33,9 @@ */ @GetMapping("/base/v1/getFeedbackTypeById/{id}") R<XpFeedbackType> getFeedbackTypeById(@PathVariable("id")Long id); @ApiOperation(value = "获取系统配置、热修复", tags = {"管理后台-系统"}) @GetMapping("/api/v1/systemSetting/getOne") R<XpSystemSetting> getSystemSettingOne(); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpVehicleModel.java
New file @@ -0,0 +1,39 @@ package com.xiaopeng.api.model.maintenance; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.xiaopeng.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("xp_vehicle_model") @ApiModel(value="XpVehicleModel 对象", description="车型") public class XpVehicleModel extends BaseModel { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.NONE) private Long id; @ApiModelProperty(value = "名称") @NotBlank(message = "名称不能为空") @Size(max = 50, message = "名称长度不能超过50个字符") private String name; @ApiModelProperty(value = "座位数") @NotBlank(message = "座位数不能为空") private String seat; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpSystemSetting.java
@@ -84,4 +84,18 @@ @TableField("temperature_unit") private String temperatureUnit; @ApiModelProperty(value = "行程中剩余里程") private Integer xczSyDistance; @ApiModelProperty(value = "行程中剩余时间") private Integer xczSyTime; @ApiModelProperty(value = "行程中修改目地次数") private Integer xczCaCount; @ApiModelProperty(value = "行程中豁免时速 km/h") private Integer xczHmSpeedPerHour; @ApiModelProperty(value = "行程中豁免持续时间 分钟") private Integer xczHmDuration; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/vehicleConvoy/XpVehicle.java
@@ -129,4 +129,8 @@ @TableField(exist = false) private Long fleetId; @ApiModelProperty(value = "车型名称") @TableField(exist = false) private String vehicleModelName; } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/XpPricingController.java
@@ -2,27 +2,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xiaopeng.api.dto.map.RouteAndFareDto; import com.xiaopeng.api.dto.map.RoutePreferenceSaveDto; import com.xiaopeng.api.dto.map.RouteStaleCheckDto; import com.xiaopeng.api.dto.map.SelectNavigationRouteDto; import com.xiaopeng.api.dto.order.OrderChangeDto; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.vo.operation.MultiRouteAndFareVo; import com.xiaopeng.api.vo.operation.RoutePreferenceItemVo; import com.xiaopeng.api.vo.operation.RouteStaleCheckVo; import com.xiaopeng.api.dto.operation.LonLatDto; import com.xiaopeng.api.model.operation.XpPricing; import com.xiaopeng.api.vo.HotFixInfoVo; import com.xiaopeng.api.vo.operation.MultiRouteAndFareVo; import com.xiaopeng.api.vo.operation.RouteAndFareVo; import com.xiaopeng.api.vo.operation.RoutePreferenceItemVo; import com.xiaopeng.api.vo.operation.RouteStaleCheckVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.controller.BaseController; import com.xiaopeng.common.redis.service.RedisService; import com.xiaopeng.itinerary.dto.XpOrderDto; import com.xiaopeng.itinerary.service.ActiveOrderService; 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.QueueStatusVo; import com.xiaopeng.itinerary.vo.SaveOrderVo; @@ -33,7 +29,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/BootCommonService.java
@@ -21,7 +21,7 @@ private XpVehicleClient xpVehicleClient; @Resource private XpOrderClient xpOrderClient; // @Override 测试 // @Override public XpOrder getXpOrder(Long orderId) { R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(orderId); xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/ActiveOrderServiceImpl.java
@@ -6,11 +6,9 @@ import com.xiaopeng.api.dto.order.OrderChangeDto; import com.xiaopeng.api.feignClient.map.XpMapClient; import com.xiaopeng.api.feignClient.operation.XpPointClient; import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient; import com.xiaopeng.api.feignClient.order.XpOrderClient; import com.xiaopeng.api.model.operation.XpElectronicFence; import com.xiaopeng.api.model.operation.XpElectronicFenceArea; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.model.operation.XpRoutePlan; import com.xiaopeng.api.model.operation.*; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.vo.operation.RouteOptionVo; import com.xiaopeng.api.vo.operation.RouteVo; @@ -49,6 +47,8 @@ private XpOpenCityMapper xpOpenCityMapper; @Resource private XpOrderClient xpOrderClient; @Resource private XpSystemSettingClient xpSystemSettingClient; @Resource private XpPricingService xpPricingService; @Resource @@ -109,7 +109,13 @@ if (xpOrderR.getCode() != R.SUCCESS || xpOrderR.getData() == null) { throw new ServiceException("订单不存在"); } Integer orderChange = 2;//todo yyy 从配置文件读取 修改订单目的地次数 //获取系统配置 XpSystemSetting systemSetting = xpSystemSettingClient.getSystemSettingOne().getData(); if(systemSetting == null){ throw new ServiceException("获取行程配置错误"); } Integer orderChange = systemSetting.getXczCaCount();// 从配置文件读取 修改订单目的地次数 XpOrder order = xpOrderR.getData(); //判断订单修改的次数 if(order.getOrderChange() > orderChange){ xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleModelController.java
New file @@ -0,0 +1,133 @@ package com.xiaopeng.maintenance.controller; import com.xiaopeng.api.feignClient.operation.XpPricingClient; import com.xiaopeng.api.model.maintenance.XpVehicleModel; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.model.query.XpVehicleModelPageQuery; import com.xiaopeng.maintenance.service.IXpVehicleModelService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; @Slf4j @Api(tags = "车辆检测") @RestController @RequestMapping("") public class XpVehicleModelController { @Autowired IXpVehicleModelService xpVehicleModelService; @Resource private XpPricingClient xpPricingClient; @ApiOperation(value = "列表", tags = "管理后台-列表") @PostMapping("/logan/inner/xpVehicleModel/pageList") public R<PageInfo<XpVehicleModel>> pageList(@RequestBody XpVehicleModelPageQuery query) { PageInfo<XpVehicleModel> pageInfo = xpVehicleModelService.pageList(query); return R.ok(pageInfo); } @ApiOperation(value = "根据ID查询", tags = "管理后台-根据ID查询") @GetMapping("/logan/inner/xpVehicleModel/getById") public R<XpVehicleModel> getById(@RequestParam String id) { if (id == null || id.isEmpty()) { return R.fail("参数错误"); } XpVehicleModel model = xpVehicleModelService.getById(id); if (model == null) { return R.fail("数据不存在"); } return R.ok(model); } @ApiOperation(value = "新增", tags = "管理后台-新增") @PostMapping("/logan/inner/xpVehicleModel/add") public R<String> add(@RequestBody @Valid XpVehicleModel dto) { // 根据名称查询车辆型号,验证是否已存在 List<XpVehicleModel> existingModel = xpVehicleModelService.queryByName(dto.getName()); if (existingModel != null) { return R.fail("车辆型号名称已存在"); } boolean b = xpVehicleModelService.save(dto); if(b){ return R.ok(); } return R.fail("保存失败"); } @ApiOperation(value = "编辑", tags = "管理后台-编辑") @PostMapping("/logan/inner/xpVehicleModel/edit") public R<String> edit(@RequestBody @Valid XpVehicleModel dto) { if(dto.getId() == null){ return R.fail("参数错误"); } XpVehicleModel model = xpVehicleModelService.getById(dto.getId()); if(model == null){ return R.fail("参数错误"); } if(!model.getName().equals(dto.getName())){ List<XpVehicleModel> existingModel = xpVehicleModelService.queryByName(dto.getName()); if (existingModel != null) { return R.fail("车辆型号名称已存在"); } } boolean b = xpVehicleModelService.updateById(dto); if(b){ return R.ok(); } return R.fail("保存失败"); } @ApiOperation(value = "删除", tags = "管理后台-删除") @DeleteMapping("/logan/inner/xpVehicleModel/deleteById") public R<String> deleteById(@RequestParam String id) { /* 1.判断车型是否被 车辆 xp_vehicle使用。 2.判断车型是否被 定价管理 xp_pricing使用。 */ int vehicleCount = xpVehicleModelService.getVehicleCount(id); if (vehicleCount > 0) { return R.fail("车辆型号已被车辆使用"); } R<Long> priceCountByVmidR = xpPricingClient.getPriceCountByVmid(id); if (priceCountByVmidR.getCode() != R.SUCCESS || priceCountByVmidR.getData() == null) { return R.fail("根据车型获取定价策略失败"); } if(priceCountByVmidR.getData()>0){ return R.fail("车辆型号已被定价策略使用"); } boolean b = xpVehicleModelService.logicalRemoveById(id); if(b){ return R.ok(); } return R.fail("删除失败"); } @ApiOperation(value = "列表查询", tags = "管理后台-列表查询") @PostMapping("/logan/inner/xpVehicleModel/list") public R<List<XpVehicleModel>> list() { List<XpVehicleModel> list = xpVehicleModelService.queryList(); return R.ok(list); } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpVehicleModelMapper.java
New file @@ -0,0 +1,32 @@ package com.xiaopeng.maintenance.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xiaopeng.api.model.maintenance.XpVehicleModel; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.model.query.XpVehicleModelPageQuery; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper public interface XpVehicleModelMapper extends BaseMapper<XpVehicleModel> { /** * 分页查询 * @param query * @param pageInfo * @return */ List<XpVehicleModel> pageList(@Param("query") XpVehicleModelPageQuery query, @Param("pageInfo") PageInfo<XpVehicleModel> pageInfo); /** * 根据型号id获取车辆数量 * @param id * @return */ int getVehicleCount(String id); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/query/XpVehicleModelPageQuery.java
New file @@ -0,0 +1,17 @@ package com.xiaopeng.maintenance.model.query; import com.xiaopeng.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "车型查询") public class XpVehicleModelPageQuery extends BasePage { @ApiModelProperty(value = "名称") private String name; @ApiModelProperty(value = "座位数") private String seat; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpVehicleModelService.java
New file @@ -0,0 +1,22 @@ package com.xiaopeng.maintenance.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.api.model.maintenance.XpVehicleModel; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.model.query.XpVehicleModelPageQuery; import java.util.List; public interface IXpVehicleModelService extends IService<XpVehicleModel> { PageInfo<XpVehicleModel> pageList(XpVehicleModelPageQuery query); List<XpVehicleModel> queryByName(String name); List<XpVehicleModel> queryList(); boolean logicalRemoveById(String id); int getVehicleCount(String id); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpVehicleModelServiceImpl.java
New file @@ -0,0 +1,65 @@ package com.xiaopeng.maintenance.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.model.maintenance.XpVehicleModel; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.mapper.XpVehicleModelMapper; import com.xiaopeng.maintenance.model.query.XpVehicleModelPageQuery; import com.xiaopeng.maintenance.service.IXpVehicleModelService; import org.springframework.stereotype.Service; import java.util.List; @Service public class XpVehicleModelServiceImpl extends ServiceImpl<XpVehicleModelMapper, XpVehicleModel> implements IXpVehicleModelService { @Override public PageInfo<XpVehicleModel> pageList(XpVehicleModelPageQuery query) { PageInfo<XpVehicleModel> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<XpVehicleModel> list = this.baseMapper.pageList(query, pageInfo); pageInfo.setRecords(list); return pageInfo; } @Override public List<XpVehicleModel> queryByName(String name) { return this.list(new LambdaQueryWrapper<XpVehicleModel>() .eq(XpVehicleModel::getDeleted, 0) .like(XpVehicleModel::getName, name)); } /** * 查询未删除的数据 * @return */ @Override public List<XpVehicleModel> queryList() { return this.list(new LambdaQueryWrapper<XpVehicleModel>().eq(XpVehicleModel::getDeleted, 0)); } @Override public boolean logicalRemoveById(String id) { XpVehicleModel entity = this.getById(id); if (entity != null) { entity.setDeleted(true); return this.updateById(entity); } return false; } /** * 获取指定车型ID关联的车辆数量 * * @param id 车型ID * @return 车辆数量 */ @Override public int getVehicleCount(String id){ return this.baseMapper.getVehicleCount(id); } } xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpVehicleModelMapper.xml
New file @@ -0,0 +1,28 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xiaopeng.maintenance.mapper.XpVehicleModelMapper"> <select id="pageList" resultType="com.xiaopeng.api.model.maintenance.XpVehicleModel"> select id, name, seat, is_deleted, create_time, update_time, create_by, update_by from xp_vehicle_model where is_deleted = 0 order by create_time desc </select> <select id="getVehicleCount" resultType="java.lang.Integer"> select count(a.id) from xp_vehicle a where a.is_deleted = 0 and a.vehicle_model = #{id} </select> </mapper> xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPricingController.java
@@ -92,6 +92,20 @@ return R.ok(pricing); } /** * 根据车型编码查询定价策略的数量 * @param vehicleModelId 车型id * @return */ @GetMapping("/logan/inner/v1/getPriceCountByVmid") public R<Long> getPriceCountByVmid(@RequestParam(value = "vehicleModelId") String vehicleModelId) { LambdaQueryWrapper<XpPricing> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(XpPricing::getDeleted, 0); queryWrapper.eq(XpPricing::getVehicleModel, vehicleModelId); long count = xpPricingService.count(queryWrapper); return R.ok(count); } @GetMapping("/base/v1/mini-program/pricing/rules/{openCityId}") xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpSystemSettingController.java
@@ -101,6 +101,11 @@ return R.ok(new CustomerServicePhoneVo(xpSystemSettingService.getCustomerServicePhone())); } } @ApiOperation(value = "获取系统配置、热修复", tags = {"管理后台-系统"}) @GetMapping("/api/v1/systemSetting/getOne") public R<XpSystemSetting> getSystemSettingOne(){ return R.ok(xpSystemSettingService.getSystemSettingOne()); } @ApiOperation(value = "获取系统配置、热修复", tags = {"管理后台-系统"}) @GetMapping("/api/v1/systemSetting") xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/XpSystemSettingService.java
@@ -39,6 +39,8 @@ */ Integer getOrderFinishTime(); XpSystemSetting getSystemSettingOne(); /** * 保存系统配置、热修复 * @param xpSystemSetting xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpCruisePlanServiceImpl.java
@@ -239,7 +239,7 @@ if (vehicle != null) { vo.setVehicleCode(vehicle.getVehicleCode()); vo.setPlateNumber(vehicle.getPlateNumber()); vo.setVehicleModel(vehicle.getVehicleModel()); vo.setVehicleModel(vehicle.getVehicleModelName()); } Long fleetId = vehicleFleetIdMap.get(planVehicle.getVehicleId()); if (fleetId != null) { xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
@@ -9,9 +9,7 @@ import com.xiaopeng.api.model.operation.XpSystemSetting; import com.xiaopeng.operation.service.XpSystemSettingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.cache.RedisCache; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Objects; @@ -63,6 +61,30 @@ return 15; } @Override public XpSystemSetting getSystemSettingOne(){ LambdaQueryWrapper<XpSystemSetting> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(XpSystemSetting::getDeleted, false); XpSystemSetting obj = super.getOne(queryWrapper, false); if(obj.getXczCaCount() == null){ obj.setXczCaCount(2); } if(obj.getXczSyDistance() == null){ obj.setXczSyDistance(800); } if(obj.getXczSyTime() == null){ obj.setXczSyTime(5); } if(obj.getXczHmSpeedPerHour() == null){ obj.setXczSyDistance(3); } if(obj.getXczHmDuration() == null){ obj.setXczHmDuration(3); } return obj; } @Override public void saveSystemSetting(XpSystemSetting xpSystemSetting) { xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpTestPlanServiceImpl.java
@@ -269,7 +269,7 @@ if (vehicle != null) { vo.setVehicleCode(vehicle.getVehicleCode()); vo.setPlateNumber(vehicle.getPlateNumber()); vo.setVehicleModel(vehicle.getVehicleModel()); vo.setVehicleModel(vehicle.getVehicleModelName()); } Long fleetId = vehicleFleetIdMap.get(planVehicle.getVehicleId()); if (fleetId != null) { xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/ActiveOrderController.java
@@ -103,7 +103,7 @@ /** * 分享行程接口3-订单信息 */ @ApiOperation(value = "分享行程接口3-订单查询实时轨迹路线") @ApiOperation(value = "分享行程接口3-订单信息查询") @GetMapping("/base/v1/mini-program/orderActive/share/orderInfo") @XpClientCheck(checkToken = false, checkOtpToken = false) public R<XpOrderDetailVO> shareOrderInfo(@RequestParam String orderId, HttpServletRequest request) { @@ -136,7 +136,7 @@ XpVehicle vehicle = xpVehicleR.getData(); xpOrderDetailVO.setVehicleId(vehicle.getId()); xpOrderDetailVO.setVehicleVin(vehicle.getVehicleVin()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModel()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModelName()); xpOrderDetailVO.setVehicleColor(vehicle.getVehicleColor()); xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber()); xpOrderDetailVO.setVehiclePictures(vehicle.getVehiclePictures()); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -318,7 +318,7 @@ XpVehicle vehicle = vehicleMap.get(order.getVehicleId()); if (Objects.nonNull(vehicle)) { vo.setPlateNumber(vehicle.getPlateNumber()); vo.setVehicleModel(vehicle.getVehicleModel()); vo.setVehicleModel(vehicle.getVehicleModelName()); } } @@ -607,7 +607,7 @@ if (Objects.nonNull(order.getVehicleId()) && vehicleMap.containsKey(order.getVehicleId())) { XpVehicle vehicle = vehicleMap.get(order.getVehicleId()); vo.setPlateNumber(vehicle.getPlateNumber()); vo.setVehicleModel(vehicle.getVehicleModel()); vo.setVehicleModel(vehicle.getVehicleModelName()); } // 车队信息 @@ -3465,7 +3465,7 @@ R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId()); XpVehicle vehicle = xpVehicleR.getData(); xpOrderDetailVO.setVehicleVin(vehicle.getVehicleVin()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModel()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModelName()); xpOrderDetailVO.setVehicleColor(vehicle.getVehicleColor()); xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber()); xpOrderDetailVO.setVehiclePictures(vehicle.getVehiclePictures()); @@ -3493,7 +3493,7 @@ R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId()); XpVehicle vehicle = xpVehicleR.getData(); xpOrderDetailVO.setVehicleVin(vehicle.getVehicleVin()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModel()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModelName()); xpOrderDetailVO.setVehicleColor(vehicle.getVehicleColor()); xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber()); @@ -3513,21 +3513,28 @@ */ private boolean isCancelShow(XpOrder xpOrder,String vehicleVin) { boolean isCancel = false; //获取系统配置 XpSystemSetting systemSetting = xpSystemSettingClient.getSystemSettingOne().getData(); if(systemSetting == null){ throw new ServiceException("获取行程配置错误"); } //获取配置文件 int sylc = 800;//单位米 todo yyy 需要读取后台配置文件 int sysj = 5;//单位分钟 todo yyy 需要读取后台配置文件 int sylc = systemSetting.getXczSyDistance(); // 行程中剩余里程单位米 需要读取后台配置文件 int sysj = systemSetting.getXczSyTime();//行程中剩余时间 单位分钟 需要读取后台配置文件 // 减少3分钟 获取3分账内的 行程数据 long minute =3;//todo yyy 需要读取后台配置文件 Integer xczSpeedPerHour = systemSetting.getXczHmSpeedPerHour();//行程中豁免时速 km/h Integer xczHmDuration = systemSetting.getXczHmDuration();//行程中豁免持续时间 分钟 需要读取后台配置文件 List<OrderTrajectory> orderTrajectories = queryOrderTrajectories(xpOrder.getId()); if(!orderTrajectories.isEmpty()){// 减少3分钟 获取3分账内的 行程数据 //3千米/小时 转换成分钟 50米/分钟 BigDecimal suduDefault = new BigDecimal("3");//3千米/小时 BigDecimal suduDefault = new BigDecimal(xczSpeedPerHour);//3千米/小时 BigDecimal suduDefault1 = suduDefault.multiply(BigDecimal.valueOf(1000)) ; BigDecimal suduDefaultNew =suduDefault1.divide(BigDecimal.valueOf(60),2,RoundingMode.HALF_EVEN); LocalDateTime minutesBefore = LocalDateTime.now().minusMinutes(minute); LocalDateTime minutesBefore = LocalDateTime.now().minusMinutes(xczHmDuration); long milliseconds = DateUtils.getMilliseconds(minutesBefore); List<OrderTrajectory> orderTrajectoriesNew = new ArrayList<>(); for (OrderTrajectory orderTrajectory : orderTrajectories) { @@ -3540,7 +3547,7 @@ */ //计算行驶总距离和时长 Double reduce = orderTrajectoriesNew.stream().map(OrderTrajectory::getDistance).reduce(0.0, Double::sum); BigDecimal xcsudu = new BigDecimal(reduce).divide(new BigDecimal(minute),2, RoundingMode.HALF_EVEN);//米/分钟 BigDecimal xcsudu = new BigDecimal(reduce).divide(new BigDecimal(xczHmDuration),2, RoundingMode.HALF_EVEN);//米/分钟 //特殊豁免:若系统检测到车辆在当前坐标时速 < 3km/h 且持续时间 > 3分钟(后台配置)(判定为极度拥堵或异常停滞),此时解除限制,允许用户修改目的地或新增途径点以寻找更近的下车位置。 if(xcsudu.compareTo(suduDefaultNew)<0){ xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
@@ -407,7 +407,7 @@ XpVehicle vehicle = vehicleMap.get(order.getVehicleId()); if (Objects.nonNull(vehicle)) { vo.setPlateNumber(vehicle.getPlateNumber()); vo.setVehicleModel(vehicle.getVehicleModel()); vo.setVehicleModel(vehicle.getVehicleModelName()); } } xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -459,7 +459,7 @@ vo.setVehicleCode(vehicle.getVehicleCode()); vo.setPlateNumber(vehicle.getPlateNumber()); vo.setVehicleColor(vehicle.getVehicleColor()); vo.setVehicleModel(vehicle.getVehicleModel()); vo.setVehicleModel(vehicle.getVehicleModelName()); vo.setOperatingStatus(vehicle.getOperatingStatus()); vo.setVehicleType(vehicle.getVehicleType()); vo.setStatus(vehicle.getStatus()); xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml
@@ -12,6 +12,12 @@ is_deleted, create_time, update_time, create_by, update_by </sql> <select id="selectById" resultType="com.xiaopeng.api.model.vehicleConvoy.XpVehicle"> SELECT a.*,b.name as vehicleModelName FROM xp_vehicle a left join xp_vehicle_model b on a.vehicle_model = b.id WHERE a.id = #{id} </select> <!-- 统计在线车辆数(operatingStatus=1 运营中) --> <select id="countOnlineVehicles" resultType="java.lang.Long"> SELECT COUNT(*)