xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -249,5 +249,16 @@ xpOperationsUserService.importOperationsUser(file); return R.ok(); } /** * 根据手机号模糊查询用户(内部接口) * * @param phoneNumber 手机号 * @return 用户信息列表 */ @ApiOperation(value = "根据手机号模糊查询用户及角色信息", tags = {"内部接口"}) @PostMapping("/inner/xpOperationsUser/getByPhoneNumber") public R<List<XpOperationsUser>> getByPhoneNumber(@RequestParam String phoneNumber) { List<XpOperationsUser> result = xpOperationsUserService.getByPhoneNumber(phoneNumber); return R.ok(result); } } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpOperationsUserService.java
@@ -121,4 +121,11 @@ * @return */ List<XpOperationsUserWithRoleVO> selectUsersWithRoleByIds(List<Long> ids); /** *根据手机号模糊查询用户 * @param phoneNumber * @return */ List<XpOperationsUser> getByPhoneNumber(String phoneNumber); } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
@@ -362,9 +362,9 @@ xpOperationsUser.setNickName(exportOperationsUserVo.getNickName()); xpOperationsUser.setUniqueNumber(exportOperationsUserVo.getUniqueNumber()); xpOperationsUser.setAvatar(exportOperationsUserVo.getAvatar()); boolean isPhone = PhoneUtil.isPhone(exportOperationsUserVo.getPhoneNumber()); boolean isPhone = PhoneUtil.isMobile(exportOperationsUserVo.getPhoneNumber()); if (!isPhone) { throw new ServiceException("以下帐号格式不正确:"+exportOperationsUserVo.getPhoneNumber(), I18nKeyConstant.ACCOUNT_FORMAT_ERROR); throw new ServiceException("以下帐号格式不正确:", I18nKeyConstant.ACCOUNT_FORMAT_ERROR,new Object[]{exportOperationsUserVo.getPhoneNumber()}); } xpOperationsUser.setPhoneNumber(exportOperationsUserVo.getPhoneNumber()); xpOperationsUser.setPassword(SecurityUtils.encryptPassword("a123456")); @@ -479,4 +479,12 @@ return vo; }).collect(Collectors.toList()); } @Override public List<XpOperationsUser> getByPhoneNumber(String phoneNumber) { if (StringUtils.isBlank(phoneNumber)) { return Collections.emptyList(); } return lambdaQuery().eq(XpOperationsUser::getPhoneNumber, phoneNumber).list(); } } xp-robotaxi-account-boot/src/main/resources/mapper/account/XpOperationsRoleMapper.xml
@@ -27,7 +27,7 @@ SELECT u.*, r.id AS roleId, r.role_name AS roleName GROUP_CONCAT(r.role_name) AS roleName FROM xp_operations_user u LEFT JOIN xp_operations_role ur ON u.id = ur.operations_user_id LEFT JOIN sys_role r ON ur.role_id = r.id AND r.is_deleted = 0 @@ -43,6 +43,7 @@ AND r.id = #{roleId} </if> </where> GROUP BY u.id </select> <select id="selectSysUserRoleByOperationUserId" resultType="com.xiaopeng.api.model.account.XpOperationsRole"> xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/account/XpOperationUserClientFallbackFactory.java
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Collections; import java.util.List; @Slf4j @@ -69,6 +70,12 @@ log.error("根据角色ID列表获取运维人员ID列表失败,原因:{}", cause.getMessage()); return R.fail("根据角色ID列表获取运维人员ID列表失败:" + cause.getMessage()); } @Override public R<List<XpOperationsUser>> getByPhoneNumber(String phoneNumber) { log.error("根据手机号模糊查询用户失败,原因:{}", cause.getMessage()); return R.ok(Collections.emptyList()); } }; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpOperationUserClient.java
@@ -7,6 +7,7 @@ import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO; 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.PostMapping; @@ -86,4 +87,13 @@ */ @PostMapping("/inner/xp-operations-role/getXpOperationsRoleByRoleIds") R<List<XpOperationsRole>> getXpOperationsRoleByRoleIds(@RequestBody List<Long> roleIds); /** * 根据手机号模糊查询用户(内部接口) * * @param phoneNumber 手机号 * @return 用户信息列表 */ @PostMapping("/inner/xpOperationsUser/getByPhoneNumber") public R<List<XpOperationsUser>> getByPhoneNumber(@RequestParam String phoneNumber); } xp-robotaxi-automatic-pilot-boot/pom.xml
@@ -143,16 +143,6 @@ <build> <finalName>${project.artifactId}</finalName> <plugins> <!-- <plugin>--> <!-- <groupId>org.apache.maven.plugins</groupId>--> <!-- <artifactId>maven-surefire-plugin</artifactId>--> <!-- <configuration>--> <!-- <argLine>--> <!-- --add-opens java.base/java.lang=ALL-UNNAMED--> <!-- --add-opens java.base/java.util=ALL-UNNAMED--> <!-- </argLine>--> <!-- </configuration>--> <!-- </plugin>--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -837,7 +837,6 @@ //下车完成 buildPushOrderStatus(orderId, OrderStatusEnum.APPROVAL_REJECTION, sequence); xpOrderClient.updateOrderStatus(Long.parseLong(orderId.contains("XU") ? orderId.substring(2) : orderId), OrderStatusEnum.APPROVAL_REJECTION.getCode()); // 下发巡游任务 R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(Long.parseLong(orderId)); if(xpOrderR.getCode()==200){ xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java
@@ -15,6 +15,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -42,7 +43,7 @@ */ @ApiOperation(value = "车辆运维-车辆运维-车辆送修", tags = {"运维APP-车辆管理"}) @PostMapping("/api/v1/vehicleRepair/saveRepair") public R<String> saveRepair(@RequestBody XpVehicleRepairStartDTO dto) { public R<String> saveRepair(@Validated @RequestBody XpVehicleRepairStartDTO dto) { Long id = tokenService.getLoginOperationUser().getId(); xpVehicleRepairService.saveRepair(dto,id); @@ -53,7 +54,7 @@ */ @ApiOperation(value = "车辆运维-车辆运维-车辆取回", tags = {"运维APP-车辆管理"}) @PostMapping("/api/v1/vehicleRepair/saveReturnRepair") public R<String> saveReturnRepair(@RequestBody XpVehicleRepairReturnDTO dto) { public R<String> saveReturnRepair(@Validated @RequestBody XpVehicleRepairReturnDTO dto) { Long id = tokenService.getLoginOperationUser().getId(); xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpVehicleRepairReturnDTO.java
@@ -3,6 +3,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.hibernate.validator.constraints.Length; import java.io.Serializable; @@ -13,6 +14,7 @@ @ApiModelProperty(value = "维修id") private Long id; @Length(max = 200, message = "维修费用长度不能超过200字") @ApiModelProperty(value = "维修费用") private Double repairMoney; xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/XpVehicleRepairStartDTO.java
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.hibernate.validator.constraints.Length; import java.io.Serializable; import java.time.LocalDate; @@ -23,6 +24,7 @@ @ApiModelProperty(value = "结束时间") private LocalDate endTime; @Length(max = 600, message = "维修原因长度不能超过600字") @ApiModelProperty(value = "维修原因") private String repairReason; xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
@@ -254,10 +254,10 @@ if(routePlanRule!=null){ params.put("strategy", routePlanRule); } log.info("高德地图接口:{}", url); log.info("高德地图参数:{}", params); String post = HttpUtils.post(url, JSON.toJSONString(params)); System.out.println("高德地图返回结果:"+ post); // String forObject = restTemplate.getForObject(url, String.class, params); log.info("高德地图返回结果:"+ post); JSONObject jsonObject = JSON.parseObject(post); String data = jsonObject.getString("data"); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
@@ -208,7 +208,7 @@ if (!StringUtils.hasLength(bindAccount)) { errors.add(messageSource.getMessage(I18nKeyConstant.INVITATION_IMPORT_ACCOUNT_EMPTY, new Object[]{rowNum}, I18nKeyConstant.INVITATION_IMPORT_ACCOUNT_EMPTY, LocaleContextHolder.getLocale())); } else if (!PhoneUtil.isPhone(bindAccount)) { } else if (!PhoneUtil.isMobile(bindAccount)) { errors.add(messageSource.getMessage(I18nKeyConstant.INVITATION_IMPORT_ACCOUNT_INVALID, new Object[]{rowNum, bindAccount}, I18nKeyConstant.INVITATION_IMPORT_ACCOUNT_INVALID, LocaleContextHolder.getLocale())); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpWhitelistServiceImpl.java
@@ -227,7 +227,7 @@ @Override public R editWhitelist(XpWhitelist dto, SysUser sysUser) { if (!PhoneUtil.isPhone(dto.getAccount())) { if (!PhoneUtil.isMobile(dto.getAccount())) { throw new ServiceException("以下帐号格式不正确:", I18nKeyConstant.ACCOUNT_FORMAT_ERROR, new Object[]{dto.getAccount()}); } XpWhitelist old = this.lambdaQuery() xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -1476,19 +1476,19 @@ throw new ServiceException("当前城市未配置定价规则", I18nKeyConstant.ORDER_PRICING_NOT_EXISTS); } // 费用 // // 查询订单轨迹 // List<OrderTrajectory> trajectories = mongoTemplate.find( // new Query(Criteria.where("orderId").is(orderId)) // .with(Sort.by(Sort.Direction.ASC, "locatetime")), // OrderTrajectory.class // ); // List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>(); // for (OrderTrajectory trajectory : trajectories) { // TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime()); // gpsPoints.add(point); // } // 补充临时轨迹数据 List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime())); // 查询订单轨迹 List<OrderTrajectory> trajectories = mongoTemplate.find( new Query(Criteria.where("orderId").is(orderId)) .with(Sort.by(Sort.Direction.ASC, "locatetime")), OrderTrajectory.class ); List<TaxiPricingDemoService.GpsPoint> gpsPoints = new ArrayList<>(); for (OrderTrajectory trajectory : trajectories) { TaxiPricingDemoService.GpsPoint point = new TaxiPricingDemoService.GpsPoint(trajectory.getDistance(), trajectory.getLocatetime()); gpsPoints.add(point); } // 补充临时轨迹数据 // List<TaxiPricingDemoService.GpsPoint> gpsPoints = TaxiPricingDemoService.createMockGpsPoints(DateUtils.toDate(order.getCreateTime())); TaxiPricingDemoService.PricingConfig config = new TaxiPricingDemoService.PricingConfig(); @@ -1529,11 +1529,26 @@ paramNum5 = jsonObject.getDouble("num5"); break; } } //一口价 if(pricing.getPricingType() == 2){ JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson()); String num1 = "00:00"; String num2 = "23:59"; String num3 = basicPricingJson.getString("num1"); String num4 = basicPricingJson.getString("num2"); String num5 = basicPricingJson.getString("num3"); String num6 = basicPricingJson.getString("num4"); String num7 = basicPricingJson.getString("num5"); config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7))); paramNum4 = basicPricingJson.getDouble("num2"); paramNum5 = basicPricingJson.getDouble("num3"); } //动态计费 if (pricing.getPricingType() == 1) { JSONObject basicPricingJson = JSONObject.parseObject(pricing.getBasicPricingJson()); config.peaks.add(new TaxiPricingDemoService.PricingRule("高峰期", basicPricingJson.getString("num21").split(" - ")[0], basicPricingJson.getString("num21").split(" - ")[1], Double.parseDouble(basicPricingJson.getString("num23")),paramNum4, paramNum5, Double.parseDouble(basicPricingJson.getString("num24")), Double.parseDouble(basicPricingJson.getString("num25")))); @@ -1551,17 +1566,14 @@ TaxiPricingDemoService.TaxiPricingService service = new TaxiPricingDemoService.TaxiPricingService(); Integer holidayToday = holidayUtil.isHolidayToday(); Map<String, BigDecimal> bill = service.calculateOrderPrice(DateUtils.toDate(order.getBoardingTime()), order.getMileageKilometers(), gpsPoints, config,holidayToday); System.err.println("======= 订单计费账单 ======="); bill.forEach((detail, price) -> System.err.println(detail + ": " + price + " 元")); log.info("======= 订单计费账单 ======="); bill.forEach((detail, price) -> log.info(detail + ": " + price + " 元")); BigDecimal totalAmount = bill.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add); System.err.println("--------------------------"); System.err.println("应付总额: " + totalAmount + " 元"); log.info("--------------------------"); log.info("应付总额: " + totalAmount + " 元"); BigDecimal startMoney = BigDecimal.ZERO; // 默认费率1 double priceRate = 1; @@ -1789,8 +1801,7 @@ if (vehicle != null) { // 修改车辆状态 vehicle.setState(0); //发送巡游订单 addCruiseMission(vehicle, order); // // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作 // R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail(); xp-robotaxi-push-message-boot/pom.xml
@@ -108,11 +108,11 @@ </exclusion> </exclusions> </dependency> <!-- <dependency>--> <!-- <groupId>org.apache.shardingsphere</groupId>--> <!-- <artifactId>shardingsphere-transaction-base-seata-at</artifactId>--> <!-- <version>5.2.1</version>--> <!-- </dependency>--> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-transaction-base-seata-at</artifactId> <version>5.2.1</version> </dependency> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -313,10 +313,24 @@ @Override public R<PageInfo<FleetPageVO>> pageList(FleetPageQuery query) { // 1. 构建查询条件 List<Long> operationUserIds = Collections.emptyList(); if (StringUtils.isNotBlank(query.getPhoneNumber())) { List<XpOperationsUser> data = xpOperationUserClient.getByPhoneNumber(query.getPhoneNumber()).getData(); if (CollUtil.isEmpty(data)) { PageInfo<FleetPageVO> emptyPageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); emptyPageInfo.setRecords(new ArrayList<>()); emptyPageInfo.setTotal(0L); return R.ok(emptyPageInfo); } operationUserIds = data.stream().map(XpOperationsUser::getId).collect(Collectors.toList()); } LambdaQueryWrapper<XpFleet> wrapper = new LambdaQueryWrapper<>(); if (StringUtils.isNotBlank(query.getFleetName())) { wrapper.like(XpFleet::getFleetName, query.getFleetName()); } if (CollUtil.isNotEmpty(operationUserIds)) { wrapper.in(XpFleet::getOperationsUserId, operationUserIds); } wrapper.orderByDesc(XpFleet::getCreateTime); // 2. 执行分页查询