仓库领用成本统计接口测试说明.md 4.54 KB

仓库领用成本统计接口测试说明

📋 接口信息

  • 接口路径: POST /api/Extend/LqInventoryUsage/get-store-receive-cost-statistics
  • 服务类: LqInventoryUsageService
  • 方法名: GetStoreReceiveCostStatistics

⚠️ 测试前准备

  1. 确保后端服务已重启:接口代码修改后需要重新编译并重启服务
  2. 确认服务运行正常:访问 http://localhost:2011/api/test 验证服务是否运行

🧪 测试用例

测试1: 按月份查询(202601)

curl -X POST "http://localhost:2011/api/Extend/LqInventoryUsage/get-store-receive-cost-statistics" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "statisticsMonth": "202601",
    "currentPage": 1,
    "pageSize": 20
  }'

预期返回字段

  • StatisticsMonth: 统计月份(如:202601)
  • StoreId: 门店ID
  • StoreName: 门店名称
  • ReceiveCount: 领取数量(按批次去重)
  • ProductVarietyCount: 领取品种数量
  • AvgUnitPrice: 平均单价
  • TotalCostAmount: 总价
  • WarehouseCount: 涉及仓库数量
  • UsageRecordCount: 领用记录数
  • AvgReceiveAmount: 平均领用金额
  • AvgRecordAmount: 平均单笔金额
  • TotalUsageQuantity: 领用总数量
  • MaxRecordAmount: 最大单笔金额
  • MinRecordAmount: 最小单笔金额

测试2: 按时间范围查询

curl -X POST "http://localhost:2011/api/Extend/LqInventoryUsage/get-store-receive-cost-statistics" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "startMonth": "202512",
    "endMonth": "202601",
    "currentPage": 1,
    "pageSize": 10
  }'

测试3: 按门店查询

curl -X POST "http://localhost:2011/api/Extend/LqInventoryUsage/get-store-receive-cost-statistics" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "statisticsMonth": "202601",
    "storeId": "1649328471923847193",
    "currentPage": 1,
    "pageSize": 20
  }'

测试4: 按仓库筛选

curl -X POST "http://localhost:2011/api/Extend/LqInventoryUsage/get-store-receive-cost-statistics" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "statisticsMonth": "202601",
    "warehouse": "福田仓库",
    "currentPage": 1,
    "pageSize": 20
  }'

测试5: 排序测试

curl -X POST "http://localhost:2011/api/Extend/LqInventoryUsage/get-store-receive-cost-statistics" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "statisticsMonth": "202601",
    "sidx": "TotalCostAmount",
    "sort": "desc",
    "currentPage": 1,
    "pageSize": 5
  }'

📝 使用测试脚本

运行测试脚本:

bash scripts/sh/test_store_receive_cost_statistics.sh

✅ 验证要点

  1. 接口返回码: 应为 200
  2. 数据结构: 返回的 list 数组应包含统计记录
  3. 分页信息: pagination 应包含 totalpageIndexpageSize
  4. 字段完整性: 每个记录应包含所有必需字段
  5. 数据准确性:
    • AvgUnitPrice = TotalCostAmount / ProductVarietyCount
    • AvgReceiveAmount = TotalCostAmount / ReceiveCount
    • AvgRecordAmount = TotalCostAmount / UsageRecordCount

🔍 数据验证SQL

可以通过以下SQL验证数据:

-- 验证202601月份的统计数据
SELECT 
    DATE_FORMAT(a.F_ReceiveTime, '%Y%m') as StatisticsMonth,
    u.F_StoreId as StoreId,
    store.dm as StoreName,
    COUNT(DISTINCT a.F_UsageBatchId) as ReceiveCount,
    COUNT(DISTINCT u.F_ProductId) as ProductVarietyCount,
    COALESCE(SUM(u.F_TotalAmount), 0) as TotalCostAmount,
    COUNT(DISTINCT p.F_Warehouse) as WarehouseCount
FROM lq_inventory_usage u
INNER JOIN lq_inventory_usage_application a ON u.F_UsageBatchId = a.F_UsageBatchId
INNER JOIN lq_product p ON u.F_ProductId = p.F_Id
LEFT JOIN lq_mdxx store ON u.F_StoreId = store.F_Id
WHERE u.F_IsEffective = 1
    AND a.F_IsEffective = 1
    AND a.F_ApprovalStatus = '已通过'
    AND a.F_IsReceived = 1
    AND a.F_ReceiveTime IS NOT NULL
    AND DATE_FORMAT(a.F_ReceiveTime, '%Y%m') = '202601'
GROUP BY 
    DATE_FORMAT(a.F_ReceiveTime, '%Y%m'),
    u.F_StoreId,
    store.dm
ORDER BY TotalCostAmount DESC
LIMIT 10;

🐛 常见问题

  1. 404错误: 服务未重启,需要重新编译并重启后端服务
  2. 500错误: 检查SQL查询是否正确,查看服务日志
  3. 空数据: 确认指定月份是否有已领取的仓库使用记录
  4. Token过期: 重新获取Token