#!/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())