xuhy
2026-03-11 25f41f7993521734bdfba8368062146d364919a1
运维车辆列表修改根据车队查询,白名单校验手机号正则
5个文件已修改
64 ■■■■■ 已修改文件
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/VehicleMapQuery.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpWhitelistController.java
@@ -5,6 +5,7 @@
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.json.JSONObject;
import com.xiaopeng.api.model.account.SysUser;
import com.xiaopeng.api.model.operation.XpWhitelist;
@@ -235,9 +236,16 @@
        JSONObject result = new JSONObject();
        List<XpWhitelist> addList = new ArrayList<>();
        for (WhitelistImportExcel whitelistImportExcel : whitelistImportExcels) {
            // 手机号正则校验
            boolean isPhone = PhoneUtil.isPhone(whitelistImportExcel.getAccount());
            if (!isPhone) {
                result.append("白名单:[", whitelistImportExcel.getAccount() + "]手机号格式错误");
                continue;
            }
            Long id = codeMap.get(whitelistImportExcel.getAccount());
            if (id != null) {
                result.append("白名单:[", whitelistImportExcel.getAccount() + "]已存在");
                continue;
            }
            XpWhitelist xpWhitelist = new XpWhitelist();
            xpWhitelist.setNickName(whitelistImportExcel.getNickName());
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -27,6 +27,7 @@
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.utils.WebUtils;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.vehicleConvoy.constant.I18nKeyConstant;
import com.xiaopeng.vehicleConvoy.model.dto.*;
import com.xiaopeng.vehicleConvoy.model.exportExcel.XpVehicleExportExcel;
@@ -94,6 +95,7 @@
    private final XpTaskRuleClient xpTaskRuleClient;
    private final MongoTemplate mongoTemplate;
    private final MessageSource messageSource;
    private final TokenService tokenService;
    /**
     * 根据ID列表批量查询车辆信息(内部接口)
     *
@@ -669,6 +671,8 @@
    @ApiOperation(value = "车辆管理-地图", tags = {"运维APP-车辆管理"})
    @PostMapping("/api/v1/vehicle/vehicleMap")
    public R<PageInfo<XpVehicleVO>> vehicleMap(@RequestBody VehicleMapQuery query) {
        Long operationsUserId = tokenService.getLoginOperationUser().getId();
        query.setOperationsUserId(operationsUserId);
        return R.ok(xpVehicleService.pageList(query));
    }
    /**
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/model/query/VehicleMapQuery.java
@@ -21,4 +21,8 @@
    private List<String> statusList;
    @ApiModelProperty(value = "前端忽略")
    private List<String> electronicIdList;
    @ApiModelProperty(value = "当前用户id 前端忽略")
    private Long operationsUserId;
    @ApiModelProperty(value = "车辆id集合 前端忽略")
    private List<Long> vehicleIds;
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -4,6 +4,7 @@
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.dto.vehicleConvoy.VehicleTemperatureDto;
@@ -13,9 +14,7 @@
import com.xiaopeng.api.model.operation.XpElectronicFence;
import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpFleetVehicle;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicleAnnualRecord;
import com.xiaopeng.api.model.vehicleConvoy.*;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.operation.ElectronicFenceDetailVo;
import com.xiaopeng.api.vo.vehicleConvoy.VehiclesCommandEnum;
@@ -27,11 +26,14 @@
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.redis.service.RedisService;
import com.xiaopeng.vehicleConvoy.constant.I18nKeyConstant;
import com.xiaopeng.vehicleConvoy.mapper.XpFleetMapper;
import com.xiaopeng.vehicleConvoy.mapper.XpFleetOperationsMapper;
import com.xiaopeng.vehicleConvoy.mapper.XpVehicleMapper;
import com.xiaopeng.vehicleConvoy.model.dto.*;
import com.xiaopeng.vehicleConvoy.model.importExcel.XpVehicleImportExcel;
import com.xiaopeng.vehicleConvoy.model.query.*;
import com.xiaopeng.vehicleConvoy.model.vo.XpVehicleVO;
import com.xiaopeng.vehicleConvoy.service.IXpFleetService;
import com.xiaopeng.vehicleConvoy.service.IXpVehicleAnnualRecordService;
import com.xiaopeng.vehicleConvoy.service.IXpFleetVehicleService;
import com.xiaopeng.vehicleConvoy.service.IXpVehicleService;
@@ -77,12 +79,14 @@
    @Autowired
    private XpElectronicClient xpElectronicClient;
        @Autowired
        private IXpVehicleAnnualRecordService xpVehicleAnnualRecordService;
        @Autowired
        private IXpFleetVehicleService xpFleetVehicleService;
        @Resource
        private XpuVinClient xpuVinClient;
    @Autowired
    private IXpVehicleAnnualRecordService xpVehicleAnnualRecordService;
    @Autowired
    private IXpFleetVehicleService xpFleetVehicleService;
    @Autowired
    private XpFleetOperationsMapper xpFleetOperationsMapper;
    @Resource
    private XpuVinClient xpuVinClient;
    @Autowired
    private RedisService redisService;
    @Autowired
@@ -144,6 +148,24 @@
    @Override
    public PageInfo<XpVehicleVO> pageList(VehicleMapQuery query) {
        PageInfo<XpVehicleVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        // 查询用户所在车队的车辆id集合
        List<XpFleetOperations> xpFleetOperations = xpFleetOperationsMapper.selectList(Wrappers.lambdaQuery(XpFleetOperations.class)
                .eq(XpFleetOperations::getOperationsUserId, query.getOperationsUserId()));
        if (CollectionUtils.isEmpty(xpFleetOperations)) {
            return pageInfo;
        }
        List<Long> fleetIds = xpFleetOperations.stream().map(XpFleetOperations::getFleetId).collect(Collectors.toList());
        // 查询关联车辆
        List<XpFleetVehicle> xpFleetVehicles = xpFleetVehicleService.list(Wrappers.lambdaQuery(XpFleetVehicle.class)
                .in(XpFleetVehicle::getFleetId, fleetIds));
        if (CollectionUtils.isEmpty(xpFleetVehicles)) {
            return pageInfo;
        }
        List<Long> vehicleIds = xpFleetVehicles.stream().map(XpFleetVehicle::getVehicleId).collect(Collectors.toList());
        query.setVehicleIds(vehicleIds);
        if (StringUtils.isNotBlank(query.getStatus())) {
            query.setStatusList(Arrays.asList(query.getStatus().split(",")));
xp-robotaxi-vehicle-convoy-boot/src/main/resources/mapper/vehicleConvoy/XpVehicleMapper.xml
@@ -60,12 +60,18 @@
                    #{item}
                </foreach>
            </if>
            <if test="query.electronicId != null">
            <if test="query.electronicIdList != null and query.electronicIdList.size()>0">
                AND electronic_id in
                <foreach item="item" collection="query.electronicIdList" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            <if test="query.vehicleIds != null and query.vehicleIds.size()>0">
                AND id in
                <foreach item="item" collection="query.vehicleIds" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            AND is_deleted = 0
        </where>
        ORDER BY create_time DESC