diff --git a/backend/app/schemas/__init__.py b/backend/app/schemas/__init__.py index 62441921..3cda7ab0 100644 --- a/backend/app/schemas/__init__.py +++ b/backend/app/schemas/__init__.py @@ -195,6 +195,11 @@ from app.schemas.delivery import ( DeliveryAttachmentResponse, DeliveryCompleteRequest ) +from app.schemas.material import ( + MyMaterialUsageQuery, + MaterialUsageResponse, + MyMaterialUsageListResponse +) __all__ = [ "PaginationParams", @@ -349,4 +354,8 @@ __all__ = [ "ProductReviewMediaUpdate", "ProductReviewMediaResponse", "ProductReviewMediaListResponse", + # 市场物料 + "MyMaterialUsageQuery", + "MaterialUsageResponse", + "MyMaterialUsageListResponse", ] diff --git a/backend/app/schemas/material.py b/backend/app/schemas/material.py new file mode 100644 index 00000000..fd79b845 --- /dev/null +++ b/backend/app/schemas/material.py @@ -0,0 +1,58 @@ +"""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