docs: 添加流水导入CSV和PDF文件格式支持设计文档
This commit is contained in:
103
docs/plans/2026-03-09-csv-pdf-upload-support-design.md
Normal file
103
docs/plans/2026-03-09-csv-pdf-upload-support-design.md
Normal file
@@ -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分钟
|
||||
- **部署风险**:极低(仅扩展支持范围,不影响现有功能)
|
||||
Reference in New Issue
Block a user