from utils.api_utils import ApiUtils import logging class TaryApi: def __init__(self): """初始化托盘API工具类""" self.api_utils = ApiUtils() def get_tary_info(self, tary_code): """ 获取托盘信息 Args: tary_code: 托盘编号 Returns: dict: 托盘信息 """ try: # API 配置中的键名 api_key = "get_tray_info" # 将托盘号作为参数传递 response = self.api_utils.get(api_key, params={"tp_note": tary_code}) # 记录API响应 logging.info(f"托盘API响应: {response}") # 请求失败时返回空数据 if not response.get("status", False): return { "success": False, "message": "获取托盘信息失败", "data": None } # 成功时格式化数据 if response.get("data"): # 记录data的类型 logging.info(f"数据类型: {type(response['data'])}, 数据内容: {response['data']}") # 如果data直接是对象,则使用该对象 if isinstance(response["data"], dict): logging.info("处理data为字典的情况") tray_info = response["data"] # 如果data是数组,并且有元素,则使用第一个元素 elif isinstance(response["data"], list) and len(response["data"]) > 0: logging.info("处理data为数组的情况") tray_info = response["data"][0] else: logging.warning(f"数据格式不支持: {response['data']}") return { "success": False, "message": "托盘数据格式不正确", "data": None } # 构建返回数据 formatted_data = { "tp_note": tray_info.get("tp_note", ""), # 托盘号 "product_name": tray_info.get("zx_name", ""), # 产品名称 "axis_type": tray_info.get("zx", ""), # 轴型 "material": str(tray_info.get("cs", "")), # 托盘料 "weight": str(tray_info.get("zl", "")), # 重量 "quantity": "" # 数量先空下 } return { "success": True, "message": "获取托盘信息成功", "data": formatted_data } # 数据为空 return { "success": False, "message": "未找到托盘信息", "data": None } except Exception as e: logging.error(f"获取托盘信息异常: {str(e)}") return { "success": False, "message": f"获取托盘信息异常: {str(e)}", "data": None }