material.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. """Pydantic schemas - 市场物料管理"""
  2. from pydantic import BaseModel, Field
  3. from typing import Optional, List
  4. from datetime import datetime
  5. class MyMaterialUsageQuery(BaseModel):
  6. """我的物料领用记录查询参数"""
  7. keyword: Optional[str] = Field(None, description="关键词搜索")
  8. material_id: Optional[str] = Field(None, description="物料ID")
  9. material_type: Optional[str] = Field(None, description="物料类型")
  10. change_type: Optional[str] = Field(None, description="变动类型")
  11. start_time: Optional[str] = Field(None, description="开始日期 YYYY-MM-DD")
  12. end_time: Optional[str] = Field(None, description="结束日期 YYYY-MM-DD")
  13. class MaterialUsageResponse(BaseModel):
  14. """物料领用记录响应"""
  15. id: str
  16. materialId: Optional[str] = None
  17. materialCode: Optional[str] = None
  18. materialName: Optional[str] = None
  19. batchId: Optional[str] = None
  20. stockInNo: Optional[str] = None
  21. stockInDate: Optional[str] = None
  22. catalogNo: Optional[str] = None
  23. batchNo: Optional[str] = None
  24. manufacturer: Optional[str] = None
  25. unitPrice: Optional[float] = None
  26. amount: Optional[float] = None
  27. changeType: Optional[str] = None
  28. changeQty: Optional[float] = None
  29. usageUnit: Optional[str] = None
  30. stockBefore: Optional[float] = None
  31. stockAfter: Optional[float] = None
  32. receiver: Optional[str] = None
  33. receiverName: Optional[str] = None
  34. purpose: Optional[str] = None
  35. sourceType: Optional[str] = None
  36. requisitionStatus: Optional[str] = Field(None, description="领用状态: open/closed")
  37. useTime: Optional[str] = None
  38. remark: Optional[str] = None
  39. createBy: Optional[str] = None
  40. createByName: Optional[str] = None
  41. createTime: Optional[str] = None
  42. updateTime: Optional[str] = None
  43. class Config:
  44. from_attributes = True
  45. class MyMaterialUsageListResponse(BaseModel):
  46. """我的物料领用记录列表响应"""
  47. items: List[MaterialUsageResponse]
  48. total: int
  49. page: int
  50. pageSize: int
  51. totalPages: int