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

104 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 流水导入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分钟
- **部署风险**:极低(仅扩展支持范围,不影响现有功能)