#!/bin/bash # 仓库领用成本统计接口测试脚本 # 注意:测试前请确保后端服务已重启,接口已部署 BASE_URL="http://localhost:2011" API_URL="${BASE_URL}/api/Extend/LqInventoryUsage/get-store-receive-cost-statistics" # 获取Token echo "正在获取Token..." LOGIN_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/oauth/Login" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e") TOKEN=$(echo "$LOGIN_RESPONSE" | python3 -c "import sys, json; print(json.load(sys.stdin)['data']['token'])" 2>/dev/null) if [ -z "$TOKEN" ]; then echo "❌ 获取Token失败" echo "响应: $LOGIN_RESPONSE" exit 1 fi echo "✅ Token获取成功" echo "" echo "==========================================" echo "仓库领用成本统计接口测试" echo "==========================================" echo "" # 测试1: 按月份查询(202601) echo "=== 测试1: 按月份查询(202601) ===" echo "" RESPONSE1=$(curl -s -X POST "$API_URL" \ -H "Authorization: $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "statisticsMonth": "202601", "currentPage": 1, "pageSize": 20 }') echo "响应结果:" echo "$RESPONSE1" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE1" echo "" # 验证返回字段 echo "=== 数据验证 ===" CODE1=$(echo "$RESPONSE1" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('code', 0))" 2>/dev/null || echo "0") if [ "$CODE1" = "200" ]; then echo "✅ 接口调用成功" # 提取第一条数据的关键字段 FIRST_ITEM=$(echo "$RESPONSE1" | python3 -c "import sys, json; d=json.load(sys.stdin); items=d.get('data', {}).get('list', []); print(json.dumps(items[0] if items else {}))" 2>/dev/null || echo "{}") if [ "$FIRST_ITEM" != "{}" ]; then STATISTICS_MONTH=$(echo "$FIRST_ITEM" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('StatisticsMonth', ''))" 2>/dev/null || echo "") STORE_NAME=$(echo "$FIRST_ITEM" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('StoreName', ''))" 2>/dev/null || echo "") RECEIVE_COUNT=$(echo "$FIRST_ITEM" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('ReceiveCount', 0))" 2>/dev/null || echo "0") PRODUCT_VARIETY_COUNT=$(echo "$FIRST_ITEM" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('ProductVarietyCount', 0))" 2>/dev/null || echo "0") TOTAL_COST_AMOUNT=$(echo "$FIRST_ITEM" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('TotalCostAmount', 0))" 2>/dev/null || echo "0") WAREHOUSE_COUNT=$(echo "$FIRST_ITEM" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('WarehouseCount', 0))" 2>/dev/null || echo "0") AVG_UNIT_PRICE=$(echo "$FIRST_ITEM" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('AvgUnitPrice', 0))" 2>/dev/null || echo "0") echo "统计月份: $STATISTICS_MONTH" echo "门店名称: $STORE_NAME" echo "领取数量: $RECEIVE_COUNT" echo "领取品种数量: $PRODUCT_VARIETY_COUNT" echo "总价: $TOTAL_COST_AMOUNT" echo "涉及仓库数量: $WAREHOUSE_COUNT" echo "平均单价: $AVG_UNIT_PRICE" else echo "⚠️ 返回数据为空" fi else echo "❌ 接口调用失败,code: $CODE1" fi echo "" # 测试2: 按时间范围查询(202512-202601) echo "=== 测试2: 按时间范围查询(202512-202601) ===" echo "" RESPONSE2=$(curl -s -X POST "$API_URL" \ -H "Authorization: $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "startMonth": "202512", "endMonth": "202601", "currentPage": 1, "pageSize": 10 }') echo "响应结果(前500字符):" echo "$RESPONSE2" | python3 -m json.tool 2>/dev/null | head -30 || echo "$RESPONSE2" | head -20 echo "" CODE2=$(echo "$RESPONSE2" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('code', 0))" 2>/dev/null || echo "0") if [ "$CODE2" = "200" ]; then TOTAL2=$(echo "$RESPONSE2" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('data', {}).get('pagination', {}).get('total', 0))" 2>/dev/null || echo "0") echo "✅ 接口调用成功,总记录数: $TOTAL2" else echo "❌ 接口调用失败,code: $CODE2" fi echo "" # 测试3: 按门店查询 echo "=== 测试3: 按门店查询(绿纤南湖店) ===" echo "" STORE_ID="1649328471923847193" RESPONSE3=$(curl -s -X POST "$API_URL" \ -H "Authorization: $TOKEN" \ -H "Content-Type: application/json" \ -d "{ \"statisticsMonth\": \"202601\", \"storeId\": \"$STORE_ID\", \"currentPage\": 1, \"pageSize\": 20 }") echo "响应结果:" echo "$RESPONSE3" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE3" echo "" CODE3=$(echo "$RESPONSE3" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('code', 0))" 2>/dev/null || echo "0") if [ "$CODE3" = "200" ]; then echo "✅ 接口调用成功" else echo "❌ 接口调用失败,code: $CODE3" fi echo "" # 测试4: 按仓库筛选 echo "=== 测试4: 按仓库筛选(福田仓库) ===" echo "" RESPONSE4=$(curl -s -X POST "$API_URL" \ -H "Authorization: $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "statisticsMonth": "202601", "warehouse": "福田仓库", "currentPage": 1, "pageSize": 20 }') echo "响应结果(前500字符):" echo "$RESPONSE4" | python3 -m json.tool 2>/dev/null | head -30 || echo "$RESPONSE4" | head -20 echo "" CODE4=$(echo "$RESPONSE4" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('code', 0))" 2>/dev/null || echo "0") if [ "$CODE4" = "200" ]; then TOTAL4=$(echo "$RESPONSE4" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('data', {}).get('pagination', {}).get('total', 0))" 2>/dev/null || echo "0") echo "✅ 接口调用成功,总记录数: $TOTAL4" else echo "❌ 接口调用失败,code: $CODE4" fi echo "" # 测试5: 排序测试(按总价降序) echo "=== 测试5: 排序测试(按总价降序) ===" echo "" RESPONSE5=$(curl -s -X POST "$API_URL" \ -H "Authorization: $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "statisticsMonth": "202601", "sidx": "TotalCostAmount", "sort": "desc", "currentPage": 1, "pageSize": 5 }') echo "响应结果:" echo "$RESPONSE5" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE5" echo "" CODE5=$(echo "$RESPONSE5" | python3 -c "import sys, json; d=json.load(sys.stdin); print(d.get('code', 0))" 2>/dev/null || echo "0") if [ "$CODE5" = "200" ]; then echo "✅ 接口调用成功" # 验证排序 FIRST_AMOUNT=$(echo "$RESPONSE5" | python3 -c "import sys, json; d=json.load(sys.stdin); items=d.get('data', {}).get('list', []); print(items[0].get('TotalCostAmount', 0) if items else 0)" 2>/dev/null || echo "0") SECOND_AMOUNT=$(echo "$RESPONSE5" | python3 -c "import sys, json; d=json.load(sys.stdin); items=d.get('data', {}).get('list', []); print(items[1].get('TotalCostAmount', 0) if len(items) > 1 else 0)" 2>/dev/null || echo "0") if [ "$FIRST_AMOUNT" != "0" ] && [ "$SECOND_AMOUNT" != "0" ]; then if (( $(echo "$FIRST_AMOUNT >= $SECOND_AMOUNT" | bc -l) )); then echo "✅ 排序正确(降序)" else echo "⚠️ 排序可能不正确" fi fi else echo "❌ 接口调用失败,code: $CODE5" fi echo "" echo "==========================================" echo "测试完成" echo "=========================================="