xuhy
2026-04-24 3c88eb9bd41ea647663995fc0f3e62778f8434a0
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -56,9 +56,7 @@
import javax.annotation.Resource;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -331,16 +329,21 @@
        List<XpOperationsUserPositionDTO> up = mongoTemplate.find(q, XpOperationsUserPositionDTO.class);
        Map<Long, Double> disMap = up.stream().collect(Collectors.toMap(XpOperationsUserPositionDTO::getId, XpOperationsUserPositionDTO::getDistance));
        // 查询车队下面面所有人员id和up求交集
        List<Long> data = xpFleetClient.idsByFleetName(query.getFleet()).getData();
        List<Long> ids = up.stream().map(XpOperationsUserPositionDTO::getId)
                .filter(e -> data!=null && !data.isEmpty() &&!data.contains(e))
                .filter(e -> data == null || data.isEmpty() || data.contains(e))
                .collect(Collectors.toList());
        query.setIds(ids);
        PageInfo<XpOperationsUserWithRoleVO> ret = operationUserClient.listByQueryIds(query).getData();
        // 设置距离,然后排序
        ret.getRecords().forEach(e -> e.setDis(String.valueOf(disMap.get(e.getId()))));
        List<XpOperationsUserWithRoleVO> sorted = ret.getRecords().stream().sorted(Comparator.comparing(XpOperationsUserWithRoleVO::getDis)).collect(Collectors.toList());
        ret.setRecords(sorted);
        return R.ok(ret);
    }