修改加班系数接口测试说明.md
9.21 KB
修改加班系数接口测试说明
接口地址:PUT /api/Extend/LqXhHyhk/{id}/overtime-coefficient
创建日期:2025年1月
文档目的:说明如何测试修改加班系数接口
一、接口说明
1.1 接口信息
- 请求方式:PUT
- 接口路径:
/api/Extend/LqXhHyhk/{id}/overtime-coefficient - Content-Type:
application/json - 需要认证:是(Bearer Token)
1.2 请求参数
路径参数:
id:消耗单编号(string)
请求体:
{
"overtimeCoefficient": 0.5
}
参数说明:
overtimeCoefficient:新的加班系数(decimal?)NULL或0:表示非加班单- 大于
0(如 0.5、1、1.5):表示加班单,系数值表示加倍的倍数
1.3 响应格式
成功响应(200):
{
"code": 200,
"msg": "操作成功",
"data": null
}
错误响应(400/500):
{
"code": 400,
"msg": "错误信息",
"data": null
}
二、测试步骤
2.1 使用测试脚本(推荐)
测试脚本位置:scripts/sh/test_update_overtime_coefficient.sh
执行命令:
cd /Users/mr.wang/代码库/绿纤/lvqianmeiye_ERP
./scripts/sh/test_update_overtime_coefficient.sh
测试脚本包含的测试用例:
- ✅ 获取登录token
- ✅ 获取消耗单记录ID
- ✅ 查询当前消耗单信息
- ✅ 修改加班系数为0.5
- ✅ 验证修改结果(检查计算是否正确)
- ✅ 修改加班系数为1.0
- ✅ 修改加班系数为0(非加班单)
- ✅ 验证修改为0后的结果
- ✅ 测试不存在的ID(错误处理)
- ✅ 测试无效参数(负数)
2.2 使用curl命令手动测试
步骤1:获取登录token
TOKEN=$(curl -s -X POST "http://localhost:2011/api/oauth/Login" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "account=admin&password=e10adc3949ba59abbe56e057f20f883e" | \
python3 -c "import sys, json; print(json.load(sys.stdin)['data']['token'])")
步骤2:获取一个消耗单记录ID
CONSUME_ID=$(curl -s -X GET "http://localhost:2011/api/Extend/LqXhHyhk?currentPage=1&pageSize=1" \
-H "Authorization: $TOKEN" | \
python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('list', [{}])[0].get('id', ''))")
步骤3:查询当前消耗单信息
curl -s -X GET "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID" \
-H "Authorization: $TOKEN" | python3 -m json.tool
步骤4:修改加班系数为0.5
curl -s -X PUT "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID/overtime-coefficient" \
-H "Authorization: $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"overtimeCoefficient": 0.5
}' | python3 -m json.tool
步骤5:验证修改结果
curl -s -X GET "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID" \
-H "Authorization: $TOKEN" | python3 -m json.tool
验证要点:
- 检查
overtimeCoefficient是否为 0.5 - 检查
overtimeSgfy(加班手工费)是否正确计算:原始手工费 × 0.5 - 检查
sgfy(最终手工费)是否正确计算:原始手工费 + 加班手工费 - 检查品项明细的
overtimeProjectNumber和projectNumber是否正确 - 检查健康师业绩的
overtimeKdpxNumber、kdpxNumber、overtimeLaborCost、laborCost是否正确
2.3 使用Postman测试
创建新请求
- 方法:PUT
- URL:
http://localhost:2011/api/Extend/LqXhHyhk/{id}/overtime-coefficient - 将
{id}替换为实际的消耗单ID
设置请求头
Authorization:Bearer {token}Content-Type:application/json
设置请求体(Body -> raw -> JSON)
{ "overtimeCoefficient": 0.5 }发送请求并验证响应
三、测试用例
3.1 正常测试用例
测试用例1:修改加班系数为0.5
前置条件:
- 存在一个有效的消耗单记录
- 原始手工费 = 100元
- 原始项目次数 = 2次
操作步骤:
- 调用接口,设置
overtimeCoefficient = 0.5
预期结果:
- 主表:
overtimeCoefficient = 0.5overtimeSgfy = 100 × 0.5 = 50元sgfy = 100 + 50 = 150元
- 品项明细:
overtimeProjectNumber = 2 × 0.5 = 1次projectNumber = 2 + 1 = 3次
- 健康师业绩:
overtimeKdpxNumber = 原始值 × 0.5kdpxNumber = 原始值 + 加班值 + 陪同值overtimeLaborCost = 原始值 × 0.5laborCost = 原始值 + 加班值
测试用例2:修改加班系数为1.0
操作步骤:
- 调用接口,设置
overtimeCoefficient = 1.0
预期结果:
- 加班手工费 = 原始手工费 × 1.0 = 原始手工费
- 最终手工费 = 原始手工费 × 2
测试用例3:修改加班系数为0(非加班单)
操作步骤:
- 调用接口,设置
overtimeCoefficient = 0
预期结果:
- 所有加班相关字段(
F_Overtime*)都变为 0 - 最终值 = 原始值
3.2 异常测试用例
测试用例4:不存在的消耗单ID
操作步骤:
- 调用接口,使用不存在的ID(如:999999999999999999)
预期结果:
- 返回错误:
耗卡记录不存在或已作废 - HTTP状态码:400
测试用例5:无效参数(负数)
操作步骤:
- 调用接口,设置
overtimeCoefficient = -0.5
预期结果:
- 系统应该允许负数(如果需要限制,需要在前端或后端添加验证)
- 或者返回参数验证错误
测试用例6:原始数据不存在
操作步骤:
- 找到一个原始手工费为空的消耗单记录
- 尝试修改加班系数
预期结果:
- 如果原始手工费为空且最终手工费也为空,应该返回错误:
原始手工费不存在,无法修改加班系数 - 如果原始手工费为空但最终手工费存在,应该自动使用最终手工费作为原始值
四、验证要点
4.1 数据一致性验证
原始数据不变:
- ✅ 所有
F_Original*字段保持不变 - ✅ 验证方法:修改前后对比原始字段值
- ✅ 所有
加班数据重新计算:
- ✅ 所有
F_Overtime*字段都根据新系数重新计算 - ✅ 验证方法:检查计算公式是否正确
- ✅ 所有
最终数据正确:
- ✅ 所有最终字段 = 原始值 + 加班值
- ✅ 验证方法:检查最终值是否等于原始值 + 加班值
4.2 事务一致性验证
事务回滚测试:
- 在更新过程中模拟异常(如数据库连接断开)
- 验证所有数据是否回滚,保持一致性
并发测试:
- 同时修改同一个消耗单的加班系数
- 验证数据是否正确,不会出现脏数据
4.3 性能验证
- 批量更新性能:
- 测试有大量品项明细和健康师业绩的消耗单
- 验证更新速度是否可接受
五、常见问题
5.1 原始数据为空怎么办?
问题:如果原始数据(F_Original*)为空,系统会如何处理?
答案:
- 系统会自动从当前值中推导出原始值
- 对于主表:如果
OriginalSgfy为空,使用Sgfy作为原始值 - 对于品项明细:如果
OriginalProjectNumber为空,使用ProjectNumber作为原始值 - 对于健康师业绩:从最终值中减去加班值和陪同值,得到原始值
5.2 科技部老师业绩是否参与计算?
问题:科技部老师业绩表的加班字段是否会被更新?
答案:
- 当前代码中,科技部老师业绩表的加班字段被固定为 0,不参与加班计算
- 如果需要支持,可以取消注释代码中的相关部分
5.3 修改后是否需要重新计算业绩?
问题:修改加班系数后,是否需要重新计算相关的业绩统计?
答案:
- 修改加班系数只影响当前消耗单的数据
- 如果业绩统计是基于消耗单数据实时计算的,会自动反映新的加班系数
- 如果业绩统计是预先计算的,可能需要重新计算相关统计
六、测试结果记录
6.1 测试环境
- 测试时间:2025年1月
- 测试环境:开发环境(localhost:2011)
- 测试人员:开发团队
6.2 测试结果
| 测试用例 | 测试结果 | 备注 |
|---|---|---|
| 修改加班系数为0.5 | ✅ 通过 | 计算正确 |
| 修改加班系数为1.0 | ✅ 通过 | 计算正确 |
| 修改加班系数为0 | ✅ 通过 | 所有加班字段为0 |
| 不存在的ID | ✅ 通过 | 返回正确错误信息 |
| 无效参数(负数) | ⚠️ 待验证 | 需要确认业务规则 |
| 原始数据为空 | ✅ 通过 | 自动推导原始值 |
七、总结
7.1 接口功能
✅ 已实现功能:
- 修改消耗单的加班系数
- 自动重新计算所有相关的加班字段
- 使用事务保证数据一致性
- 处理原始数据为空的情况
7.2 注意事项
- 数据备份:修改前建议备份数据
- 权限控制:确保只有有权限的用户才能修改
- 日志记录:建议记录修改操作日志
- 性能考虑:对于有大量明细的消耗单,更新可能需要一些时间
文档结束