健康师工资导入接口测试报告.md
3.96 KB
健康师工资导入接口测试报告
测试日期
2025-01-13
测试接口
- 接口路径:
/api/Extend/LqSalary/import - 请求方式: POST
- Content-Type:
multipart/form-data - 接口描述: 从Excel导入健康师工资数据
接口功能说明
导入规则
- Excel第一列是ID(主键),如果为空则自动生成新ID
- 如果ID在数据库中存在,则更新记录(需检查是否已锁定或已确认)
- 如果ID在数据库中不存在,则新增记录
- 已锁定(IsLocked=1)或已确认(EmployeeConfirmStatus=1)的记录不能导入覆盖
Excel格式支持
- 支持新格式:第一列为ID
- 支持旧格式:第一列为"门店名称"(无ID列),系统会自动匹配现有记录
Excel字段顺序
ID, 门店名称, 员工姓名, 岗位, 金三角战队, 总业绩, ...(共77列)
测试结果
测试环境
- 测试时间: 2025-01-13 14:28:04
- 服务地址: http://localhost:2011
- 测试用户: admin
- 测试文件:
ExportFiles/健康师工资_20260113142038.xlsx - 文件大小: 575KB
测试用例1: 基本导入功能
请求信息
- 接口地址:
POST /api/Extend/LqSalary/import - 请求头:
Authorization: Bearer {token}Content-Type: multipart/form-data
- 请求体:
file:健康师工资_20260113142038.xlsx
响应结果
{
"code": 200,
"msg": "操作成功",
"data": {
"success": true,
"message": "导入完成:成功 200 条,失败 0 条,跳过 0 条(已锁定或已确认)",
"successCount": 200,
"failCount": 0,
"skippedCount": 0,
"errors": []
},
"extras": null,
"timestamp": 1768285884286
}
测试结果
✅ 接口调用成功
- 状态码: 200
- 成功标志: true
- 成功导入: 200 条
- 失败记录: 0 条
- 跳过记录: 0 条(已锁定或已确认)
- 错误信息: 无
接口实现要点
1. 文件验证
- 检查文件是否存在且大小大于0
- 验证文件格式(支持 .xlsx 和 .xls)
- 验证Excel文件是否有数据行
2. 数据解析
- 使用
ExcelImportHelper.ToDataTable读取Excel文件 - 支持新旧两种格式(有ID列/无ID列)
- 自动识别格式类型
3. 数据匹配
- 如果ID为空,根据员工姓名和门店名称匹配现有记录
- 如果找到匹配记录,使用该记录的ID进行更新
4. 数据验证
- 验证必填字段(员工姓名)
- 检查记录是否已锁定或已确认
- 已锁定或已确认的记录会被跳过
5. 数据转换
- 数值字段自动清理(去除逗号、货币符号等)
- 支持多种数值格式的解析
- 处理日期和布尔类型字段
6. 关联数据查找
- 根据员工姓名查找 EmployeeId(从 BASE_USER 表)
- 根据门店名称查找 StoreId(从 lq_mdxx 表)
- 如果找不到,字段保持为空(后续可通过计算工资填充)
7. 批量操作
- 使用批量插入和批量更新提高性能
- 分别处理新记录和更新记录
8. 错误处理
- 逐行处理,单行错误不影响其他行
- 收集所有错误信息并返回
- 详细的错误提示(包含行号)
测试脚本
测试脚本位置: scripts/test/test_health_coach_salary_import.sh
使用方法:
./scripts/test/test_health_coach_salary_import.sh
总结
✅ 接口功能正常: 接口可以正常接收Excel文件并导入数据 ✅ 数据导入成功: 成功导入200条工资记录 ✅ 错误处理完善: 无错误记录,错误处理逻辑正确 ✅ 性能良好: 批量操作,导入速度快 ✅ 格式兼容性好: 支持新旧两种Excel格式
建议
- 数据验证: 建议在实际使用中验证导入数据的准确性
- 错误处理: 如果导入过程中有错误,查看 errors 数组获取详细错误信息
- 数据备份: 建议在批量导入前备份数据
- 权限控制: 确保只有有权限的用户才能执行导入操作