# 流水导入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分钟 - **部署风险**:极低(仅扩展支持范围,不影响现有功能)