From c4a6ecfd7d002b42641e76b4180fd8c757a3ebd4 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Mon, 15 Jun 2026 13:56:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(market):=20=E6=96=B0=E5=A2=9E=20MyMaterial?= =?UTF-8?q?UsageQuery=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 MyMaterialUsageQuery 查询参数 schema - 新增 MaterialUsageResponse 响应 schema(含 requisitionStatus 字段) - 新增 MyMaterialUsageListResponse 列表响应 schema Co-authored-by: Cursor --- backend/app/schemas/__init__.py | 9 +++++ backend/app/schemas/material.py | 58 +++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 backend/app/schemas/material.py 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