Files
ccdi/docs/plans/2026-03-09-csv-pdf-upload-support.md

3.9 KiB
Raw Blame History

CSV和PDF文件上传支持实施计划

For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.

目标: 扩展流水导入功能支持CSV和PDF格式文件上传

架构: 修改后端文件类型校验逻辑,添加 .csv.pdf 支持,使前后端校验规则一致

技术栈: Spring Boot 3.5.8, Java 21, MyBatis Plus


任务1: 修改后端文件类型校验

文件:

  • 修改: ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiFileUploadController.java:65-67

步骤1: 修改文件类型校验逻辑

定位到 CcdiFileUploadController.java 第65-67行修改校验逻辑

修改前:

if (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls")) {
    return AjaxResult.error("文件 " + fileName + " 格式不支持仅支持Excel文件");
}

修改后:

String lowerFileName = fileName.toLowerCase();
if (!lowerFileName.endsWith(".xlsx") && !lowerFileName.endsWith(".xls")
    && !lowerFileName.endsWith(".csv") && !lowerFileName.endsWith(".pdf")) {
    return AjaxResult.error("文件 " + fileName + " 格式不支持,仅支持 PDF、CSV、Excel 文件");
}

步骤2: 验证修改

  • 确认代码语法正确
  • 确认导入语句无缺失(无需新增导入)

任务2: 通过Swagger测试接口

前置条件: 后端服务已启动端口8080

步骤1: 访问Swagger UI

浏览器打开: http://localhost:8080/swagger-ui/index.html

步骤2: 测试CSV文件上传

  1. 找到 POST /upload/batch/{projectId} 接口
  2. 点击 "Try it out"
  3. 选择 projectId1
  4. 上传一个 .csv 测试文件
  5. 点击 "Execute"
  6. 预期结果: 返回成功响应,包含 batchId

步骤3: 测试PDF文件上传

  1. 使用同一接口
  2. 上传一个 .pdf 测试文件
  3. 预期结果: 返回成功响应,包含 batchId

步骤4: 测试大小写不敏感

  1. 上传文件名为 .CSV(大写)的文件
  2. 预期结果: 返回成功响应

步骤5: 测试不支持格式

  1. 上传 .txt 文件
  2. 预期结果: 返回错误 "格式不支持,仅支持 PDF、CSV、Excel 文件"

任务3: 前端功能验证

前置条件: 前端服务已启动端口80

步骤1: 访问前端页面

浏览器打开: http://localhost

登录账号: admin / admin123

步骤2: 进入项目详情页面

导航到: 项目管理 → 选择项目 → 详情 → 数据上传

步骤3: 测试CSV文件上传

  1. 点击 "批量上传" 按钮
  2. 拖拽或选择 .csv 文件
  3. 点击 "开始上传"
  4. 预期结果: 文件成功上传,无格式错误提示

步骤4: 测试PDF文件上传

  1. 选择 .pdf 文件
  2. 点击 "开始上传"
  3. 预期结果: 文件成功上传,无格式错误提示

任务4: 提交代码

步骤1: 查看修改状态

运行:

cd D:/ccdi/ccdi
git status

预期输出:

modified:   ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiFileUploadController.java

步骤2: 提交代码

git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiFileUploadController.java
git commit -m "feat(ccdi-project): 流水导入支持CSV和PDF文件格式"

步骤3: 推送到远程仓库(可选)

git push origin dev

实施检查清单

  • 后端文件类型校验已修改
  • CSV文件上传测试通过Swagger
  • PDF文件上传测试通过Swagger
  • 大小写不敏感测试通过
  • 不支持格式被正确拒绝
  • 前端CSV上传功能正常
  • 前端PDF上传功能正常
  • 代码已提交到git

注意事项

  1. 测试文件准备: 准备好 .csv.pdf.xlsx.txt 格式的测试文件
  2. 文件大小: 测试文件不超过50MB
  3. 流水分析平台: 确认平台支持CSV和PDF格式已确认支持
  4. 不影响现有功能: Excel文件上传功能保持不变