From 112dcf66d6b9e95e7b8d6ae0e08eaf0104204052 Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期五, 08 五月 2026 15:41:34 +0800
Subject: [PATCH] 1.修改bug 路线,用户路线偏好,改派等
---
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java | 67 +++++++++++++++++++++++++++------
1 files changed, 55 insertions(+), 12 deletions(-)
diff --git a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
index 5cd2753..40847e7 100644
--- a/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
+++ b/xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -3,6 +3,8 @@
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.xiaopeng.api.dto.account.XpOperationsUserPositionDTO;
@@ -14,6 +16,8 @@
import com.xiaopeng.api.model.maintenance.XpErrorType;
import com.xiaopeng.api.model.maintenance.XpTask;
import com.xiaopeng.api.model.maintenance.XpTaskRule;
+import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
+import com.xiaopeng.api.model.vehicleConvoy.XpFleetOperations;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.query.account.OptionalUsersPageListQuery;
import com.xiaopeng.api.vo.XpTaskVO;
@@ -21,6 +25,7 @@
import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.evi.oss.service.AliOssService;
@@ -65,6 +70,7 @@
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;
+import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -370,27 +376,64 @@
Query query = Query.query(new Criteria().andOperator(
Criteria.where("location").withinSphere(circle)
));
+ // 增加时间查询条件:最近1分钟更新的数据
+ int time = 10*60*1000;
+ Long oneMinuteAgo = System.currentTimeMillis() - time;
+ query.addCriteria(Criteria.where("updateTime").gte(oneMinuteAgo));
+
List<XpOperationsUserPositionDTO> vehiclePositions = mongoTemplate.find(query, XpOperationsUserPositionDTO.class);
- Map<Long, Double> disMap = vehiclePositions.stream().collect(Collectors.toMap(XpOperationsUserPositionDTO::getId, XpOperationsUserPositionDTO::getDistance));
-
- // 查询车队下面面所有人员id和up求交集
- List<Long> data = xpFleetClient.idsByFleetName(query1.getFleet()).getData();
-
- List<Long> ids = vehiclePositions.stream().map(XpOperationsUserPositionDTO::getId)
- .filter(e -> data == null || data.isEmpty() || data.contains(e))
- .collect(Collectors.toList());
-
+ if(CollUtil.isEmpty(vehiclePositions)){
+ throw new ServiceException("未查询到运维人员");
+ }
+ List<Long> data = null ;
+ if(StrUtil.isNotBlank(query1.getFleet())){
+ // 查询车队下面面所有人员id和up求交集
+ data = xpFleetClient.idsByFleetName(query1.getFleet()).getData();
+ }
+ //vehiclePositions根据距离升序排序
+ vehiclePositions.sort(Comparator.comparing(XpOperationsUserPositionDTO::getDistance));
+ //获取运维人员id
+ List<Long> ids = new ArrayList<>();
+ Map<Long, Double> disMap = new HashMap<>();
+ if ( CollUtil.isNotEmpty(data) ) {
+ for (XpOperationsUserPositionDTO vehiclePosition : vehiclePositions) {
+ if(data.contains(vehiclePosition.getId())){
+ ids.add(vehiclePosition.getId());
+ disMap.put(vehiclePosition.getId(), vehiclePosition.getDistance());
+ }
+ }
+ }else{
+ for (XpOperationsUserPositionDTO vehiclePosition : vehiclePositions) {
+ ids.add(vehiclePosition.getId());
+ disMap.put(vehiclePosition.getId(), vehiclePosition.getDistance());
+ }
+ }
query1.setIds(ids);
+ query1.setOrderByField(1);
PageInfo<XpOperationsUserWithRoleVO> ret = operationUserClient.listByQueryIds(query1).getData();
// 设置距离,然后排序
-
if (ret == null || ret.getRecords() == null || ret.getRecords().isEmpty()) {
return R.ok();
}
+ if(CollUtil.isNotEmpty(ids)){
+ R<List<XpFleetOperations>> findListByUserIdsR = xpFleetOperationsClient.findListByUserIds(ids);
+ if(findListByUserIdsR.getCode() != R.SUCCESS || findListByUserIdsR.getData().isEmpty()){
+ throw new ServiceException("未查询该车队");
+ }
+ // 将查询结果转换为 Map,key 为 userId,value 为 XpFleetOperations 对象
+ Map<Long, XpFleetOperations> fleetOperationsMap = findListByUserIdsR.getData().stream()
+ .collect(Collectors.toMap(XpFleetOperations::getOperationsUserId, Function.identity()));
+
+ for (XpOperationsUserWithRoleVO record : ret.getRecords()) {
+ if(fleetOperationsMap.containsKey(record.getId())){
+ record.setFleetName(fleetOperationsMap.get(record.getId()).getFleetName());
+ }
+ }
+ }
ret.getRecords().forEach(e -> e.setDis(disMap.get(e.getId())));
- List<XpOperationsUserWithRoleVO> sorted = ret.getRecords().stream().sorted(Comparator.comparing(XpOperationsUserWithRoleVO::getDis)).collect(Collectors.toList());
- ret.setRecords(sorted);
+// List<XpOperationsUserWithRoleVO> sorted = ret.getRecords().stream().sorted(Comparator.comparing(XpOperationsUserWithRoleVO::getDis)).collect(Collectors.toList());
+// ret.setRecords(sorted);
return R.ok(ret);
}
--
Gitblit v1.7.1