liujie
2026-03-18 3692b4d087a45f41a21a4967b7544451eee5dbc9
修改图片获取
23个文件已修改
589 ■■■■■ 已修改文件
xp-robotaxi-account-boot/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpQualificationAuditService.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpQualificationAuditServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskManagementController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpWorkOrderController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpChargingRecordService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpChargingRecordServiceImpl.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpVehicleRepairServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mangodb/service/impl/XpGeoFencingPolygonServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpBannerManagementController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpBannerServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRideGuideServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpUserFeedbackServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpVehicleAnnualRecordService.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleAnnualRecordServiceImpl.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/pom.xml
@@ -131,6 +131,12 @@
            <artifactId>snakeyaml</artifactId>
            <version>1.33</version>
        </dependency>
        <dependency>
            <groupId>com.xiaopeng.logan</groupId>
            <artifactId>xp-evi-oss-sdk</artifactId>
            <version>1.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpOperationsUserController.java
@@ -1,6 +1,7 @@
package com.xiaopeng.account.controller;
import com.alibaba.fastjson2.JSONObject;
import com.xiaopeng.account.mapper.XpOperationsRoleMapper;
import com.xiaopeng.account.model.dto.EnableDisableDTO;
import com.xiaopeng.account.model.dto.RePasswordDTO;
@@ -21,6 +22,7 @@
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.account.constant.I18nKeyConstant;
import com.xiaopeng.evi.oss.service.AliOssService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
@@ -52,15 +54,18 @@
    private final XpFleetClient xpFleetClient;
    private final AliOssService aliOssService;
    @Autowired
    public XpOperationsUserController(IXpOperationsUserService xpOperationsUserService,
                                      XpOperationsRoleMapper xpOperationsRoleMapper,
                                      TokenService tokenService,
                                      XpFleetClient xpFleetClient) {
                                      XpFleetClient xpFleetClient, AliOssService aliOssService) {
        this.xpOperationsUserService = xpOperationsUserService;
        this.xpOperationsRoleMapper = xpOperationsRoleMapper;
        this.tokenService = tokenService;
        this.xpFleetClient = xpFleetClient;
        this.aliOssService = aliOssService;
    }
    /**
@@ -176,6 +181,7 @@
        PageInfo<XpOperationsUserVO> pageList = xpOperationsUserService.pageList(query);
        return R.ok(pageList);
    }
    @ApiOperation(value = "运维人员管理不分页列表", tags = {"管理后台-运维执行"})
    @PostMapping("/api/v1/operationsUser/listAll")
    public R<List<XpOperationsUser>> listAll() {
@@ -254,31 +260,43 @@
    @GetMapping("/api/v1/operationsUser/detailById")
    public R<XpOperationsUserVO> detailById(@RequestParam Long id) {
        XpOperationsUserVO xpOperationsUserVO = xpOperationsUserService.detailById(id);
        if (xpOperationsUserVO.getAvatar() != null) {
            JSONObject jsonObject = JSONObject.parseObject(xpOperationsUserVO.getAvatar());
            String downloadUrl = null;
            try {
                String downloadUrl1 = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                downloadUrl = downloadUrl1;
            } catch (Exception e) {
                e.printStackTrace();
            }
            xpOperationsUserVO.setAvatar(downloadUrl);
        }
        return R.ok(xpOperationsUserVO);
    }
    @ApiOperation(value = "运维人员管理导出列表", tags = {"管理后台-运维执行"})
    @PostMapping("/api/v1/operationsUser/exportOperationsUser")
    public void exportOperationsUser(@RequestBody XpOperationsUserQuery query, HttpServletResponse response){
    public void exportOperationsUser(@RequestBody XpOperationsUserQuery query, HttpServletResponse response) {
        xpOperationsUserService.exportOperationsUser(query, response);
    }
    @ApiOperation(value = "运维人员管理导出模板", tags = {"管理后台-运维执行"})
    @GetMapping("/api/v1/operationsUser/exportTemplate")
    public void exportTemplate(HttpServletResponse response){
    public void exportTemplate(HttpServletResponse response) {
        xpOperationsUserService.exportTemplate(response);
    }
    @ApiOperation(value = "运维人员管理导入数据", tags = {"管理后台-运维执行"})
    @PostMapping("/api/v1/operationsUser/importOperationsUser")
    public R<String> importOperationsUser(@RequestParam("file") MultipartFile file){
    public R<String> importOperationsUser(@RequestParam("file") MultipartFile file) {
        xpOperationsUserService.importOperationsUser(file);
        return R.ok();
    }
    /**
     * 根据手机号模糊查询用户(内部接口)
     *
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpQualificationAuditService.java
@@ -7,6 +7,8 @@
import com.xiaopeng.api.vo.account.XpQualificationAuditVO;
import com.xiaopeng.common.core.web.page.PageInfo;
import java.io.UnsupportedEncodingException;
/**
 * <p>
 * 运维人员资质证书审核记录 服务类
@@ -23,7 +25,7 @@
     * @param query 查询参数
     * @return 列表
     */
    PageInfo<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query);
    PageInfo<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query) throws UnsupportedEncodingException;
    /**
     * 管理后台-综合审核-人员资质审核
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpOperationsUserServiceImpl.java
@@ -3,6 +3,7 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.PhoneUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -32,6 +33,7 @@
import com.xiaopeng.common.core.utils.poi.ExcelUtil;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.utils.SecurityUtils;
import com.xiaopeng.evi.oss.service.AliOssService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
@@ -43,9 +45,11 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
@@ -83,6 +87,8 @@
    private SysRoleMapper sysRoleMapper;
    @Autowired
    private ISysRoleService iSysRoleService;
    @Autowired
    private AliOssService aliOssService;
    @Override
    public List<XpOperationsUser> listByName(String nickName) {
@@ -233,6 +239,19 @@
                }
            }
        }
        for (XpOperationsUserVO xpOperationsUserVO : list) {
            String avatar = xpOperationsUserVO.getAvatar();
            JSONObject jsonObject = JSONObject.parseObject(avatar);
            String downloadUrl = null;
            try {
                downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
            xpOperationsUserVO.setAvatar(downloadUrl);
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpQualificationAuditServiceImpl.java
@@ -1,5 +1,6 @@
package com.xiaopeng.account.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaopeng.account.mapper.SysRoleMapper;
@@ -17,10 +18,12 @@
import com.xiaopeng.api.model.account.XpQualificationAudit;
import com.xiaopeng.api.vo.account.XpQualificationAuditVO;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.evi.oss.service.AliOssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
@@ -42,9 +45,11 @@
    private XpOperationsRoleMapper xpOperationsRoleMapper;
    @Autowired
    private SysRoleMapper sysRoleMapper;
    @Autowired
    private AliOssService aliOssService;
    @Override
    public PageInfo<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query) {
    public PageInfo<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query) throws UnsupportedEncodingException {
        PageInfo<XpQualificationAuditVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<XpQualificationAuditVO> list = this.baseMapper.pageList(pageInfo, query);
        if(CollectionUtils.isEmpty(list)){
@@ -80,6 +85,46 @@
            }
        }
        for (XpQualificationAuditVO xpQualificationAuditVO : list) {
            String certificateOfNoCriminalRecord = xpQualificationAuditVO.getCertificateOfNoCriminalRecord();
            if(certificateOfNoCriminalRecord!=null){
                JSONObject jsonObject = JSONObject.parseObject(certificateOfNoCriminalRecord);
                String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                xpQualificationAuditVO.setCertificateOfNoCriminalRecord(downloadUrl);
            }
            String driverLicense = xpQualificationAuditVO.getDriverLicense();
            if(driverLicense!=null){
                JSONObject jsonObject = JSONObject.parseObject(driverLicense);
                String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                xpQualificationAuditVO.setDriverLicense(downloadUrl);
            }
            String trainingGraduationCertificate = xpQualificationAuditVO.getTrainingGraduationCertificate();
            if(trainingGraduationCertificate!=null){
                JSONObject jsonObject = JSONObject.parseObject(trainingGraduationCertificate);
                String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                xpQualificationAuditVO.setTrainingGraduationCertificate(downloadUrl);
            }
            String idCardFront = xpQualificationAuditVO.getIdCardFront();
            if(idCardFront!=null){
                JSONObject jsonObject = JSONObject.parseObject(idCardFront);
                String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                xpQualificationAuditVO.setIdCardFront(downloadUrl);
            }
            String idCardBack = xpQualificationAuditVO.getIdCardBack();
            if(idCardBack!=null){
                JSONObject jsonObject = JSONObject.parseObject(idCardBack);
                String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                xpQualificationAuditVO.setIdCardBack(downloadUrl);
            }
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
xp-robotaxi-maintenance-boot/pom.xml
@@ -166,6 +166,12 @@
            <artifactId>snakeyaml</artifactId>
            <version>1.33</version>
        </dependency>
        <dependency>
            <groupId>com.xiaopeng.logan</groupId>
            <artifactId>xp-evi-oss-sdk</artifactId>
            <version>1.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskManagementController.java
@@ -44,6 +44,7 @@
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -189,7 +190,7 @@
    @ApiOperation(value = "任务详情")
    @GetMapping("/taskDetail")
    public R<TaskManagementDetailVO> taskDetail(Long id) {
    public R<TaskManagementDetailVO> taskDetail(Long id) throws UnsupportedEncodingException {
        return xpTaskService.taskDetail(id);
    }
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleCleanController.java
@@ -1,6 +1,7 @@
package com.xiaopeng.maintenance.controller;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
@@ -11,6 +12,7 @@
import com.xiaopeng.common.core.web.domain.BaseModel;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.maintenance.dto.XpVehicleCleanDTO;
import com.xiaopeng.maintenance.model.vo.XpVehicleCleanVO;
import com.xiaopeng.maintenance.service.IXpVehicleCleanService;
@@ -24,6 +26,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.stream.Collectors;
@@ -53,6 +56,8 @@
    private TokenService tokenService;
    @Autowired
    private ThreadPoolTaskScheduler taskScheduler;
    @Autowired
    private AliOssService aliOssService;
    /**
     * 车辆运维-车辆运维-车身清洁
@@ -86,7 +91,7 @@
     */
    @ApiOperation(value = "车辆管理-清洁列表", tags = {"管理后台-车辆管理"})
    @PostMapping("/api/v1/vehicleClean/list")
    public R<PageInfo<XpVehicleClean>> list(@RequestBody VehicleCleanQuery query) {
    public R<PageInfo<XpVehicleClean>> list(@RequestBody VehicleCleanQuery query) throws UnsupportedEncodingException {
        PageInfo<XpVehicleClean> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        LambdaQueryWrapper<XpVehicleClean> wrapper = new LambdaQueryWrapper<XpVehicleClean>().eq(XpVehicleClean::getVehicleId, query.getVehicleId());
        List<XpOperationsUser> data=null;
@@ -120,6 +125,12 @@
        for (XpVehicleClean record : records) {
            String taskImage = record.getTaskImage();
            if(taskImage!=null){
                JSONObject jsonObject = JSONObject.parseObject(taskImage);
                String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                record.setTaskImage(downloadUrl);
            }
            data.stream().filter(xpOperationsUser -> xpOperationsUser.getId().equals(record.getOperationsUserId())).findFirst().ifPresent(xpOperationsUser -> record.setCreateBy(xpOperationsUser.getNickName()));
        }
        return R.ok(page);
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpWorkOrderController.java
@@ -1,21 +1,27 @@
package com.xiaopeng.maintenance.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.api.model.maintenance.XpWorkOrder;
import com.xiaopeng.api.model.maintenance.XpWorkOrderLog;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.maintenance.model.query.WorkOrderPageListQuery;
import com.xiaopeng.maintenance.service.IXpWorkOrderLogService;
import com.xiaopeng.maintenance.service.IXpWorkOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
/**
 * <p>
@@ -36,6 +42,8 @@
    private IXpWorkOrderLogService workOrderLogService;
    @Resource
    private TokenService tokenService;
    @Resource
    private AliOssService aliOssService;
    @ApiOperation(value = "工单管理分页列表")
    @PostMapping("/pageList")
@@ -73,6 +81,24 @@
    @GetMapping("/workOrderDetail")
    public R<XpWorkOrder> workOrderDetail(Long id) {
        XpWorkOrder detail =workOrderService.workOrderDetail(id);
        if(detail.getProblemImage()!=null){
            String problemImage = detail.getProblemImage();
            if (StringUtils.isNotBlank(problemImage)) {
                JSONArray jsonArray = JSONArray.parseArray(problemImage);
                ArrayList<String> list = new ArrayList<>(jsonArray.size());
                for (Object o : jsonArray) {
                    JSONObject jsonObject = JSONObject.parseObject(o.toString());
                    String downloadUrl = null;
                    try {
                        downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                    } catch (UnsupportedEncodingException e) {
                        throw new RuntimeException(e);
                    }
                    list.add(downloadUrl);
                }
                detail.setProblemImage(String.join(",", list));
            }
        }
        return R.ok(detail);
    }
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpChargingRecordService.java
@@ -9,6 +9,8 @@
import com.xiaopeng.maintenance.model.vo.XpChargingRecordVO;
import com.xiaopeng.maintenance.vo.ChargingStatusVO;
import java.io.UnsupportedEncodingException;
/**
 * <p>
 * 车辆充电记录 服务类
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java
@@ -17,6 +17,7 @@
import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
import java.util.List;
/**
@@ -83,7 +84,7 @@
    void saveTask(SaveErrorTaskDto dto, Long reportUserId);
    R<TaskManagementDetailVO> taskDetail(Long id);
    R<TaskManagementDetailVO> taskDetail(Long id) throws UnsupportedEncodingException;
    List<TaskManagementPageListVO> exportList(TaskManagementPageListQuery query);
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpChargingRecordServiceImpl.java
@@ -1,5 +1,7 @@
package com.xiaopeng.maintenance.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
@@ -9,6 +11,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.maintenance.model.query.XpChargingRecordPageQuery;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
@@ -27,6 +30,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -48,6 +52,9 @@
    private XpOperationUserClient xpOperationUserClient;
    @Autowired
    private MongoTemplate mongoTemplate;
    @Autowired
    private AliOssService aliOssService;
    @Override
    public void startCharging(XpChargingRecordStartDTO dto, Long id) {
        // 创建车辆充电记录
@@ -124,7 +131,7 @@
    }
    @Override
    public PageInfo<XpChargingRecordVO> queryChargingByVehicleId(XpChargingRecordPageQuery query) {
    public PageInfo<XpChargingRecordVO> queryChargingByVehicleId(XpChargingRecordPageQuery query){
        // 1. 如果有操作人姓名过滤条件,先查询符合条件的用户ID列表
        List<Long> userIds = null;
        if (StringUtils.isNotBlank(query.getOperationsUserName())) {
@@ -208,6 +215,65 @@
                    String userName = userNameMap.get(chargingRecord.getEndOperationsUserId());
                    vo.setOperatorEndName(userName);
                }
                String vehiclePictures = vo.getVehiclePictures();
                if (StringUtils.isNotBlank(vehiclePictures)) {
                    JSONArray jsonArray = JSONArray.parseArray(vehiclePictures);
                    ArrayList<String> list = new ArrayList<>(jsonArray.size());
                    for (Object o : jsonArray) {
                        JSONObject jsonObject = JSONObject.parseObject(o.toString());
                        String downloadUrl = null;
                        try {
                            downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                        } catch (UnsupportedEncodingException e) {
                            throw new RuntimeException(e);
                        }
                        list.add(downloadUrl);
                    }
                    vo.setVehiclePictures(String.join(",", list));
                }
                String startChargingPicture = vo.getStartChargingPicture();
                if (StringUtils.isNotBlank(startChargingPicture)) {
                    JSONArray jsonArray = JSONArray.parseArray(startChargingPicture);
                    ArrayList<String> list = new ArrayList<>(jsonArray.size());
                    for (Object o : jsonArray) {
                        JSONObject jsonObject = JSONObject.parseObject(o.toString());
                        String downloadUrl = null;
                        try {
                            downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                        } catch (UnsupportedEncodingException e) {
                            throw new RuntimeException(e);
                        }
                        list.add(downloadUrl);
                    }
                    vo.setStartChargingPicture(String.join(",", list));
                }
                String endChargingPicture = vo.getEndChargingPicture();
                if (StringUtils.isNotBlank(endChargingPicture)) {
                    JSONArray jsonArray = JSONArray.parseArray(endChargingPicture);
                    ArrayList<String> list = new ArrayList<>(jsonArray.size());
                    for (Object o : jsonArray) {
                        JSONObject jsonObject = JSONObject.parseObject(o.toString());
                        String downloadUrl = null;
                        try {
                            downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                        } catch (UnsupportedEncodingException e) {
                            throw new RuntimeException(e);
                        }
                        list.add(downloadUrl);
                    }
                    vo.setEndChargingPicture(String.join(",", list));
                }
                records.add(vo);
            }
        }
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -1,6 +1,7 @@
package com.xiaopeng.maintenance.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -27,6 +28,7 @@
import com.xiaopeng.common.core.enums.TaskTypeNotificationEnum;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.maintenance.constant.I18nKeyConstant;
import com.xiaopeng.maintenance.dto.HandleVehicleAccidentDto;
import com.xiaopeng.maintenance.dto.SaveErrorTaskDto;
@@ -61,6 +63,7 @@
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
@@ -133,6 +136,9 @@
    @Resource
    private XpFleetOperationsClient xpFleetOperationsClient;
    @Resource
    private AliOssService aliOssService;
    @Override
    public PageInfo<WorkBenchVO> workbench(WorkBenchQuery query) {
@@ -1301,7 +1307,7 @@
    }
    @Override
    public R<TaskManagementDetailVO> taskDetail(Long id) {
    public R<TaskManagementDetailVO> taskDetail(Long id) throws UnsupportedEncodingException {
        TaskManagementDetailVO managementDetailVO = new TaskManagementDetailVO();
        XpTask task = this.getById(id);
        if (task == null) {
@@ -1333,7 +1339,13 @@
                    taskManagementDetectionDetailVO.setVehicleCode(vehicle.getVehicleCode());
                    taskManagementDetectionDetailVO.setVehicleVin(vehicle.getVehicleVin());
                    taskManagementDetectionDetailVO.setVehicleLocation(task.getVehicleLocation());
                    taskManagementDetectionDetailVO.setVehiclePictures(vehicle.getVehiclePictures());
                    if(vehicle.getVehiclePictures()!=null){
                        JSONObject jsonObject = JSONObject.parseObject(vehicle.getVehiclePictures());
                        String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                        taskManagementDetectionDetailVO.setVehiclePictures(downloadUrl);
                    }
                    taskManagementDetectionDetailVO.setTaskCode(task.getTaskCode());
                    XpVehicleDetection vehicleDetection = vehicleDetectionMapper.selectOne(new LambdaQueryWrapper<XpVehicleDetection>()
                            .eq(XpVehicleDetection::getTaskId, id).last("limit 1"));
@@ -1345,15 +1357,108 @@
                        taskManagementDetectionDetailVO.setCollisionPrevention(vehicleDetection.getCollisionPrevention());
                        taskManagementDetectionDetailVO.setSensorSelfCheck(vehicleDetection.getSensorSelfCheck());
                        taskManagementDetectionDetailVO.setSensorCleaning(vehicleDetection.getSensorCleaning());
                        taskManagementDetectionDetailVO.setSensorCleaningPicture(vehicleDetection.getSensorCleaningPicture());
                        String SensorCleaningPicture = vehicleDetection.getSensorCleaningPicture();
                        if (StringUtils.isNotBlank(SensorCleaningPicture)) {
                            JSONArray jsonArray = JSONArray.parseArray(SensorCleaningPicture);
                            ArrayList<String> list = new ArrayList<>(jsonArray.size());
                            for (Object o : jsonArray) {
                                JSONObject jsonObject = JSONObject.parseObject(o.toString());
                                String downloadUrl = null;
                                try {
                                    downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                                } catch (UnsupportedEncodingException e) {
                                    throw new RuntimeException(e);
                                }
                                list.add(downloadUrl);
                            }
                            taskManagementDetectionDetailVO.setSensorCleaningPicture(String.join(",", list));
                        }
                        taskManagementDetectionDetailVO.setInteractiveScreen(vehicleDetection.getInteractiveScreen());
                        taskManagementDetectionDetailVO.setInteractiveScreenPicture(vehicleDetection.getInteractiveScreenPicture());
                        String InteractiveScreenPicture =vehicleDetection.getInteractiveScreenPicture();
                        if (StringUtils.isNotBlank(InteractiveScreenPicture)) {
                            JSONArray jsonArray = JSONArray.parseArray(InteractiveScreenPicture);
                            ArrayList<String> list = new ArrayList<>(jsonArray.size());
                            for (Object o : jsonArray) {
                                JSONObject jsonObject = JSONObject.parseObject(o.toString());
                                String downloadUrl = null;
                                try {
                                    downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                                } catch (UnsupportedEncodingException e) {
                                    throw new RuntimeException(e);
                                }
                                list.add(downloadUrl);
                            }
                            taskManagementDetectionDetailVO.setInteractiveScreenPicture(String.join(",", list));
                        }
                        taskManagementDetectionDetailVO.setHelpButton(vehicleDetection.getHelpButton());
                        taskManagementDetectionDetailVO.setHelpButtonPicture(vehicleDetection.getHelpButtonPicture());
                        String HelpButtonPicture =vehicleDetection.getHelpButtonPicture();
                        if (StringUtils.isNotBlank(HelpButtonPicture)) {
                            JSONArray jsonArray = JSONArray.parseArray(HelpButtonPicture);
                            ArrayList<String> list = new ArrayList<>(jsonArray.size());
                            for (Object o : jsonArray) {
                                JSONObject jsonObject = JSONObject.parseObject(o.toString());
                                String downloadUrl = null;
                                try {
                                    downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                                } catch (UnsupportedEncodingException e) {
                                    throw new RuntimeException(e);
                                }
                                list.add(downloadUrl);
                            }
                            taskManagementDetectionDetailVO.setHelpButtonPicture(String.join(",", list));
                        }
                        taskManagementDetectionDetailVO.setPaymentFunction(vehicleDetection.getPaymentFunction());
                        taskManagementDetectionDetailVO.setPaymentFunctionPicture(vehicleDetection.getPaymentFunctionPicture());
                        String PaymentFunctionPicture =vehicleDetection.getPaymentFunctionPicture();
                        if (StringUtils.isNotBlank(PaymentFunctionPicture)) {
                            JSONArray jsonArray = JSONArray.parseArray(PaymentFunctionPicture);
                            ArrayList<String> list = new ArrayList<>(jsonArray.size());
                            for (Object o : jsonArray) {
                                JSONObject jsonObject = JSONObject.parseObject(o.toString());
                                String downloadUrl = null;
                                try {
                                    downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                                } catch (UnsupportedEncodingException e) {
                                    throw new RuntimeException(e);
                                }
                                list.add(downloadUrl);
                            }
                            taskManagementDetectionDetailVO.setPaymentFunctionPicture(String.join(",", list));
                        }
                        taskManagementDetectionDetailVO.setSystemCheck(vehicleDetection.getSystemCheck());
                        taskManagementDetectionDetailVO.setSystemCheckPicture(vehicleDetection.getSystemCheckPicture());
                        String SystemCheckPicture =vehicleDetection.getSystemCheckPicture();
                        if (StringUtils.isNotBlank(SystemCheckPicture)) {
                            JSONArray jsonArray = JSONArray.parseArray(SystemCheckPicture);
                            ArrayList<String> list = new ArrayList<>(jsonArray.size());
                            for (Object o : jsonArray) {
                                JSONObject jsonObject = JSONObject.parseObject(o.toString());
                                String downloadUrl = null;
                                try {
                                    downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                                } catch (UnsupportedEncodingException e) {
                                    throw new RuntimeException(e);
                                }
                                list.add(downloadUrl);
                            }
                            taskManagementDetectionDetailVO.setSystemCheckPicture(String.join(",", list));
                        }
                        taskManagementDetectionDetailVO.setCheckTime(vehicleDetection.getCheckTime());
                        taskManagementDetectionDetailVO.setOperationsUserId(vehicleDetection.getOperationsUserId());
                        if (vehicleDetection.getOperationsUserId() != null) {
@@ -1626,6 +1731,9 @@
            managementDetailVO.setAccidentDetailVO(res);
        }
        return R.ok(managementDetailVO);
    }
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpVehicleRepairServiceImpl.java
@@ -1,5 +1,7 @@
package com.xiaopeng.maintenance.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,6 +14,7 @@
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.maintenance.dto.XpVehicleRepairReturnDTO;
import com.xiaopeng.maintenance.dto.XpVehicleRepairStartDTO;
import com.xiaopeng.maintenance.mapper.XpVehicleRepairMapper;
@@ -26,6 +29,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -45,6 +49,9 @@
    private XpVehicleClient xpVehicleClient;
    @Autowired
    private XpOperationUserClient xpOperationUserClient;
    @Autowired
    private AliOssService aliOssService;
    @Override
    public XpVehicleRepairVO repairDetail(Long id) {
@@ -161,6 +168,51 @@
                    String userName = userNameMap.get(chargingRecord.getReturnUserId());
                    vo.setOperatorEndName(userName);
                }
                String RepairMoneyDetail = vo.getRepairMoneyDetail();
                if (StringUtils.isNotBlank(RepairMoneyDetail)) {
                    JSONArray jsonArray = JSONArray.parseArray(RepairMoneyDetail);
                    ArrayList<String> list = new ArrayList<>(jsonArray.size());
                    for (Object o : jsonArray) {
                        JSONObject jsonObject = JSONObject.parseObject(o.toString());
                        String downloadUrl = null;
                        try {
                            downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                        } catch (UnsupportedEncodingException e) {
                            throw new RuntimeException(e);
                        }
                        list.add(downloadUrl);
                    }
                    vo.setRepairMoneyDetail(String.join(",", list));
                }
                String StartRepairPicture = vo.getStartRepairPicture();
                if (StringUtils.isNotBlank(StartRepairPicture)) {
                    JSONArray jsonArray = JSONArray.parseArray(StartRepairPicture);
                    ArrayList<String> list = new ArrayList<>(jsonArray.size());
                    for (Object o : jsonArray) {
                        JSONObject jsonObject = JSONObject.parseObject(o.toString());
                        String downloadUrl = null;
                        try {
                            downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                        } catch (UnsupportedEncodingException e) {
                            throw new RuntimeException(e);
                        }
                        list.add(downloadUrl);
                    }
                    vo.setStartRepairPicture(String.join(",", list));
                }
                records.add(vo);
            }
        }
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mangodb/service/impl/XpGeoFencingPolygonServiceImpl.java
@@ -87,7 +87,7 @@
     * @param latitude 纬度
     * @param fenceId 围栏ID
     * @param collectionName 集合名称
     * @return 是否在围栏中
     * @return 是否在围栏中 true在 false不在
     */
    public boolean isInFence(double longitude, double latitude, String fenceId, String collectionName) {
        if (fenceId == null || fenceId.trim().isEmpty()) {
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
@@ -109,6 +109,22 @@
    }
    public static void main(String[] args) {
        String url = "https://tsapi.amap.com/v1/route/price?key=" + "66ae577f63898dae3016d599fda57221" + "&extensions=all&start=" +"113.384932" + "," + "23.155455";
        HashMap<String, Object> params = new HashMap<>();
        params.put("extensions", "all");
        params.put("start", "113.384932" + "," + "23.155455");
        params.put("end", "113.388209" + "," + "23.163455");
        params.put("routeUserType",2);
        log.info("高德地图接口:{}", url);
        log.info("高德地图参数:{}", params);
        String post = HttpUtils.post(url, JSON.toJSONString(params));
        log.info("高德地图返回结果:"+ post);
        JSONObject jsonObject = JSON.parseObject(post);
        System.out.println(jsonObject);
    }
    class ArrayPointsTask extends RecursiveTask<Long>{
        //最大定位集合阈值
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpBannerManagementController.java
@@ -1,10 +1,13 @@
package com.xiaopeng.operation.controller;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.xiaopeng.api.model.operation.XpBanner;
import com.xiaopeng.api.model.operation.XpWhitelist;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.controller.BaseController;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.operation.query.BannerPageListQuery;
import com.xiaopeng.operation.query.WhitelistPageListQuery;
import com.xiaopeng.operation.service.XpBannerService;
@@ -14,6 +17,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.io.UnsupportedEncodingException;
import java.util.List;
@Slf4j
@@ -24,9 +28,11 @@
    // banner实现类
    private final XpBannerService xpBannerService;
    private final AliOssService aliOssService;
    public XpBannerManagementController(XpBannerService xpBannerService) {
    public XpBannerManagementController(XpBannerService xpBannerService, AliOssService aliOssService) {
        this.xpBannerService = xpBannerService;
        this.aliOssService = aliOssService;
    }
@@ -51,7 +57,19 @@
    @ApiOperation(value = "详情banner")
    @GetMapping("/detailBanner")
    public R<XpBanner> detailBanner(Long id) {
        return R.ok(xpBannerService.getById(id));
        XpBanner xpBanner = xpBannerService.getById(id);
        JSONObject jsonObject = JSON.parseArray(xpBanner.getBannerPictures()).getJSONObject(0);
        String downloadUrl = null;
        try {
            downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
        xpBanner.setBannerPictures(downloadUrl);
        return R.ok(xpBanner);
    }
    @ApiOperation(value = "删除banner")
    @DeleteMapping("/deleteBanner")
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpBannerServiceImpl.java
@@ -68,6 +68,16 @@
    public PageInfo<XpBanner> pageList(BannerPageListQuery query) {
        PageInfo<XpBanner> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<XpBanner> list = this.baseMapper.pageList(pageInfo, query);
        for (XpBanner xpBanner : list) {
            JSONObject jsonObject = JSON.parseArray(xpBanner.getBannerPictures()).getJSONObject(0);
            String downloadUrl = null;
            try {
                downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
            xpBanner.setBannerPictures(downloadUrl);
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpRideGuideServiceImpl.java
@@ -2,7 +2,10 @@
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.operation.dto.XpRideGuideDTO;
import com.xiaopeng.operation.mapper.XpRideGuideMapper;
import com.xiaopeng.api.model.operation.XpRideGuide;
@@ -14,6 +17,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.util.Collections;
import java.util.List;
@@ -27,6 +32,13 @@
 */
@Service
public class XpRideGuideServiceImpl extends ServiceImpl<XpRideGuideMapper, XpRideGuide> implements XpRideGuideService {
    @Resource
    private AliOssService aliOssService;
    /**
@@ -48,7 +60,19 @@
     */
    @Override
    public List<XpRideGuide> getGideList() {
        return list();
        List<XpRideGuide> list = list();
        for (XpRideGuide xpRideGuide : list) {
            JSONObject jsonObject = JSON.parseObject(xpRideGuide.getGuideImage());
            String downloadUrl = null;
            try {
                downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
            } catch (UnsupportedEncodingException e) {
                throw new RuntimeException(e);
            }
            xpRideGuide.setGuideImage(downloadUrl);
        }
        return list;
    }
    /**
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpUserFeedbackServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaopeng.api.dto.account.UcUserInfo;
@@ -9,6 +10,7 @@
import com.xiaopeng.api.model.operation.XpFeedbackType;
import com.xiaopeng.api.model.operation.XpUserFeedback;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.operation.mapper.XpUserFeedbackMapper;
import com.xiaopeng.operation.query.UserFeedBackQuery;
import com.xiaopeng.operation.service.IXpFeedbackTypeService;
@@ -20,6 +22,7 @@
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.util.*;
import java.util.stream.Collectors;
@@ -36,6 +39,7 @@
public class XpUserFeedbackServiceImpl extends ServiceImpl<XpUserFeedbackMapper, XpUserFeedback> implements IXpUserFeedbackService {
    private final UserResourcesClient userResourcesClient;
    private final IXpFeedbackTypeService xpFeedbackTypeService;
    private final AliOssService aliOssService;
    @Override
    public PageInfo<XpUserFeedbackVO> getPageList(UserFeedBackQuery query) {
@@ -73,6 +77,29 @@
        pageInfo.setTotal(page.getTotal());
        pageInfo.setSize(page.getSize());
        pageInfo.setPages(page.getPages());
        for (XpUserFeedbackVO xpUserFeedbackVO : xpUserFeedbackVOS) {
            String feedbackPictures = xpUserFeedbackVO.getFeedbackPictures();
            if (StringUtils.isNotBlank(feedbackPictures)) {
                JSONArray jsonArray = JSONArray.parseArray(feedbackPictures);
                ArrayList<String> list = new ArrayList<>(jsonArray.size());
                for (Object o : jsonArray) {
                    JSONObject jsonObject = JSONObject.parseObject(o.toString());
                    String downloadUrl = null;
                    try {
                        downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                    } catch (UnsupportedEncodingException e) {
                        throw new RuntimeException(e);
                    }
                    list.add(downloadUrl);
                }
                xpUserFeedbackVO.setFeedbackPictures(String.join(",", list));
            }
        }
        pageInfo.setRecords(xpUserFeedbackVOS);
        return pageInfo;
    }
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -29,6 +29,7 @@
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.evi.oss.service.AliOssService;
import com.xiaopeng.vehicleConvoy.constant.I18nKeyConstant;
import com.xiaopeng.vehicleConvoy.model.dto.*;
import com.xiaopeng.vehicleConvoy.model.exportExcel.XpVehicleExportExcel;
@@ -63,10 +64,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.ArrayList;
@@ -107,6 +105,7 @@
    private final MessageSource messageSource;
    private final TokenService tokenService;
    private final XpVehicleRepairClient xpVehicleRepairClient;
    private final AliOssService aliOssService;
    /**
     * 根据ID列表批量查询车辆信息(内部接口)
     *
@@ -138,9 +137,17 @@
     * @return 车辆列表
     */
    @GetMapping("/inner/vehicle/queryById")
    public R<XpVehicle> queryById(@RequestParam Long id) {
    public R<XpVehicle> queryById(@RequestParam Long id) throws UnsupportedEncodingException {
        XpVehicle xpVehicle = xpVehicleService.getById(id);
        if (Objects.nonNull(xpVehicle)) {
            String vehiclePictures = xpVehicle.getVehiclePictures();
            if(vehiclePictures!=null){
                JSONObject jsonObject = JSON.parseObject(vehiclePictures);
                String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                xpVehicle.setVehiclePictures(downloadUrl);
            }
            // 获取车队
            XpFleetVehicle xpFleetVehicle = vehicleService.getOne(new LambdaQueryWrapper<XpFleetVehicle>().eq(XpFleetVehicle::getVehicleId, xpVehicle.getId()));
            if (Objects.nonNull(xpFleetVehicle)) {
@@ -702,7 +709,7 @@
    @ApiOperation(value = "通过车辆id查询年检分页列表", tags = {"管理后台-车辆管理-运营车辆管理"})
    @PostMapping("/api/v1/vehicle/queryTaskRoutineByVehicleId")
    public R<PageInfo<XpVehicleAnnualRecord>> queryTaskRoutineByVehicleId(
            @Valid @RequestBody XpVehicleAnnualRecordPageQuery query){
            @Valid @RequestBody XpVehicleAnnualRecordPageQuery query) throws UnsupportedEncodingException {
        return R.ok(xpVehicleAnnualRecordService.queryTaskRoutineByVehicleId(query));
    }
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/IXpVehicleAnnualRecordService.java
@@ -5,6 +5,8 @@
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.vehicleConvoy.model.query.XpVehicleAnnualRecordPageQuery;
import java.io.UnsupportedEncodingException;
/**
 * <p>
 * 车辆年检信息修改记录 服务类
@@ -19,5 +21,5 @@
     * @param query
     * @return
     */
    PageInfo<XpVehicleAnnualRecord> queryTaskRoutineByVehicleId(XpVehicleAnnualRecordPageQuery query);
    PageInfo<XpVehicleAnnualRecord> queryTaskRoutineByVehicleId(XpVehicleAnnualRecordPageQuery query) throws UnsupportedEncodingException;
}
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleAnnualRecordServiceImpl.java
@@ -1,9 +1,12 @@
package com.xiaopeng.vehicleConvoy.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicleAnnualRecord;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.evi.oss.service.AliOssService;
import com.xiaopeng.vehicleConvoy.mapper.XpVehicleAnnualRecordMapper;
import com.xiaopeng.vehicleConvoy.model.query.XpVehicleAnnualRecordPageQuery;
import com.xiaopeng.vehicleConvoy.service.IXpVehicleAnnualRecordService;
@@ -13,8 +16,12 @@
import org.bouncycastle.jcajce.provider.symmetric.AES;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
@@ -27,8 +34,12 @@
 */
@Service
public class XpVehicleAnnualRecordServiceImpl extends ServiceImpl<XpVehicleAnnualRecordMapper, XpVehicleAnnualRecord> implements IXpVehicleAnnualRecordService {
    @Resource
    private AliOssService aliOssService;
    @Override
    public PageInfo<XpVehicleAnnualRecord> queryTaskRoutineByVehicleId(XpVehicleAnnualRecordPageQuery query) {
    public PageInfo<XpVehicleAnnualRecord> queryTaskRoutineByVehicleId(XpVehicleAnnualRecordPageQuery query) throws UnsupportedEncodingException {
        // 构建分页参数
        PageInfo<XpVehicleAnnualRecord> page = new PageInfo<>();
        LambdaQueryWrapper<XpVehicleAnnualRecord> wrapper = new LambdaQueryWrapper<>();
@@ -41,6 +52,55 @@
        wrapper.like(StringUtils.isNotBlank(query.getOperationsUserName()), XpVehicleAnnualRecord::getCreateBy, query.getOperationsUserName());
        wrapper.eq(XpVehicleAnnualRecord::getVehicleId, query.getVehicleId());
        wrapper.orderByDesc(XpVehicleAnnualRecord::getCreateTime);
        return this.page(page, wrapper);
        PageInfo<XpVehicleAnnualRecord> pageInfo = this.page(page, wrapper);
        List<XpVehicleAnnualRecord> records = pageInfo.getRecords();
        for (XpVehicleAnnualRecord record : records) {
            String inspectionAttachments = record.getInspectionAttachments();
            if (StringUtils.isNotBlank(inspectionAttachments)) {
                JSONArray jsonArray = JSONArray.parseArray(inspectionAttachments);
                ArrayList<String> list = new ArrayList<>(jsonArray.size());
                for (Object o : jsonArray) {
                    JSONObject jsonObject = JSONObject.parseObject(o.toString());
                    String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                    list.add(downloadUrl);
                }
                record.setInspectionAttachments(String.join(",", list));
            }
            String operationQualification = record.getOperationQualification();
            if (StringUtils.isNotBlank(operationQualification)) {
                JSONArray jsonArray = JSONArray.parseArray(operationQualification);
                ArrayList<String> list = new ArrayList<>(jsonArray.size());
                for (Object o : jsonArray) {
                    JSONObject jsonObject = JSONObject.parseObject(o.toString());
                    String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                    list.add(downloadUrl);
                }
                record.setOperationQualification(String.join(",", list));
            }
            String policyInformation = record.getPolicyInformation();
            if (StringUtils.isNotBlank(policyInformation)) {
                JSONArray jsonArray = JSONArray.parseArray(policyInformation);
                ArrayList<String> list = new ArrayList<>(jsonArray.size());
                for (Object o : jsonArray) {
                    JSONObject jsonObject = JSONObject.parseObject(o.toString());
                    String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
                    list.add(downloadUrl);
                }
                record.setPolicyInformation(String.join(",", list));
            }
        }
        pageInfo.setRecords( records);
        return pageInfo;
    }
}