xuhy
2026-02-26 edfe615fe97ed2da4d3bf2c8f8b989afa403e136
Merge remote-tracking branch 'origin/master'

# Conflicts:
# xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
2个文件已添加
6个文件已修改
191 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/map/XpPointExportExcelQuery.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpPointClientFallbackFactory.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpPointClient.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/pom.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/exportExcel/XpPointExportExcel.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointManagementController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpPointMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/map/XpPointExportExcelQuery.java
New file
@@ -0,0 +1,24 @@
package com.xiaopeng.api.dto.map;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * <p>
 * 白名单导出
 * </p>
 *
 * @author mitao
 * @since 2026-02-03
 */
@Data
@ApiModel(value="点位导出查询参数")
public class XpPointExportExcelQuery {
    @ApiModelProperty(value = "点位IDs")
    private List<Long> pointIds;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/operation/XpPointClientFallbackFactory.java
@@ -1,5 +1,6 @@
package com.xiaopeng.api.factory.operation;
import com.xiaopeng.api.dto.map.XpPointExportExcelQuery;
import com.xiaopeng.api.dto.operation.PointAddDto;
import com.xiaopeng.api.dto.operation.PointMapQuery;
import com.xiaopeng.api.dto.operation.PointUpdateDto;
@@ -60,6 +61,12 @@
            }
            @Override
            public R<List<XpPoint>> getByIds(XpPointExportExcelQuery query) {
                log.error("根据点位ids获取点位列表失败:{}", cause.getMessage());
                return R.fail(new ArrayList<>());
            }
            @Override
            public R add(PointAddDto pointAddDto) {
                log.error("新增点位失败:{}", cause.getMessage());
                return R.fail("新增点位失败");
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/operation/XpPointClient.java
@@ -1,5 +1,6 @@
package com.xiaopeng.api.feignClient.operation;
import com.xiaopeng.api.dto.map.XpPointExportExcelQuery;
import com.xiaopeng.api.dto.operation.PointAddDto;
import com.xiaopeng.api.dto.operation.PointMapQuery;
import com.xiaopeng.api.dto.operation.PointUpdateDto;
@@ -36,8 +37,9 @@
    @PostMapping("/api/v1/point/listPoint")
    R<List<XpPoint>> list(@RequestBody PointListQuery query);
    @PostMapping("/api/v1/point/pageList")
    R<PageInfo<XpPoint>> pageList(PointPageListListQuery query);
    R<PageInfo<XpPoint>> pageList(@RequestBody PointPageListListQuery query);
    @PostMapping("/api/v1/point/getByIds")
    R<List<XpPoint>> getByIds(@RequestBody XpPointExportExcelQuery query);
    /**
     * 新增点位
@@ -72,4 +74,6 @@
    R<List<XpPoint>> pointMap(@RequestBody PointMapQuery query);
}
xp-robotaxi-map-boot/pom.xml
@@ -15,6 +15,48 @@
    </description>
    <dependencies>
        <!-- easypoi -->
        <!-- Apache POI 核心依赖 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.3</version>
        </dependency>
        <!-- Apache POI OOXML 支持(用于 .xlsx 文件) -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>
        <!-- Apache POI XMLBeans(可选,用于复杂 XML 处理) -->
        <dependency>
            <groupId>org.apache.xmlbeans</groupId>
            <artifactId>xmlbeans</artifactId>
            <version>5.1.1</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.4.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>guava</artifactId>
                    <groupId>com.google.guava</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.4.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
@@ -1,6 +1,8 @@
package com.xiaopeng.map.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.xiaopeng.api.dto.operation.PointAddDto;
import com.xiaopeng.api.dto.operation.PointUpdateDto;
import com.xiaopeng.api.dto.operation.XpPointEnableDisableDto;
@@ -10,18 +12,28 @@
import com.xiaopeng.api.query.operation.PointListQuery;
import com.xiaopeng.api.query.operation.PointPageListListQuery;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.utils.WebUtils;
import com.xiaopeng.common.core.web.controller.BaseController;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.common.security.service.TokenService;
import com.xiaopeng.map.exportExcel.XpPointExportExcel;
import com.xiaopeng.api.dto.map.XpPointExportExcelQuery;
import io.seata.spring.annotation.GlobalTransactional;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -48,9 +60,47 @@
    @ApiOperation(value = "点位管理分页列表", response = XpPoint.class)
    @PostMapping("/pageList")
    public R<PageInfo<XpPoint>> pageList(@RequestBody PointPageListListQuery query) {
        return xpPointClient.pageList(query);
    }
    @ApiOperation(value = "点位导出")
    @PostMapping(value = "/exportExcel")
    public void exportExcel(@RequestBody XpPointExportExcelQuery query) {
        List<XpPoint> exportList = xpPointClient.getByIds(query).getData();
        List<XpPointExportExcel> xpPointExportExcels = new ArrayList<>();
        for (XpPoint xpPoint : exportList) {
            XpPointExportExcel xpPointExportExcel = new XpPointExportExcel();
            xpPointExportExcel.setPointNumber(xpPoint.getPointNumber());
            xpPointExportExcel.setPointName(xpPoint.getPointName());
            xpPointExportExcel.setStatus(xpPoint.getOperationStatus());
            xpPointExportExcel.setParkingTimeLimit(xpPoint.getParkingTimeLimit()+"分钟");
            xpPointExportExcel.setPointLon(xpPoint.getPointLon());
            xpPointExportExcel.setPointLat(xpPoint.getPointLat());
            xpPointExportExcel.setCreateBy(xpPoint.getCreateBy());
            xpPointExportExcel.setCreateTime(xpPoint.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
            xpPointExportExcels.add(xpPointExportExcel);
        }
        //1.获取excel模板
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpPointExportExcel.class, xpPointExportExcels);
        HttpServletResponse response = WebUtils.response();
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        ServletOutputStream outputStream = null;
        try {
            String fileName = URLEncoder.encode("点位列表.csv", "utf-8");
            response.setHeader("Content-dispodition", "attachment;filename=" + fileName);
            outputStream = response.getOutputStream();
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    @ApiOperation(value = "点位管理列表", response = XpPoint.class)
    @PostMapping("/list")
    public R<List<XpPoint>> list(@RequestBody PointListQuery query) {
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/exportExcel/XpPointExportExcel.java
New file
@@ -0,0 +1,43 @@
package com.xiaopeng.map.exportExcel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * <p>
 * 白名单导出
 * </p>
 *
 * @author mitao
 * @since 2026-02-03
 */
@Data
@ApiModel(value="点位导出")
public class XpPointExportExcel {
    @ApiModelProperty(value = "点位ID")
    @cn.afterturn.easypoi.excel.annotation.Excel(name = "点位ID",width = 20)
    private String pointNumber;
    @ApiModelProperty(value = "点位名称")
    @cn.afterturn.easypoi.excel.annotation.Excel(name = "点位名称",width = 20)
    private String pointName;
    @ApiModelProperty(value = "状态")
    @cn.afterturn.easypoi.excel.annotation.Excel(name = "状态",width = 20,replace = {"待测试_1","测试中_2","测试不通过_3","可运营_4","待生效_5","启用中_6","已停用_7","失效_8",})
    private Integer status;
    @ApiModelProperty(value = "限停时长")
    @cn.afterturn.easypoi.excel.annotation.Excel(name = "限停时长",width = 20)
    private String parkingTimeLimit;
    @ApiModelProperty(value = "经度")
    @cn.afterturn.easypoi.excel.annotation.Excel(name = "经度",width = 20)
    private Double pointLon;
    @ApiModelProperty(value = "纬度")
    @cn.afterturn.easypoi.excel.annotation.Excel(name = "纬度",width = 20)
    private Double pointLat;
    @ApiModelProperty(value = "创建人")
    @cn.afterturn.easypoi.excel.annotation.Excel(name = "创建人",width = 30)
    private String createBy;
    @ApiModelProperty(value = "创建时间")
    @cn.afterturn.easypoi.excel.annotation.Excel(name = "创建时间",width = 30)
    private String createTime;
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointManagementController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.xiaopeng.api.dto.map.XpPointExportExcelQuery;
import com.xiaopeng.api.dto.operation.PointAddDto;
import com.xiaopeng.api.dto.operation.PointUpdateDto;
import com.xiaopeng.api.dto.operation.XpPointEnableDisableDto;
@@ -69,6 +70,11 @@
        PageInfo<XpPoint> pageList = xpPointService.pageList(query);
        return R.ok(pageList);
    }
    @PostMapping("/getByIds")
    public R<List<XpPoint>> getByIds(@RequestBody XpPointExportExcelQuery query){
        List<XpPoint> list = xpPointService.lambdaQuery().in(XpPoint::getId, query.getPointIds()).list();
        return R.ok(list);
    }
    /**
     * 新增点位
     */
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpPointMapper.xml
@@ -147,6 +147,15 @@
            <if test="query.operationStatus ==5">
                and xp.verification_status = 3 and xp.operation_status =1
            </if>
            <if test="query.operationStatus ==6">
                and xp.operation_status =2
            </if>
          <if test="query.operationStatus ==7">
                and xp.operation_status =3
            </if>
          <if test="query.operationStatus ==8">
                and xp.operation_status =4
            </if>
        </if>
        order by xp.create_time desc
    </select>