文件夹整理
This commit is contained in:
@@ -1,215 +0,0 @@
|
||||
# 采购交易导入失败记录接口修复说明
|
||||
|
||||
## 问题描述
|
||||
|
||||
采购交易管理的导入失败记录列表无法展示。对话框能打开,但表格为空。
|
||||
|
||||
## 根本原因
|
||||
|
||||
通过代码对比分析,发现采购交易管理的导入失败记录接口与项目中其他模块(员工、中介)的实现不一致:
|
||||
|
||||
### 问题代码
|
||||
|
||||
**文件**: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiPurchaseTransactionController.java`
|
||||
|
||||
**原代码 (第179-183行)**:
|
||||
```java
|
||||
@GetMapping("/importFailures/{taskId}")
|
||||
public AjaxResult getImportFailures(@PathVariable String taskId) {
|
||||
List<PurchaseTransactionImportFailureVO> failures = transactionImportService.getImportFailures(taskId);
|
||||
return success(failures); // ❌ 直接返回所有数据,没有分页
|
||||
}
|
||||
```
|
||||
|
||||
**问题点**:
|
||||
1. 返回类型是 `AjaxResult`,而不是 `TableDataInfo`
|
||||
2. 没有 `pageNum` 和 `pageSize` 分页参数
|
||||
3. 没有实现分页逻辑
|
||||
4. 返回数据结构是 `{code: 200, data: [...]}` 而不是 `{code: 200, rows: [...], total: xxx}`
|
||||
|
||||
### 正确实现 (参考中介模块)
|
||||
|
||||
**文件**: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiIntermediaryController.java`
|
||||
|
||||
```java
|
||||
@GetMapping("/importPersonFailures/{taskId}")
|
||||
public TableDataInfo getPersonImportFailures(
|
||||
@PathVariable String taskId,
|
||||
@RequestParam(defaultValue = "1") Integer pageNum, // ✅ 支持分页
|
||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
||||
|
||||
List<IntermediaryPersonImportFailureVO> failures = personImportService.getImportFailures(taskId);
|
||||
|
||||
// ✅ 手动分页
|
||||
int fromIndex = (pageNum - 1) * pageSize;
|
||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
||||
List<IntermediaryPersonImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
||||
|
||||
return getDataTable(pageData, failures.size()); // ✅ 返回TableDataInfo
|
||||
}
|
||||
```
|
||||
|
||||
## 修复方案
|
||||
|
||||
修改 `CcdiPurchaseTransactionController.java` 的 `getImportFailures` 方法:
|
||||
|
||||
### 修改后的代码
|
||||
|
||||
**文件**: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiPurchaseTransactionController.java:173-196`
|
||||
|
||||
```java
|
||||
/**
|
||||
* 查询导入失败记录
|
||||
*/
|
||||
@Operation(summary = "查询导入失败记录")
|
||||
@Parameter(name = "taskId", description = "任务ID", required = true)
|
||||
@Parameter(name = "pageNum", description = "页码", required = false)
|
||||
@Parameter(name = "pageSize", description = "每页条数", required = false)
|
||||
@PreAuthorize("@ss.hasPermi('ccdi:purchaseTransaction:import')")
|
||||
@GetMapping("/importFailures/{taskId}")
|
||||
public TableDataInfo getImportFailures(
|
||||
@PathVariable String taskId,
|
||||
@RequestParam(defaultValue = "1") Integer pageNum,
|
||||
@RequestParam(defaultValue = "10") Integer pageSize) {
|
||||
|
||||
List<PurchaseTransactionImportFailureVO> failures = transactionImportService.getImportFailures(taskId);
|
||||
|
||||
// 手动分页
|
||||
int fromIndex = (pageNum - 1) * pageSize;
|
||||
int toIndex = Math.min(fromIndex + pageSize, failures.size());
|
||||
|
||||
List<PurchaseTransactionImportFailureVO> pageData = failures.subList(fromIndex, toIndex);
|
||||
|
||||
return getDataTable(pageData, failures.size());
|
||||
}
|
||||
```
|
||||
|
||||
### 修改内容
|
||||
|
||||
1. ✅ 修改返回类型: `AjaxResult` → `TableDataInfo`
|
||||
2. ✅ 添加分页参数: `pageNum` 和 `pageSize`
|
||||
3. ✅ 实现手动分页逻辑
|
||||
4. ✅ 使用 `getDataTable()` 方法返回标准分页结构
|
||||
|
||||
### 返回数据结构对比
|
||||
|
||||
**修复前 (AjaxResult)**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{...},
|
||||
{...},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**修复后 (TableDataInfo)**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "查询成功",
|
||||
"rows": [
|
||||
{...},
|
||||
{...},
|
||||
...
|
||||
],
|
||||
"total": 100
|
||||
}
|
||||
```
|
||||
|
||||
## 测试验证
|
||||
|
||||
### 方法1: 使用自动化测试脚本
|
||||
|
||||
1. **启动后端服务**
|
||||
```bash
|
||||
mvn spring-boot:run
|
||||
```
|
||||
|
||||
2. **准备测试数据**
|
||||
- 准备一个包含错误数据的Excel文件
|
||||
- 通过系统界面上传并导入
|
||||
- 记录返回的 `taskId`
|
||||
|
||||
3. **运行测试脚本**
|
||||
```bash
|
||||
cd doc/test-data/purchase_transaction
|
||||
node test-import-failures-api.js <taskId>
|
||||
```
|
||||
|
||||
4. **查看测试结果**
|
||||
- 脚本会验证:
|
||||
- 响应状态码是否为 200
|
||||
- `rows` 字段是否存在且为数组
|
||||
- `total` 字段是否存在
|
||||
- 分页功能是否正常工作
|
||||
|
||||
### 方法2: 使用 Postman/curl 测试
|
||||
|
||||
```bash
|
||||
# 1. 登录获取token
|
||||
curl -X POST "http://localhost:8080/login/test" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"username":"admin","password":"admin123"}'
|
||||
|
||||
# 2. 查询导入失败记录 (替换 <taskId> 和 <token>)
|
||||
curl -X GET "http://localhost:8080/ccdi/purchaseTransaction/importFailures/<taskId>?pageNum=1&pageSize=10" \
|
||||
-H "Authorization: Bearer <token>"
|
||||
```
|
||||
|
||||
**预期响应**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "查询成功",
|
||||
"rows": [
|
||||
{
|
||||
"purchaseId": "PO001",
|
||||
"projectName": "测试项目",
|
||||
"subjectName": "测试标的物",
|
||||
"errorMessage": "采购数量必须大于0"
|
||||
}
|
||||
],
|
||||
"total": 1
|
||||
}
|
||||
```
|
||||
|
||||
### 方法3: 前端界面测试
|
||||
|
||||
1. 访问采购交易管理页面
|
||||
2. 准备包含错误数据的Excel文件并导入
|
||||
3. 等待导入完成
|
||||
4. 点击"查看导入失败记录"按钮
|
||||
5. 验证:
|
||||
- ✅ 对话框能正常打开
|
||||
- ✅ 表格显示失败记录数据
|
||||
- ✅ 顶部显示统计信息
|
||||
- ✅ 分页组件正常显示和工作
|
||||
|
||||
## 影响范围
|
||||
|
||||
- ✅ **后端代码**: `CcdiPurchaseTransactionController.java`
|
||||
- ✅ **前端代码**: 无需修改 (前端代码已正确处理 `TableDataInfo` 格式)
|
||||
- ✅ **数据库**: 无影响
|
||||
- ✅ **其他模块**: 无影响
|
||||
|
||||
## 兼容性说明
|
||||
|
||||
此修复使采购交易模块的导入失败记录接口与项目中其他模块(员工、中介)保持一致,符合项目的统一规范。
|
||||
|
||||
## 相关文件
|
||||
|
||||
- **Controller**: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiPurchaseTransactionController.java`
|
||||
- **前端页面**: `ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue`
|
||||
- **前端API**: `ruoyi-ui/src/api/ccdiPurchaseTransaction.js`
|
||||
- **Service实现**: `ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiPurchaseTransactionImportServiceImpl.java`
|
||||
- **测试脚本**: `doc/test-data/purchase_transaction/test-import-failures-api.js`
|
||||
|
||||
## 变更历史
|
||||
|
||||
| 日期 | 版本 | 变更内容 | 作者 |
|
||||
|------|------|----------|------|
|
||||
| 2026-02-09 | 1.0 | 初始版本,修复导入失败记录接口 | Claude |
|
||||
Reference in New Issue
Block a user