ETest-Vue-FastAPI/test_receipt_detail.py

74 lines
3.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import asyncio
import sys
import traceback
sys.path.insert(0, 'ruoyi-fastapi-backend')
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker
from urllib.parse import quote_plus
DB_URL = f'mysql+asyncmy://cpy_admin:{quote_plus("Tgzz2025+")}@localhost:3307/ruoyi-fastapi'
async def test():
try:
from module_admin.dao.warehouse_receipt_dao import WarehouseReceiptDao
from module_admin.dao.warehouse_sample_dao import WarehouseSampleDao
from module_admin.entity.vo.warehouse_sample_vo import WarehouseSamplePageQueryModel
from utils.common_util import CamelCaseUtil
from fastapi.encoders import jsonable_encoder
engine = create_async_engine(DB_URL, echo=False)
AsyncSession = async_sessionmaker(engine, expire_on_commit=False)
async with AsyncSession() as db:
receipt = await WarehouseReceiptDao.get_receipt_by_id(db, 853)
if receipt:
print(f"Receipt ID: {receipt.receipt_id}")
print(f"Receipt No: {receipt.receipt_no}")
# 转换
receipt_dict = CamelCaseUtil.transform_result(receipt)
print(f"Transformed keys: {list(receipt_dict.keys())}")
# 查询样品
sample_query = WarehouseSamplePageQueryModel(receiptId=receipt.receipt_id, pageNum=1, pageSize=1000)
samples = await WarehouseSampleDao.get_sample_list(db, sample_query, is_page=False)
print(f"Samples count: {len(samples)}")
samples_list = [CamelCaseUtil.transform_result(sample) for sample in samples] if samples else []
# 处理日期格式
def serialize_dates(obj):
if isinstance(obj, dict):
for key, value in obj.items():
if hasattr(value, 'isoformat'):
obj[key] = value.isoformat()
elif isinstance(value, list):
for item in value:
serialize_dates(item)
return obj
receipt_dict = serialize_dates(receipt_dict)
samples_list = [serialize_dates(sample) for sample in samples_list]
receipt_dict['samples'] = samples_list
receipt_dict['sample_count'] = len(samples_list)
print(f"Final receipt_dict keys: {list(receipt_dict.keys())}")
# 测试序列化
try:
encoded = jsonable_encoder(receipt_dict)
print(f"jsonable_encoder success")
except Exception as e:
print(f"jsonable_encoder error: {e}")
traceback.print_exc()
else:
print("Receipt not found")
except Exception as e:
print(f"Error: {e}")
traceback.print_exc()
asyncio.run(test())