除员工外 取消导入更新 添加导入文件重复校验
This commit is contained in:
258
doc/test-scripts/test_import_duplicate_detection_cases.md
Normal file
258
doc/test-scripts/test_import_duplicate_detection_cases.md
Normal file
@@ -0,0 +1,258 @@
|
||||
# 导入文件内部主键重复检测功能测试用例
|
||||
|
||||
## 测试目的
|
||||
|
||||
验证导入功能能够正确检测并处理Excel文件内部的主键重复数据,确保:
|
||||
1. 同一Excel文件内重复的主键只会导入第一条,后续重复记录会被跳过
|
||||
2. 提供清晰的错误提示信息
|
||||
3. 正确区分数据库重复和Excel内重复
|
||||
|
||||
## 测试范围
|
||||
|
||||
### 1. 采购交易导入
|
||||
- **主键字段**: purchaseId (采购事项ID)
|
||||
- **接口**: POST /ccdi/purchaseTransaction/importData
|
||||
- **状态查询**: GET /ccdi/purchaseTransaction/importStatus/{taskId}
|
||||
- **失败记录**: GET /ccdi/purchaseTransaction/importFailures/{taskId}
|
||||
|
||||
### 2. 员工信息导入
|
||||
- **主键字段**:
|
||||
- employeeId (柜员号)
|
||||
- idCard (身份证号)
|
||||
- **接口**: POST /ccdi/employee/importData
|
||||
- **状态查询**: GET /ccdi/employee/importStatus/{taskId}
|
||||
- **失败记录**: GET /ccdi/employee/importFailures/{taskId}
|
||||
|
||||
## 测试场景
|
||||
|
||||
### 场景1: Excel内采购事项ID重复
|
||||
|
||||
**测试用例ID**: TEST-PURCHASE-001
|
||||
|
||||
**测试目的**: 验证采购交易导入时Excel内采购事项ID重复的检测
|
||||
|
||||
**测试数据**:
|
||||
```
|
||||
采购事项ID 采购类别 标的物名称 采购数量 预算金额 采购方式 申请人
|
||||
PURCHASE001 类别1 标的物1 10 10000 公开招标 张三
|
||||
PURCHASE001 类别2 标的物2 20 20000 邀请招标 李四
|
||||
PURCHASE001 类别3 标的物3 30 30000 竞争性谈判 王五
|
||||
```
|
||||
|
||||
**测试步骤**:
|
||||
1. 生成包含3条采购事项ID相同的Excel文件
|
||||
2. 调用采购交易导入接口上传文件
|
||||
3. 等待3秒让异步任务完成
|
||||
4. 查询导入状态
|
||||
5. 查询导入失败记录
|
||||
|
||||
**预期结果**:
|
||||
- 导入状态: PARTIAL_SUCCESS (部分成功)
|
||||
- 成功数量: 1 (第1条)
|
||||
- 失败数量: 2 (第2、3条)
|
||||
- 失败记录:
|
||||
- 第1条失败记录: 错误消息包含 "采购事项ID[PURCHASE001]在导入文件中重复,已跳过此条记录"
|
||||
- 第2条失败记录: 错误消息包含 "采购事项ID[PURCHASE001]在导入文件中重复,已跳过此条记录"
|
||||
|
||||
**实际结果**: (待测试)
|
||||
|
||||
**测试结论**: (待测试)
|
||||
|
||||
---
|
||||
|
||||
### 场景2: Excel内员工柜员号重复
|
||||
|
||||
**测试用例ID**: TEST-EMPLOYEE-001
|
||||
|
||||
**测试目的**: 验证员工信息导入时Excel内柜员号重复的检测
|
||||
|
||||
**测试数据**:
|
||||
```
|
||||
姓名 柜员号 所属部门ID 身份证号 电话 入职时间 状态
|
||||
员工1 10001 103 110101199001011234 13800000000 2024-01-01 0
|
||||
员工2 10001 103 110101199001011235 13800000001 2024-01-01 0
|
||||
员工3 10001 103 110101199001011236 13800000002 2024-01-01 0
|
||||
```
|
||||
|
||||
**测试步骤**:
|
||||
1. 生成包含3条柜员号相同的Excel文件
|
||||
2. 调用员工信息导入接口上传文件
|
||||
3. 等待3秒让异步任务完成
|
||||
4. 查询导入状态
|
||||
5. 查询导入失败记录
|
||||
|
||||
**预期结果**:
|
||||
- 导入状态: PARTIAL_SUCCESS (部分成功)
|
||||
- 成功数量: 1 (第1条)
|
||||
- 失败数量: 2 (第2、3条)
|
||||
- 失败记录:
|
||||
- 第1条失败记录: 错误消息包含 "柜员号[10001]在导入文件中重复,已跳过此条记录"
|
||||
- 第2条失败记录: 错误消息包含 "柜员号[10001]在导入文件中重复,已跳过此条记录"
|
||||
|
||||
**实际结果**: (待测试)
|
||||
|
||||
**测试结论**: (待测试)
|
||||
|
||||
---
|
||||
|
||||
### 场景3: Excel内员工身份证号重复
|
||||
|
||||
**测试用例ID**: TEST-EMPLOYEE-002
|
||||
|
||||
**测试目的**: 验证员工信息导入时Excel内身份证号重复的检测
|
||||
|
||||
**测试数据**:
|
||||
```
|
||||
姓名 柜员号 所属部门ID 身份证号 电话 入职时间 状态
|
||||
员工1 10001 103 110101199001011234 13800000000 2024-01-01 0
|
||||
员工2 10002 103 110101199001011234 13800000001 2024-01-01 0
|
||||
员工3 10003 103 110101199001011234 13800000002 2024-01-01 0
|
||||
```
|
||||
|
||||
**测试步骤**:
|
||||
1. 生成包含3条身份证号相同的Excel文件
|
||||
2. 调用员工信息导入接口上传文件
|
||||
3. 等待3秒让异步任务完成
|
||||
4. 查询导入状态
|
||||
5. 查询导入失败记录
|
||||
|
||||
**预期结果**:
|
||||
- 导入状态: PARTIAL_SUCCESS (部分成功)
|
||||
- 成功数量: 1 (第1条)
|
||||
- 失败数量: 2 (第2、3条)
|
||||
- 失败记录:
|
||||
- 第1条失败记录: 错误消息包含 "身份证号[110101199001011234]在导入文件中重复,已跳过此条记录"
|
||||
- 第2条失败记录: 错误消息包含 "身份证号[110101199001011234]在导入文件中重复,已跳过此条记录"
|
||||
|
||||
**实际结果**: (待测试)
|
||||
|
||||
**测试结论**: (待测试)
|
||||
|
||||
---
|
||||
|
||||
### 场景4: 混合重复(数据库+Excel)
|
||||
|
||||
**测试用例ID**: TEST-MIXED-001
|
||||
|
||||
**测试目的**: 验证数据库已存在记录和Excel内重复记录的混合场景
|
||||
|
||||
**测试数据**:
|
||||
|
||||
#### 采购交易
|
||||
```
|
||||
采购事项ID 采购类别 标的物名称 采购数量 预算金额 采购方式 申请人
|
||||
EXIST001 类别1 标的物1 10 10000 公开招标 张三 (数据库已存在)
|
||||
NEW001 类别2 标的物2 20 20000 邀请招标 李四 (全新数据)
|
||||
NEW001 类别3 标的物3 30 30000 竞争性谈判 王五 (Excel内与第2条重复)
|
||||
NEW002 类别4 标的物4 40 40000 单一来源 赵六 (全新数据)
|
||||
```
|
||||
|
||||
#### 员工信息
|
||||
```
|
||||
姓名 柜员号 所属部门ID 身份证号 电话 入职时间 状态
|
||||
已存在员工 99999 103 110101199001019999 13900000000 2024-01-01 0 (数据库已存在)
|
||||
新员工1 90001 103 110101199001011111 13800000001 2024-01-01 0 (全新数据)
|
||||
新员工2 90001 103 110101199001012222 13800000002 2024-01-01 0 (Excel内与第2条重复)
|
||||
新员工3 90002 103 110101199001013333 13800000003 2024-01-01 0 (全新数据)
|
||||
```
|
||||
|
||||
**前置条件**:
|
||||
- 数据库中已存在采购事项ID为 EXIST001 的记录
|
||||
- 数据库中已存在柜员号为 99999 的员工记录
|
||||
|
||||
**测试步骤**:
|
||||
1. 生成测试数据Excel文件
|
||||
2. 分别调用采购交易和员工信息导入接口
|
||||
3. 等待3秒让异步任务完成
|
||||
4. 查询导入状态
|
||||
5. 查询导入失败记录
|
||||
|
||||
**预期结果**:
|
||||
|
||||
#### 采购交易
|
||||
- 导入状态: PARTIAL_SUCCESS
|
||||
- 成功数量: 2 (NEW001, NEW002)
|
||||
- 失败数量: 2
|
||||
- 失败记录:
|
||||
- 第1条: 错误消息包含 "采购事项ID[EXIST001]已存在,请勿重复导入"
|
||||
- 第2条: 错误消息包含 "采购事项ID[NEW001]在导入文件中重复,已跳过此条记录"
|
||||
|
||||
#### 员工信息
|
||||
- 导入状态: PARTIAL_SUCCESS
|
||||
- 成功数量: 2 (90001, 90002)
|
||||
- 失败数量: 2
|
||||
- 失败记录:
|
||||
- 第1条: 错误消息包含 "柜员号已存在且未启用更新支持" 或 "该柜员号已存在"
|
||||
- 第2条: 错误消息包含 "柜员号[90001]在导入文件中重复,已跳过此条记录"
|
||||
|
||||
**实际结果**: (待测试)
|
||||
|
||||
**测试结论**: (待测试)
|
||||
|
||||
---
|
||||
|
||||
## 测试注意事项
|
||||
|
||||
### 1. 异步处理
|
||||
- 导入功能采用异步处理,需要等待一段时间(建议3-5秒)后再查询状态
|
||||
- 导入状态可能经历 PROCESSING -> SUCCESS/PARTIAL_SUCCESS 的变化
|
||||
|
||||
### 2. 错误消息格式
|
||||
- 数据库重复: "采购事项ID[xxx]已存在,请勿重复导入"
|
||||
- Excel内重复: "采购事项ID[xxx]在导入文件中重复,已跳过此条记录"
|
||||
- 员工柜员号重复: "柜员号[xxx]在导入文件中重复,已跳过此条记录"
|
||||
- 员工身份证号重复: "身份证号[xxx]在导入文件中重复,已跳过此条记录"
|
||||
|
||||
### 3. 数据准备
|
||||
- 场景4需要提前在数据库中插入测试数据
|
||||
- 如果数据库中不存在预置数据,该场景可能不会完全按预期执行
|
||||
|
||||
### 4. 清理工作
|
||||
- 测试完成后需要清理测试数据,避免影响后续测试
|
||||
- 可以通过删除接口或直接清理数据库
|
||||
|
||||
### 5. 权限要求
|
||||
- 需要登录并有导入权限: `ccdi:purchaseTransaction:import` 和 `ccdi:employee:import`
|
||||
- 测试账号: admin / admin123
|
||||
|
||||
## 测试执行
|
||||
|
||||
### 自动化测试
|
||||
使用Python测试脚本:
|
||||
```bash
|
||||
python doc/test-scripts/test_import_duplicate_detection.py
|
||||
```
|
||||
|
||||
### 手动测试
|
||||
1. 登录系统: http://localhost:8080/login
|
||||
2. 进入采购交易/员工信息管理页面
|
||||
3. 点击"导入"按钮
|
||||
4. 选择测试Excel文件
|
||||
5. 上传并查看导入结果
|
||||
6. 点击"查看失败记录"查看详细错误信息
|
||||
|
||||
## 测试报告
|
||||
|
||||
测试报告将保存在: `doc/test-reports/test_report_YYYYMMDD_HHMMSS.json`
|
||||
|
||||
报告包含:
|
||||
- 测试时间
|
||||
- 测试环境
|
||||
- 总测试用例数
|
||||
- 通过/失败数量
|
||||
- 通过率
|
||||
- 详细测试结果(包括输入数据、预期结果、实际结果)
|
||||
|
||||
## 相关代码
|
||||
|
||||
### 后端实现
|
||||
- 采购交易导入: `CcdiPurchaseTransactionImportServiceImpl.java`
|
||||
- 员工信息导入: `CcdiEmployeeImportServiceImpl.java`
|
||||
|
||||
### Controller接口
|
||||
- 采购交易: `CcdiPurchaseTransactionController.java`
|
||||
- 员工信息: `CcdiEmployeeController.java`
|
||||
|
||||
### Excel实体
|
||||
- 采购交易: `CcdiPurchaseTransactionExcel.java`
|
||||
- 员工信息: `CcdiEmployeeExcel.java`
|
||||
Reference in New Issue
Block a user