3.1 KiB
3.1 KiB
流水导入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行
修改前:
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 文件");
}
改进点
- 添加格式支持:支持
.csv和.pdf文件 - 大小写不敏感:使用
toLowerCase()处理文件名,支持.CSV、.Pdf等扩展名变体 - 错误提示优化:与前端提示保持一致,用户体验更统一
技术要点
文件格式与流水分析平台兼容性
- 流水分析平台API已支持CSV文件上传(根据前期探索确认)
- PDF格式同样被平台接受
- 后端只负责文件类型校验,实际解析由流水分析平台处理
后续无需修改的部分
- 前端代码已正确配置,无需修改
- 文件上传服务(
CcdiFileUploadServiceImpl)无需修改 - 数据库表结构无需修改
测试要点
功能测试
- 上传
.csv文件 → 成功 - 上传
.pdf文件 → 成功 - 上传
.xlsx文件 → 成功(原有功能) - 上传
.xls文件 → 成功(原有功能) - 上传
.txt文件 → 失败,提示格式不支持
边界测试
- 上传
.CSV(大写)→ 成功 - 上传
.Csv(混合大小写)→ 成功 - 上传其他格式文件 → 失败
风险评估
| 风险 | 级别 | 应对措施 |
|---|---|---|
| 流水分析平台不支持某些CSV/PDF变体 | 低 | 平台已确认支持,后端不做内容校验 |
| 文件大小超限 | 无 | 已有50MB限制,无需额外处理 |
实施步骤
- 修改
CcdiFileUploadController.java第65-67行代码 - 启动后端服务
- 通过Swagger或前端页面测试各种格式文件上传
- 验证错误提示正确显示
预计影响
- 代码改动量:1个文件,约3行代码
- 测试工作量:约10分钟
- 部署风险:极低(仅扩展支持范围,不影响现有功能)