Просмотр исходного кода

feat(market): 新增 MyMaterialUsageQuery schema

- 新增 MyMaterialUsageQuery 查询参数 schema
- 新增 MaterialUsageResponse 响应 schema(含 requisitionStatus 字段)
- 新增 MyMaterialUsageListResponse 列表响应 schema

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 4 месяцев назад
Родитель
Сommit
c4a6ecfd7d
2 измененных файлов с 67 добавлено и 0 удалено
  1. 9 0
      backend/app/schemas/__init__.py
  2. 58 0
      backend/app/schemas/material.py

+ 9 - 0
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",
 ]

+ 58 - 0
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