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