puzhibing
2026-05-09 b70ae5eb265dcf3911103bb818579e515a3a5ec3
修改bug
1 文件已重命名
30个文件已修改
294 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/TokenController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpQualificationAuditServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysGroup.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/OrderTrajectory.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/LoginUser.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/service/TokenService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/ActiveOrderServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpTargetedServiceController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpUserFeedbackController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderEvaluateController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpTestOrderController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/mangodb/service/OrderTrajectoryService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/mangodb/service/impl/OrderTrajectoryServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpTestOrderService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/OrderDetailVo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/SysUserController.java
@@ -87,7 +87,7 @@
        PageInfo<SysUser> pageInfo = new PageInfo<SysUser>(sysUserListQuery.getPageNum(), sysUserListQuery.getPageSize());
        PageInfo<SysUser> page = userService.getList(pageInfo, sysUserListQuery);
        page.getRecords().forEach(user -> {
            if(!loginUser.getPhoneDesensitization()){
            if(!loginUser.getPhoneDesensitizationExempt()){
                user.setPhoneNumber(DesensitizedUtil.mobilePhone(user.getPhoneNumber()));
//            user.setUserAccount(sysGroupService.getPhoneDesensitization(user.getUserAccount()));
            }
@@ -103,7 +103,7 @@
        LoginUser loginUser = tokenService.getLoginUser();
        List<SysUser> listAll = userService.list();
        for (SysUser sysUser : listAll) {
            if(!loginUser.getPhoneDesensitization()){
            if(!loginUser.getPhoneDesensitizationExempt()){
                sysUser.setPhoneNumber(DesensitizedUtil.mobilePhone(sysUser.getPhoneNumber()));
            }
        }
@@ -197,7 +197,7 @@
        ajax.put("posts", postService.selectPostAll());
        if (StringUtils.isNotNull(userId)) {
            SysUser sysUser = userService.selectUserById(userId);
            if(!loginUser.getPhoneDesensitization()){
            if(!loginUser.getPhoneDesensitizationExempt()){
                sysUser.setPhoneNumber(DesensitizedUtil.mobilePhone(sysUser.getPhoneNumber()));
            }
            ajax.put(AjaxResult.DATA_TAG, sysUser);
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/TokenController.java
@@ -75,7 +75,7 @@
        // 用户登录
        LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(), request);
        boolean phoneDesensitization = sysGroupService.getPhoneDesensitization();
        userInfo.setPhoneDesensitization(phoneDesensitization);
        userInfo.setPhoneDesensitizationExempt(phoneDesensitization);
        HashMap<String, Object> map = new HashMap<>();
        map.put("token", tokenService.createToken(userInfo));
        List<SysRole> roles = userInfo.getSysUser().getRoles();
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -233,7 +233,7 @@
    public R<PageInfo<XpOperationsUserVO>> pageList(@RequestBody XpOperationsUserQuery query) {
        LoginUser loginUser = tokenService.getLoginUser();
        PageInfo<XpOperationsUserVO> pageList = xpOperationsUserService.pageList(query);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            for (XpOperationsUserVO record : pageList.getRecords()) {
                record.setPhoneNumber(DesensitizedUtil.mobilePhone(record.getPhoneNumber()));
            }
@@ -396,7 +396,7 @@
                xpOperationsUserVO.setCertificateOfNoCriminalRecord(jsonObject.toJSONString());
            }
        }
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            xpOperationsUserVO.setPhoneNumber(DesensitizedUtil.mobilePhone(xpOperationsUserVO.getPhoneNumber()));
        }
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
@@ -123,7 +123,7 @@
        LoginUser loginUser = tokenService.getLoginUser();
        PageInfo<XpOperationsUserWithRoleVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        Page<XpOperationsUserWithRoleVO> page = baseMapper.selectUserPageByConditions(pageInfo, query);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            for (XpOperationsUserWithRoleVO record : page.getRecords()) {
                record.setPhoneNumber(DesensitizedUtil.mobilePhone(record.getPhoneNumber()));
            }
@@ -273,7 +273,7 @@
        }
        for (XpOperationsUserVO xpOperationsUserVO : list) {
            if(!loginUser.getPhoneDesensitization()){
            if(!loginUser.getPhoneDesensitizationExempt()){
                xpOperationsUserVO.setPhoneNumber(DesensitizedUtil.mobilePhone(xpOperationsUserVO.getPhoneNumber()));
            }
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpQualificationAuditServiceImpl.java
@@ -93,7 +93,7 @@
        for (XpQualificationAuditVO xpQualificationAuditVO : list) {
            if(!loginUser.getPhoneDesensitization()){
            if(!loginUser.getPhoneDesensitizationExempt()){
                xpQualificationAuditVO.setPhoneNumber(DesensitizedUtil.mobilePhone(xpQualificationAuditVO.getPhoneNumber()));
            }
            String certificateOfNoCriminalRecord = xpQualificationAuditVO.getCertificateOfNoCriminalRecord();
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/SysGroup.java
@@ -42,5 +42,5 @@
    private Integer groupType;
    @ApiModelProperty(value = "手机脱敏(0=否,1=是)")
    private Integer phoneDesensitization;
    private Integer phoneDesensitizationExempt;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/OrderTrajectory.java
File was renamed from xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/mangodb/model/OrderTrajectory.java
@@ -1,4 +1,4 @@
package com.xiaopeng.order.mangodb.model;
package com.xiaopeng.api.model.order;
import com.xiaopeng.common.core.web.domain.MongoBaseModel;
@@ -7,8 +7,6 @@
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.List;
@Data
@AllArgsConstructor
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/LoginUser.java
@@ -68,5 +68,5 @@
    /**
     * 数据脱敏权限
     */
    private Boolean phoneDesensitization;
    private Boolean phoneDesensitizationExempt;
}
xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/service/TokenService.java
@@ -61,7 +61,7 @@
        claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
        claimsMap.put(SecurityConstants.USER_TYPE, "system");
        claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
        claimsMap.put(SecurityConstants.DESENSITIZATION, loginUser.getPhoneDesensitization());
        claimsMap.put(SecurityConstants.DESENSITIZATION, loginUser.getPhoneDesensitizationExempt());
        // 接口返回信息
        Map<String, Object> rspMap = new HashMap<String, Object>();
        rspMap.put("access_token", JwtUtils.createToken(claimsMap));
xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/ActiveOrderServiceImpl.java
@@ -17,6 +17,7 @@
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.model.operation.XpPoint;
import com.xiaopeng.api.model.operation.XpSystemSetting;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType;
@@ -24,6 +25,7 @@
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.common.core.constant.CacheConstants;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.enums.CancelOrderSceneEnum;
import com.xiaopeng.common.core.enums.OrderStatusEnum;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.StringUtils;
@@ -41,10 +43,14 @@
import com.xiaopeng.itinerary.utils.map.GDMapGeocodingUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.StringJoiner;
import java.util.concurrent.TimeUnit;
@@ -84,6 +90,8 @@
    private OrderMissionClient orderMissionClient;
    @Resource
    private OfficialPartnerUtil officialPartnerUtil;
    @Resource
    private MongoTemplate mongoTemplate;
    /*
@@ -137,8 +145,22 @@
        Integer orderChange = systemSetting.getXczCaCount();// 从配置文件读取 修改订单目的地次数
        XpOrder order = xpOrderR.getData();
        //判断订单修改的次数
        //需要加上豁免的情况
        if(order.getOrderChange() > orderChange){
            throw new ServiceException("目的地修改次数已超上限");
            if(order.getStatus() == 6){
                //计算平均时速小于设定值,可豁免限制
                Integer xczHmSpeedPerHour = systemSetting.getXczHmSpeedPerHour();
                Integer xczHmDuration = systemSetting.getXczHmDuration();
                LocalDateTime localDateTime = LocalDateTime.now().minusMinutes(xczHmDuration);
                List<OrderTrajectory> orderTrajectories = mongoTemplate.find(Query.query(Criteria.where("orderId").is(order.getId()).gt("createTime").is(localDateTime)), OrderTrajectory.class);
                if(orderTrajectories.isEmpty()){
                    throw new ServiceException("目的地修改次数已超上限");
                }
                double speed = orderTrajectories.stream().map(OrderTrajectory::getSpeed).reduce(Double::sum).orElse(0D) / orderTrajectories.size();
                if(speed > xczHmSpeedPerHour){
                    throw new ServiceException("目的地修改次数已超上限");
                }
            }
        }
        if(order.getVehicleId() == null){
            throw new ServiceException("行驶中的车辆信息错误");
@@ -230,6 +252,10 @@
        pushOrderDto.setEndTaskId(order.getXpuEndTaskId());
        pushOrderDto.setVin(xpVehicle.getVehicleVin());
        pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CHANGE_DESTINATION);
        pushOrderDto.setEndLongitude(endXpPoint.getPointLon());
        pushOrderDto.setEndLatitude(endXpPoint.getPointLat());
        pushOrderDto.setEndPoiName(endXpPoint.getPointName());
        pushOrderDto.setCancelScene(CancelOrderSceneEnum.NORMAL_CANCEL.getCode());
        orderMissionClient.updateEndAddress(pushOrderDto);
        log.info("订单下发XPU修改目的地成功 {}", order.getId());
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java
@@ -1,18 +1,21 @@
package com.xiaopeng.map.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaopeng.api.dto.WeatherDTO;
import com.xiaopeng.api.dto.map.HistoryPointDto;
import com.xiaopeng.api.dto.map.OrderRouteAndFareDto;
import com.xiaopeng.api.dto.map.RouteAndFareDto;
import com.xiaopeng.api.feignClient.order.XpOrderClient;
import com.xiaopeng.api.model.map.XpGeoFencingPolygon;
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.vo.map.PointByIpVo;
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.map.mangodb.model.GeoPoint;
import com.xiaopeng.map.mangodb.service.XpGeoFencingPolygonService;
import com.xiaopeng.map.service.XpElectronicFenceAreaService;
import com.xiaopeng.map.utils.AmapWalkingRouteUtil;
import com.xiaopeng.map.utils.GDMapGeocodingUtil;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
@@ -36,6 +39,7 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@@ -57,6 +61,8 @@
    private final RedisService redisService;
    private final XpOrderClient xpOrderClient;
    private final MongoTemplate mongoTemplate;
    @Resource
    private XpElectronicFenceAreaService xpElectronicFenceAreaService;
    public XpMapController(GDMapGeocodingUtil gdMapGeocodingUtil, XpGeoFencingPolygonService xpGeoFencingPolygonService, RedisService redisService, XpOrderClient xpOrderClient, MongoTemplate mongoTemplate) {
        this.gdMapGeocodingUtil = gdMapGeocodingUtil;
@@ -145,13 +151,14 @@
        String fenceId = null;
        if(!operatingArea.isEmpty()){
            fenceId = operatingArea.get(0);
            List<XpGeoFencingPolygon> pointsInFence = mongoTemplate.find(Query.query(Criteria.where("fenceId").is(fenceId)), XpGeoFencingPolygon.class);
            for (XpGeoFencingPolygon xpGeoFencingPolygon : pointsInFence) {
                GeoJsonPolygon points = xpGeoFencingPolygon.getPoints();
            List<XpElectronicFenceArea> list = xpElectronicFenceAreaService.list(new QueryWrapper<XpElectronicFenceArea>().eq("electronic_id", fenceId).eq("is_deleted", 0).eq("area_type", 2));
            for (XpElectronicFenceArea xpElectronicFenceArea : list) {
                String fencePoints = xpElectronicFenceArea.getFencePoints();
                List<String> coordinatesList = new ArrayList<>();
                for (Point point : points) {
                    coordinatesList.add(point.getX()+","+point.getY());
                for (String s : fencePoints.split(",")) {
                    coordinatesList.add(s.replace("_", ","));
                }
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("coordinates", coordinatesList);
                pointStrParam.add(jsonObject);
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpInvitationCodeController.java
@@ -85,7 +85,7 @@
    public R<PageInfo<XpInvitationCode>> pageList(@RequestBody InvitationPageListQuery query) {
        LoginUser loginUser = tokenService.getLoginUser();
        PageInfo<XpInvitationCode> pageList = xpInvitationCodeService.pageList(query);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            pageList.getRecords().forEach(s -> s.setBindAccount(DesensitizedUtil.mobilePhone(s.getBindAccount())));
        }
        return R.ok(pageList);
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpTargetedServiceController.java
@@ -63,7 +63,7 @@
        if (vo == null) {
            return R.fail("数据不存在");
        }
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            vo.getWhitelistList().forEach(s->s.setAccount(DesensitizedUtil.mobilePhone(s.getAccount())));
        }
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpUserFeedbackController.java
@@ -72,7 +72,7 @@
    public R<PageInfo<XpUserFeedbackVO>> getPageList(@RequestBody UserFeedBackQuery query) {
        LoginUser loginUser = tokenService.getLoginUser();
        PageInfo<XpUserFeedbackVO> pageList = xpUserFeedbackService.getPageList(query);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            pageList.getRecords().forEach(s->s.setPhone(DesensitizedUtil.mobilePhone(s.getPhone())));
        }
        return R.ok();
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
@@ -94,7 +94,7 @@
    public R<XpWhitelist> detail(@PathVariable("id") Long id) {
        LoginUser loginUser = tokenService.getLoginUser();
        XpWhitelist xpWhitelist = xpWhitelistService.getById(id);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            xpWhitelist.setAccount(DesensitizedUtil.mobilePhone(xpWhitelist.getAccount()));
        }
        return R.ok(xpWhitelist);
@@ -106,7 +106,7 @@
    public R<PageInfo<XpWhitelist>> pageList(@RequestBody WhitelistPageListQuery query) {
        LoginUser loginUser = tokenService.getLoginUser();
        PageInfo<XpWhitelist> pageList = xpWhitelistService.pageList(query);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            pageList.getRecords().forEach(s->s.setAccount(DesensitizedUtil.mobilePhone(s.getAccount())));
        }
        return R.ok(pageList);
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpSystemSettingServiceImpl.java
@@ -100,7 +100,13 @@
                    .set(XpSystemSetting::getAdsorptionDistance, xpSystemSetting.getAdsorptionDistance())
                    .set(XpSystemSetting::getHotfixStatus, xpSystemSetting.getHotfixStatus())
                    .set(XpSystemSetting::getHotfixStartTime, xpSystemSetting.getHotfixStartTime())
                    .set(XpSystemSetting::getHotfixEndTime, xpSystemSetting.getHotfixEndTime()).update();
                    .set(XpSystemSetting::getHotfixEndTime, xpSystemSetting.getHotfixEndTime())
                    .set(XpSystemSetting::getXczCaCount, xpSystemSetting.getXczCaCount())
                    .set(XpSystemSetting::getXczSyDistance, xpSystemSetting.getXczSyDistance())
                    .set(XpSystemSetting::getXczSyTime, xpSystemSetting.getXczSyTime())
                    .set(XpSystemSetting::getXczHmSpeedPerHour, xpSystemSetting.getXczHmSpeedPerHour())
                    .set(XpSystemSetting::getXczHmDuration, xpSystemSetting.getXczHmDuration())
                    .update();
        }else {
            save(xpSystemSetting);
        }
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -1181,6 +1181,87 @@
                }
            }
            log.info("没有找到空闲车辆 {},尝试连环派单给即将服务结束的车辆", orderNo);
            // 查询状态为1的车辆vin
            R<List<String>> servingVehicles = xpVehicleClient.queryVehiclePositionByVin(new VehiclePositionByVinDto(xpElectronicFence.getId(), vinList, xpTradingStrategy.getSimultaneouslyOrderCount(),1));
            if (servingVehicles.getCode() != 200) {
                continue;
            }
            LonLatDto userPostion = new LonLatDto(Double.parseDouble(split[0]), Double.parseDouble(split[1]));
            XpTradingStrategyDetailVO strategyDetailVO = tradingStrategyClient.queryById().getData();
            Integer distanceRegardAsEnding = strategyDetailVO.getDistanceRegardAsEnding();
            Integer timeRegardAsEnding = strategyDetailVO.getTimeRegardAsEnding();
            Integer backupPower = strategyDetailVO.getBackupPower();
            Integer destToPassenger = strategyDetailVO.getDestToPassenger();
            Integer endingTimeToUseTime = strategyDetailVO.getEndingTimeToUseTime();
            LocalDateTime rideTime = xpOrder.getRideTime();
            LocalDateTime now = LocalDateTime.now();
            Optional<XpOrder> luckyOrderOpt = servingVehicles.getData().stream()
                    //获取位置
                    .map(vin -> mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class))
                    .map(VehiclePosition::getOrderId)
                    .map(xpOrderClient::queryOrderById)
                    .filter(R::isSuccess)
                    .map(R::getData)
                    .filter(o -> {
                        XpVehicle xpVehicle = xpVehicleClient.queryById(o.getVehicleId()).getData();
                        Object cacheObject = redisService.getCacheObject(CacheConstants.navigationEnd(o.getAppUserId().toString()));
                        RouteVo routeRemain = JSON.parseObject(cacheObject.toString(), RouteVo.class);
                        if (routeRemain.getDuration() / 60 > timeRegardAsEnding) {
                            return false;
                        }
                        if (routeRemain.getDistance() > distanceRegardAsEnding) {
                            return false;
                        }
                        RouteAndFareDto next = new RouteAndFareDto();
                        next.setOrigin(new LonLatDto(o.getStartLon(),o.getStartLat()));
                        next.setDestination(new LonLatDto(o.getEndLon(),o.getEndLat()));
                        RouteVo route = xpMapClient.getDistanceAndDuration(next).getData();
                        if (route.getDistance() > backupPower + xpVehicle.getMileageRange())
                            return false;
                        return routeRemain.getDistance() < destToPassenger
                                || now.plusSeconds(routeRemain.getDuration())
                                .plusMinutes(endingTimeToUseTime)
                                .isBefore(rideTime);
                    })
                    .findAny();
            if (luckyOrderOpt.isPresent()) {
                XpOrder luckyOder = luckyOrderOpt.get();
                log.info("有空闲车辆 {} 订单 {}", luckyOder.getOrderNumber(), orderNo);
                XpVehicle xpVehicle = xpVehicleClient.queryById(luckyOder.getVehicleId()).getData();
                // 设置路线信息
                RouteAndFareDto routeAndFareDto = new RouteAndFareDto();
                routeAndFareDto.setDestination(userPostion);
                routeAndFareDto.setOrigin(new LonLatDto(luckyOder.getEndLon(),luckyOder.getEndLat()));
                RouteVo routeToOrigin = xpMapClient.getDistanceAndDuration(routeAndFareDto).getData();
                Object cacheObject = redisService.getCacheObject(CacheConstants.navigationEnd(luckyOder.getAppUserId().toString()));
                RouteVo routeRemain = JSON.parseObject(cacheObject.toString(), RouteVo.class);
                routeToOrigin.getPolyline().addAll(0, routeRemain.getPolyline());
                routeToOrigin.setDuration(routeToOrigin.getDuration() + routeRemain.getDuration());
                routeToOrigin.setDistance(routeToOrigin.getDistance() + routeRemain.getDistance());
                //此处找到车后先不忙给车推送接单消息,先修改订单上的车辆信息
                xpOrder.setVehicleId(xpVehicle.getId());
                xpOrder.setAcceptanceTime(LocalDateTime.now());
                xpOrder.setStatus(2);
                xpOrderClient.updateOrder(xpOrder);
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("orderId", xpOrder.getId());
                jsonObject.put("endLongitude", xpOrder.getEndLat());
                jsonObject.put("endLatitude", xpOrder.getEndLat());
                redisService.setCacheObject(CacheConstants.nextOrder(luckyOder.getId().toString()), jsonObject.toJSONString());
                redisService.setCacheObject(CacheConstants.navigationStart(xpOrder.getAppUserId().toString()), routeToOrigin);
                redisService.removeByPattern(quoteName,xpOrder.getOrderNumber());
                log.info("将订单 {} 从队列 {} 弹出去", orderNo, quoteName);
                break;
            }
        }
        return false;
    }
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java
@@ -1,28 +1,23 @@
package com.xiaopeng.order.controller;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaopeng.api.dto.account.UcUserInfo;
import com.xiaopeng.api.dto.vehicleConvoy.ServiceVehicleListDto;
import com.xiaopeng.api.feignClient.account.UserResourcesClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.map.XpGeoFencingPolygon;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.AppUserPosition;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.vehicleConvoy.VehicleDoorStatusVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.StringUtils;
import com.xiaopeng.order.dto.UserOrderListDto;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.service.IXpOrderService;
import com.xiaopeng.order.vo.*;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.*;
@@ -31,7 +26,6 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -24,7 +24,6 @@
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.account.LoginUser;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.operation.NavigationVo;
import com.xiaopeng.api.vo.operation.NearestNextVo;
import com.xiaopeng.api.vo.operation.RouteVo;
@@ -38,8 +37,7 @@
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.order.dto.OrderNavigationDto;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.order.mangodb.service.OrderTrajectoryService;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.model.dto.XpOrderCommentDto;
import com.xiaopeng.order.model.dto.XpOrderOperateDTO;
import com.xiaopeng.order.model.dto.XpOrderPayDto;
@@ -242,7 +240,7 @@
    public R<PageInfo<XpOrderPageVO>> pageList( @RequestBody XpOrderPageQuery query) {
        LoginUser loginUser = tokenService.getLoginUser();
        PageInfo<XpOrderPageVO> pageInfo = xpOrderService.pageList(query);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            pageInfo.getRecords().forEach(s->s.setPhoneNumber(DesensitizedUtil.mobilePhone(s.getPhoneNumber())));
        }
@@ -260,7 +258,7 @@
    public R<XpOrderDetailVO> queryById(@ApiParam(value = "订单id", required = true) @RequestParam Long id) {
        LoginUser loginUser = tokenService.getLoginUser();
        XpOrderDetailVO detail = xpOrderService.getOrderDetail(id);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            detail.setPhoneNumber(DesensitizedUtil.mobilePhone(detail.getPhoneNumber()));
        }
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderEvaluateController.java
@@ -48,7 +48,7 @@
    public R<PageInfo<OrderEvaluatePageVO>> pageList(@Validated @RequestBody OrderEvaluatePageQuery query) {
        LoginUser loginUser = tokenService.getLoginUser();
        PageInfo<OrderEvaluatePageVO> pageInfo = xpOrderEvaluateService.pageList(query);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            pageInfo.getRecords().forEach(s->s.setPhoneNumber(DesensitizedUtil.mobilePhone(s.getPhoneNumber())));
        }
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpTestOrderController.java
@@ -1,66 +1,25 @@
package com.xiaopeng.order.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xiaopeng.api.dto.QueryOrderRouteDTO;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.dto.order.GetOrderNumDto;
import com.xiaopeng.api.dto.order.PopOrderDto;
import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO;
import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.order.XpTestOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.api.vo.order.*;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.WebUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.order.model.dto.XpOrderCommentDto;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.model.dto.XpOrderOperateDTO;
import com.xiaopeng.order.model.dto.XpOrderPayDto;
import com.xiaopeng.order.model.dto.XpOrderReassignDTO;
import com.xiaopeng.order.model.exportExcel.XpOrderExportExcel;
import com.xiaopeng.order.model.query.XpHistoryOrderListQuery;
import com.xiaopeng.order.model.query.XpOrderExcelQuery;
import com.xiaopeng.order.model.query.XpOrderPageQuery;
import com.xiaopeng.order.model.query.XpTestOrderPageQuery;
import com.xiaopeng.order.model.vo.*;
import com.xiaopeng.order.service.IXpOrderService;
import com.xiaopeng.order.service.IXpTestOrderService;
import com.xiaopeng.order.vo.OrderDetailVo;
import com.xiaopeng.unifiedverification.interceptor.XpClientCheck;
import io.swagger.annotations.*;
import lombok.RequiredArgsConstructor;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * <p>
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/mangodb/service/OrderTrajectoryService.java
@@ -1,7 +1,7 @@
package com.xiaopeng.order.mangodb.service;
import com.xiaopeng.common.core.web.service.BaseService;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.api.model.order.OrderTrajectory;
import org.springframework.stereotype.Repository;
/**
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/mangodb/service/impl/OrderTrajectoryServiceImpl.java
@@ -1,6 +1,6 @@
package com.xiaopeng.order.mangodb.service.impl;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.mangodb.service.OrderTrajectoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java
@@ -1,6 +1,5 @@
package com.xiaopeng.order.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.dto.order.GetOrderNumDto;
import com.xiaopeng.api.dto.order.PopOrderDto;
@@ -16,7 +15,7 @@
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.order.dto.UserOrderListDto;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.model.dto.XpOrderCommentDto;
import com.xiaopeng.order.model.dto.XpOrderPayDto;
import com.xiaopeng.order.model.query.XpHistoryOrderListQuery;
@@ -26,8 +25,6 @@
import com.xiaopeng.order.model.vo.XpOrderHistoryVO;
import com.xiaopeng.order.model.vo.XpOrderPageVO;
import com.xiaopeng.order.vo.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import java.math.BigDecimal;
import java.util.List;
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpTestOrderService.java
@@ -2,32 +2,14 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.dto.order.GetOrderNumDto;
import com.xiaopeng.api.dto.order.PopOrderDto;
import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO;
import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.order.XpTestOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.order.FareBreakdownVo;
import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo;
import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo;
import com.xiaopeng.api.vo.order.XpPointInfoVo;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.order.model.dto.XpOrderCommentDto;
import com.xiaopeng.order.model.dto.XpOrderPayDto;
import com.xiaopeng.order.model.query.XpHistoryOrderListQuery;
import com.xiaopeng.order.model.query.XpOrderExcelQuery;
import com.xiaopeng.order.model.query.XpOrderPageQuery;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.model.query.XpTestOrderPageQuery;
import com.xiaopeng.order.model.vo.*;
import com.xiaopeng.order.vo.OrderDetailVo;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.math.BigDecimal;
import java.util.List;
/**
 * <p>
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -84,7 +84,7 @@
import com.xiaopeng.order.job.base.QuartzManager;
import com.xiaopeng.order.job.base.TimeJobType;
import com.xiaopeng.order.job.jobs.*;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.mangodb.service.OrderTrajectoryService;
import com.xiaopeng.order.mapper.XpCruiseOrderMapper;
import com.xiaopeng.order.mapper.XpOrderDetailMapper;
@@ -652,7 +652,7 @@
        if (Objects.nonNull(order.getAppUserId()) && userInfoMap != null && userInfoMap.containsKey(order.getAppUserId().toString())) {
            UcUserInfo userInfo = userInfoMap.get(order.getAppUserId().toString());
            vo.setNickName(userInfo.getNickName());
            if(!loginUser.getPhoneDesensitization()){
            if(!loginUser.getPhoneDesensitizationExempt()){
                vo.setPhoneNumber(DesensitizedUtil.mobilePhone(userInfo.getMobile()));
            }
@@ -2899,7 +2899,7 @@
        pushOrderDto.setOrderType(OrderType.CRUISE_ORDER);
        pushOrderDto.setStage(2);
        pushOrderDto.setLastOrderId(order.getId() + "");
        pushOrderDto.setLastOrderId(order.getXpuEndTaskId());
        pushOrderDto.setLastXpuTaskId(order.getXpuEndTaskId());
        pushOrderDto.setTaskActionType(TaskActionType.kTerminateForNewTask);
        orderMissionClient.pushOrder(pushOrderDto);
        log.info("下发XUP巡游订单报文成功");
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
@@ -51,9 +51,8 @@
import com.xiaopeng.order.job.base.QuartzManager;
import com.xiaopeng.order.job.base.TimeJobType;
import com.xiaopeng.order.job.jobs.EndTripJob;
import com.xiaopeng.order.job.jobs.OrderCancelJob;
import com.xiaopeng.order.job.jobs.TestOrderCancelJob;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.api.model.order.OrderTrajectory;
import com.xiaopeng.order.mapper.XpCruiseOrderMapper;
import com.xiaopeng.order.mapper.XpTestOrderDetailMapper;
import com.xiaopeng.order.mapper.XpTestOrderMapper;
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/vo/OrderDetailVo.java
@@ -1,7 +1,7 @@
package com.xiaopeng.order.vo;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.order.mangodb.model.OrderTrajectory;
import com.xiaopeng.api.model.order.OrderTrajectory;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpFleetController.java
@@ -156,7 +156,7 @@
    public R<FleetDetailVO> queryById(@RequestParam Long id) {
        LoginUser loginUser = tokenService.getLoginUser();
        R<FleetDetailVO> fleetDetailVOR = xpFleetService.queryById(id);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            fleetDetailVOR.getData().setPhoneNumber(DesensitizedUtil.mobilePhone(fleetDetailVOR.getData().getPhoneNumber()));
        }
@@ -174,7 +174,7 @@
    public R<PageInfo<FleetPageVO>> pageList(@Valid @RequestBody FleetPageQuery query) {
        LoginUser loginUser = tokenService.getLoginUser();
        R<PageInfo<FleetPageVO>> pageInfoR = xpFleetService.pageList(query);
        if(!loginUser.getPhoneDesensitization()){
        if(!loginUser.getPhoneDesensitizationExempt()){
            pageInfoR.getData().getRecords().forEach(s->s.setPhoneNumber(DesensitizedUtil.mobilePhone(s.getPhoneNumber())));
        }
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpFleetServiceImpl.java
@@ -307,7 +307,7 @@
            R<XpOperationsUser> userResult = xpOperationUserClient.queryById(fleet.getOperationsUserId());
            if (userResult.getData() != null) {
                vo.setOperationsUserName(userResult.getData().getNickName());
                if(!loginUser.getPhoneDesensitization()){
                if(!loginUser.getPhoneDesensitizationExempt()){
                    vo.setPhoneNumber(DesensitizedUtil.mobilePhone(userResult.getData().getPhoneNumber()));
                }
@@ -413,7 +413,7 @@
                XpOperationsUser user = userMap.get(fleet.getOperationsUserId());
                if (user != null) {
                    vo.setOperationsUserName(user.getNickName());
                    if(!loginUser.getPhoneDesensitization()){
                    if(!loginUser.getPhoneDesensitizationExempt()){
                        vo.setPhoneNumber(DesensitizedUtil.mobilePhone(user.getPhoneNumber()));
                    }
@@ -555,7 +555,7 @@
                    FleetUserVO vo = new FleetUserVO();
                    vo.setUserId(user.getId());
                    vo.setNickName(user.getNickName());
                    if(!loginUser.getPhoneDesensitization()){
                    if(!loginUser.getPhoneDesensitizationExempt()){
                        vo.setPhoneNumber(DesensitizedUtil.mobilePhone(user.getPhoneNumber()));
                    }
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
@@ -76,11 +76,6 @@
    public PageInfo<XpPolicyApplicationVO> pageList(XpPolicyApplicationQuery query) {
        LoginUser loginUser = tokenService.getLoginUser();
        PageInfo<XpPolicyApplicationVO> resultPage = new PageInfo<>(query.getPageNum(), query.getPageSize());
        if(!loginUser.getPhoneDesensitization()){
            for (XpPolicyApplicationVO vo : resultPage.getRecords()) {
                vo.setPhoneNumber(DesensitizedUtil.mobilePhone(vo.getPhoneNumber()));
            }
        }
        // 1. 根据运维人员名称查询运维人员ID列表
        List<Long> operationUserIds = null;
@@ -128,6 +123,12 @@
        List<XpPolicyApplicationVO> voList = page.getRecords().stream()
                .map(item -> convertToPageVO(item, longXpVehicleMap, longXpOperationsUserMap, auditUserMap))
                .collect(Collectors.toList());
        if(!loginUser.getPhoneDesensitizationExempt()){
            for (XpPolicyApplicationVO xpPolicyApplicationVO : voList) {
                xpPolicyApplicationVO.setPhoneNumber(DesensitizedUtil.mobilePhone(xpPolicyApplicationVO.getPhoneNumber()));
            }
        }
        // 6. 返回分页结果
        resultPage.setTotal(page.getTotal());
        resultPage.setRecords(voList);