xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/automaticPilot/PushOrderDto.java
@@ -1,6 +1,6 @@ package com.xiaopeng.api.dto.automaticPilot; import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperationType; import com.xiaopeng.api.vo.automaticPilot.protobuf.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/GeoPoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/ResponseMessage.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/StatusCode.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudCreateOrder/NavigationWaypoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudCreateOrder/RTTask.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudCreateOrder/TaskStatus.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudCreateOrder/TaskType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudCreateOrder/WaypointAction.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudCreateOrder/WaypointType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudOrderOperation/ActionType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudOrderOperation/OrderOperation.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudOrderOperation/OrderOperationType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudOrderOperation/OrderType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudOrderOperation/PointType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudOrderOperation/TargetPoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudOrderOperation/Waypoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/down/cloudPushNavigation/RestoreNavigationData.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/ResponseMessage.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/StatusCode.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationDeviationEvent/NavigationDeviationMessage.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationDeviationEvent/ResponseMessage.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationDeviationEvent/RtEventType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationDeviationEvent/StatusCode.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/GeoPoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/NaviPosition.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/NaviProgressInfo.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/NaviStatus.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/NavigationInfo.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/NavigationInfoUpdateEvent.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/OrderPhase.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/ResponseMessage.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/RtEventType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/StatusCode.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/navigationUpdateEvent/Waypoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/GeoPoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/OrderPhase.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/OrderStateChangeSource.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/OrderStatus.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/OrderStatusInfo.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/OrderStatusInfoEvent.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/ResponseMessage.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/RtEventType.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/RtTripInfo.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/RtTripInfoEvent.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/StatusCode.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/orderStateUpdateEvent/Waypoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/NaviPosition.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/NaviProgressInfo.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/NaviStatus.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/NavigationInfo.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/OrderPhase.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/OrderStateChangeSource.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/OrderStatus.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/OrderStatusInfo.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/RealtimePose.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/ResponseMessage.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/RtTripInfo.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/StatusCode.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/systemStatusXpu/Wgs.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/xpuNavigationRequest/GeoPoint.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/xpuNavigationRequest/OrderPhase.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/xpuNavigationRequest/RealtimePose.java
File was deleted xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/proto/up/xpuNavigationRequest/Wgs.java
File was deleted xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -19,9 +19,6 @@ import com.xiaopeng.api.model.order.XpOrder;import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.SystemEventType; import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudCreateOrder.RTTask; import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudCreateOrder.TaskStatus; import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudCreateOrder.TaskType; import com.xiaopeng.api.vo.automaticPilot.protobuf.*; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.api.vo.order.OrderTrajectoryVo; xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpClockInServiceImpl.java
@@ -226,23 +226,35 @@ @Override public PageInfo<ClockInStatisticsDto> getClockInStatistics(ClockInStatisticsVo query) { PageInfo<ClockInStatisticsDto> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<Long> appUserIds = new ArrayList<>(); List<Long> appUserIds1 = new ArrayList<>(); List<Long> appUserIds2 = new ArrayList<>(); List<Long> appUserIds3 = new ArrayList<>(); //处理查询条件 if(StringUtils.isNotEmpty(query.getName())){ R<List<XpOperationsUser>> listR = xpOperationUserClient.listByName(query.getName()); if(listR.getCode() == Constants.SUCCESS){ List<Long> collect = listR.getData().stream().map(XpOperationsUser::getId).collect(Collectors.toList()); appUserIds.addAll(collect); appUserIds1.addAll(collect); } appUserIds.add(0L); appUserIds1.add(0L); } if(null != query.getRoleId()){ R<List<XpOperationsRole>> roleByRoleId = xpOperationUserClient.getXpOperationsRoleByRoleId(query.getRoleId()); if(roleByRoleId.getCode() == Constants.SUCCESS){ List<Long> collect = roleByRoleId.getData().stream().map(XpOperationsRole::getOperationsUserId).collect(Collectors.toList()); appUserIds.addAll(collect); appUserIds2.addAll(collect); } appUserIds.add(0L); appUserIds2.add(0L); } if(StringUtils.isNotEmpty(query.getName()) && null != query.getRoleId()){ for (Long l : appUserIds1) { if(appUserIds2.contains(l)){ appUserIds3.add(l); } } }else{ appUserIds3.addAll(appUserIds1); appUserIds3.addAll(appUserIds2); } String startTime = ""; @@ -253,7 +265,7 @@ endTime = statisticDate.split(" - ")[1].split(" ")[0]; } //查询数据 List<ClockInStatisticsDto> clockInStatistics = this.baseMapper.getClockInStatistics(pageInfo, appUserIds, startTime, endTime); List<ClockInStatisticsDto> clockInStatistics = this.baseMapper.getClockInStatistics(pageInfo, appUserIds3, startTime, endTime); List<String> appUserIdList = clockInStatistics.stream().map(ClockInStatisticsDto::getAppUserId).collect(Collectors.toList()); List<Long> ids = appUserIdList.stream().map(Long::parseLong).collect(Collectors.toList()); List<XpOperationsUserWithRoleVO> data = xpOperationUserClient.listByIdsWithRole(ids).getData(); @@ -272,7 +284,8 @@ } Integer shouldClockInDays = clockInStatistic.getShouldClockInDays(); Integer clockInDays = clockInStatistic.getClockInDays(); clockInStatistic.setNotClockInDays(shouldClockInDays - clockInDays); Integer lateEarly = clockInStatistic.getLateEarly(); clockInStatistic.setNotClockInDays(shouldClockInDays - clockInDays - lateEarly); } pageInfo.setRecords(clockInStatistics); return pageInfo; @@ -287,23 +300,35 @@ @Override public void exportClockInStatistics(ClockInStatisticsVo query, HttpServletResponse response) { PageInfo<ClockInStatisticsDto> pageInfo = new PageInfo<>(0, 10000); List<Long> appUserIds = new ArrayList<>(); List<Long> appUserIds1 = new ArrayList<>(); List<Long> appUserIds2 = new ArrayList<>(); List<Long> appUserIds3 = new ArrayList<>(); //处理查询条件 if(StringUtils.isNotEmpty(query.getName())){ R<List<XpOperationsUser>> listR = xpOperationUserClient.listByName(query.getName()); if(listR.getCode() == Constants.SUCCESS){ List<Long> collect = listR.getData().stream().map(XpOperationsUser::getId).collect(Collectors.toList()); appUserIds.addAll(collect); appUserIds1.addAll(collect); } appUserIds.add(0L); appUserIds1.add(0L); } if(null != query.getRoleId()){ R<List<XpOperationsRole>> roleByRoleId = xpOperationUserClient.getXpOperationsRoleByRoleId(query.getRoleId()); if(roleByRoleId.getCode() == Constants.SUCCESS){ List<Long> collect = roleByRoleId.getData().stream().map(XpOperationsRole::getOperationsUserId).collect(Collectors.toList()); appUserIds.addAll(collect); appUserIds2.addAll(collect); } appUserIds.add(0L); appUserIds2.add(0L); } if(StringUtils.isNotEmpty(query.getName()) && null != query.getRoleId()){ for (Long l : appUserIds1) { if(appUserIds2.contains(l)){ appUserIds3.add(l); } } }else{ appUserIds3.addAll(appUserIds1); appUserIds3.addAll(appUserIds2); } String startTime = ""; String endTime = ""; @@ -313,7 +338,7 @@ endTime = statisticDate.split(" - ")[1].split(" ")[0]; } //查询数据 List<ClockInStatisticsDto> clockInStatistics = this.baseMapper.getClockInStatistics(pageInfo, appUserIds, startTime, endTime); List<ClockInStatisticsDto> clockInStatistics = this.baseMapper.getClockInStatistics(pageInfo, appUserIds3, startTime, endTime); List<String> appUserIdList = clockInStatistics.stream().map(ClockInStatisticsDto::getAppUserId).collect(Collectors.toList()); List<Long> ids = appUserIdList.stream().map(Long::parseLong).collect(Collectors.toList()); List<XpOperationsUserWithRoleVO> data = xpOperationUserClient.listByIdsWithRole(ids).getData(); @@ -331,7 +356,8 @@ } Integer shouldClockInDays = clockInStatistic.getShouldClockInDays(); Integer clockInDays = clockInStatistic.getClockInDays(); clockInStatistic.setNotClockInDays(shouldClockInDays - clockInDays); Integer lateEarly = clockInStatistic.getLateEarly(); clockInStatistic.setNotClockInDays(shouldClockInDays - clockInDays - lateEarly); } ExcelUtil<ClockInStatisticsDto> excel = new ExcelUtil<ClockInStatisticsDto>(ClockInStatisticsDto.class); xp-robotaxi-map-boot/pom.xml
@@ -237,6 +237,11 @@ <artifactId>aliyun-sdk-oss</artifactId> <version>3.18.5</version> </dependency> <dependency> <groupId>org.locationtech.jts</groupId> <artifactId>jts-core</artifactId> <version>1.19.0</version> <!-- 请使用最新版本 --> </dependency> </dependencies> <build> xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpElectronicFenceServiceImpl.java
@@ -31,6 +31,10 @@ import com.xiaopeng.map.utils.PolygonOverlapService; import lombok.extern.slf4j.Slf4j; import net.sourceforge.pinyin4j.PinyinHelper; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.LinearRing; import org.locationtech.jts.geom.Polygon; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoTemplate; @@ -40,6 +44,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.awt.geom.Point2D; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -166,7 +171,13 @@ //根据经纬度获取当前城市code XpElectronicFenceArea xpElectronicFenceArea = dto.getElectronicFenceAreas().get(0); String[] split = xpElectronicFenceArea.getFencePoints().split(",")[0].split("_"); Map<String, String> geocode = gdMapGeocodingUtil.geocode(split[0], split[1]); Coordinate[] coordinates = new Coordinate[split.length]; for (int i = 0; i < split.length; i++) { String[] split1 = split[i].split("_"); coordinates[i] = new Coordinate(Double.parseDouble(split1[0]), Double.parseDouble(split1[1])); } org.locationtech.jts.geom.Point point = calculateCentroid(coordinates); Map<String, String> geocode = gdMapGeocodingUtil.geocode(point.getX() + "", point.getY() + ""); if(null == geocode){ return R.fail("经纬度转换城市code失败"); } @@ -383,7 +394,13 @@ //根据经纬度获取当前城市code XpElectronicFenceArea electronicFenceArea = dto.getElectronicFenceAreas().get(0); String[] split = electronicFenceArea.getFencePoints().split(",")[0].split("_"); Map<String, String> geocode = gdMapGeocodingUtil.geocode(split[0], split[1]); Coordinate[] coordinates = new Coordinate[split.length]; for (int i = 0; i < split.length; i++) { String[] split1 = split[i].split("_"); coordinates[i] = new Coordinate(Double.parseDouble(split1[0]), Double.parseDouble(split1[1])); } org.locationtech.jts.geom.Point point = calculateCentroid(coordinates); Map<String, String> geocode = gdMapGeocodingUtil.geocode(point.getX() + "", point.getY() + ""); if(null == geocode){ return R.fail("经纬度转换城市code失败"); } @@ -696,4 +713,22 @@ } /** * 计算围栏中心点 * @param coordinates * @return */ private org.locationtech.jts.geom.Point calculateCentroid(Coordinate[] coordinates) { GeometryFactory factory = new GeometryFactory(); // 创建线性环 (LinearRing) LinearRing ring = factory.createLinearRing(coordinates); // 创建多边形 (Polygon) Polygon polygon = factory.createPolygon(ring); // 计算质心 (Centroid) org.locationtech.jts.geom.Point centroid = polygon.getCentroid(); System.out.println("中心点经度: " + centroid.getX()); System.out.println("中心点纬度: " + centroid.getY()); return centroid; } }