From 7e7b68e678edecb24c70596c7cb068d72975904a Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Mon, 9 Mar 2026 14:04:28 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=B7=BB=E5=8A=A0=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E5=AF=BC=E5=85=A5CSV=E5=92=8CPDF=E6=96=87=E4=BB=B6=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E6=94=AF=E6=8C=81=E8=AE=BE=E8=AE=A1=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...026-03-09-csv-pdf-upload-support-design.md | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 docs/plans/2026-03-09-csv-pdf-upload-support-design.md diff --git a/docs/plans/2026-03-09-csv-pdf-upload-support-design.md b/docs/plans/2026-03-09-csv-pdf-upload-support-design.md new file mode 100644 index 0000000..351fe9e --- /dev/null +++ b/docs/plans/2026-03-09-csv-pdf-upload-support-design.md @@ -0,0 +1,103 @@ +# 流水导入CSV和PDF文件格式支持设计 + +## 概述 + +扩展流水导入功能,支持CSV和PDF格式的文件上传,与前端已有的文件类型配置保持一致。 + +## 背景 + +### 当前问题 + +| 层级 | 当前支持格式 | 问题 | +|------|-------------|------| +| 前端提示 | PDF、CSV、Excel | - | +| 前端校验 | `.pdf`, `.csv`, `.xlsx`, `.xls` | - | +| 后端校验 | 仅 `.xlsx`, `.xls` | ❌ 与前端不一致 | + +**根本原因**:后端 `CcdiFileUploadController.java` 第65行只校验Excel格式,导致上传CSV或PDF文件时被拒绝。 + +## 设计方案 + +### 修改范围 + +| 模块 | 文件 | 修改类型 | +|------|------|---------| +| ccdi-project | CcdiFileUploadController.java | 扩展文件类型校验 | + +### 具体修改 + +**文件路径**:`ccdi-project/src/main/java/com/ruoyi/ccdi/project/controller/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 文件"); +} +``` + +### 改进点 + +1. **添加格式支持**:支持 `.csv` 和 `.pdf` 文件 +2. **大小写不敏感**:使用 `toLowerCase()` 处理文件名,支持 `.CSV`、`.Pdf` 等扩展名变体 +3. **错误提示优化**:与前端提示保持一致,用户体验更统一 + +## 技术要点 + +### 文件格式与流水分析平台兼容性 + +- 流水分析平台API已支持CSV文件上传(根据前期探索确认) +- PDF格式同样被平台接受 +- 后端只负责文件类型校验,实际解析由流水分析平台处理 + +### 后续无需修改的部分 + +- 前端代码已正确配置,无需修改 +- 文件上传服务(`CcdiFileUploadServiceImpl`)无需修改 +- 数据库表结构无需修改 + +## 测试要点 + +### 功能测试 + +1. 上传 `.csv` 文件 → 成功 +2. 上传 `.pdf` 文件 → 成功 +3. 上传 `.xlsx` 文件 → 成功(原有功能) +4. 上传 `.xls` 文件 → 成功(原有功能) +5. 上传 `.txt` 文件 → 失败,提示格式不支持 + +### 边界测试 + +1. 上传 `.CSV`(大写)→ 成功 +2. 上传 `.Csv`(混合大小写)→ 成功 +3. 上传其他格式文件 → 失败 + +## 风险评估 + +| 风险 | 级别 | 应对措施 | +|------|------|---------| +| 流水分析平台不支持某些CSV/PDF变体 | 低 | 平台已确认支持,后端不做内容校验 | +| 文件大小超限 | 无 | 已有50MB限制,无需额外处理 | + +## 实施步骤 + +1. 修改 `CcdiFileUploadController.java` 第65-67行代码 +2. 启动后端服务 +3. 通过Swagger或前端页面测试各种格式文件上传 +4. 验证错误提示正确显示 + +## 预计影响 + +- **代码改动量**:1个文件,约3行代码 +- **测试工作量**:约10分钟 +- **部署风险**:极低(仅扩展支持范围,不影响现有功能)