test_store_receive_cost_statistics.sh 7.45 KB
#!/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 "=========================================="