"""Pydantic schemas - 市场物料管理""" from pydantic import BaseModel, Field from typing import Optional, List from datetime import datetime class MyMaterialUsageQuery(BaseModel): """我的物料领用记录查询参数""" keyword: Optional[str] = Field(None, description="关键词搜索") material_id: Optional[str] = Field(None, description="物料ID") material_type: Optional[str] = Field(None, description="物料类型") change_type: Optional[str] = Field(None, description="变动类型") start_time: Optional[str] = Field(None, description="开始日期 YYYY-MM-DD") end_time: Optional[str] = Field(None, description="结束日期 YYYY-MM-DD") class MaterialUsageResponse(BaseModel): """物料领用记录响应""" id: str materialId: Optional[str] = None materialCode: Optional[str] = None materialName: Optional[str] = None batchId: Optional[str] = None stockInNo: Optional[str] = None stockInDate: Optional[str] = None catalogNo: Optional[str] = None batchNo: Optional[str] = None manufacturer: Optional[str] = None unitPrice: Optional[float] = None amount: Optional[float] = None changeType: Optional[str] = None changeQty: Optional[float] = None usageUnit: Optional[str] = None stockBefore: Optional[float] = None stockAfter: Optional[float] = None receiver: Optional[str] = None receiverName: Optional[str] = None purpose: Optional[str] = None sourceType: Optional[str] = None requisitionStatus: Optional[str] = Field(None, description="领用状态: open/closed") useTime: Optional[str] = None remark: Optional[str] = None createBy: Optional[str] = None createByName: Optional[str] = None createTime: Optional[str] = None updateTime: Optional[str] = None class Config: from_attributes = True class MyMaterialUsageListResponse(BaseModel): """我的物料领用记录列表响应""" items: List[MaterialUsageResponse] total: int page: int pageSize: int totalPages: int