diff --git a/docs/plans/2026-03-09-csv-pdf-upload-support.md b/docs/plans/2026-03-09-csv-pdf-upload-support.md new file mode 100644 index 0000000..c035695 --- /dev/null +++ b/docs/plans/2026-03-09-csv-pdf-upload-support.md @@ -0,0 +1,157 @@ +# 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行,修改校验逻辑: + +**修改前:** +```java +if (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls")) { + return AjaxResult.error("文件 " + fileName + " 格式不支持,仅支持Excel文件"); +} +``` + +**修改后:** +```java +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. 选择 projectId(如:1) +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: 查看修改状态** + +运行: +```bash +cd D:/ccdi/ccdi +git status +``` + +预期输出: +``` +modified: ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiFileUploadController.java +``` + +**步骤2: 提交代码** + +```bash +git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/CcdiFileUploadController.java +git commit -m "feat(ccdi-project): 流水导入支持CSV和PDF文件格式" +``` + +**步骤3: 推送到远程仓库(可选)** + +```bash +git push origin dev +``` + +--- + +## 实施检查清单 + +- [ ] 后端文件类型校验已修改 +- [ ] CSV文件上传测试通过(Swagger) +- [ ] PDF文件上传测试通过(Swagger) +- [ ] 大小写不敏感测试通过 +- [ ] 不支持格式被正确拒绝 +- [ ] 前端CSV上传功能正常 +- [ ] 前端PDF上传功能正常 +- [ ] 代码已提交到git + +--- + +## 注意事项 + +1. **测试文件准备**: 准备好 `.csv`、`.pdf`、`.xlsx`、`.txt` 格式的测试文件 +2. **文件大小**: 测试文件不超过50MB +3. **流水分析平台**: 确认平台支持CSV和PDF格式(已确认支持) +4. **不影响现有功能**: Excel文件上传功能保持不变