ETest-Vue-FastAPI/ruoyi-fastapi-backend/module_admin/entity/vo/warehouse_receipt_vo.py

90 lines
4.2 KiB
Python
Raw Permalink Normal View History

2025-12-19 10:12:59 +08:00
from datetime import date, datetime
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from typing import Optional, List
from module_admin.entity.vo.warehouse_sample_vo import WarehouseSampleModel
class WarehouseReceiptModel(BaseModel):
"""
入库单信息模型
"""
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
receipt_id: Optional[int] = Field(default=None, description='入库单ID')
receipt_no: Optional[str] = Field(default=None, description='入库单号')
commission_no: Optional[str] = Field(default=None, description='样品委托单号')
client_unit: Optional[str] = Field(default=None, description='委托单位')
client_contact: Optional[str] = Field(default=None, description='委托人')
receipt_date: Optional[date] = Field(default=None, description='收样日期')
source_location: Optional[str] = Field(default=None, description='来源地')
delivery_person: Optional[str] = Field(default=None, description='送样人')
receipt_method: Optional[str] = Field(default=None, description='收样方式')
receipt_method_detail: Optional[str] = Field(default=None, description='收样方式详情')
2025-12-19 10:12:59 +08:00
receiver: Optional[str] = Field(default=None, description='收样人')
recorder: Optional[str] = Field(default=None, description='入库记录人')
purpose: Optional[str] = Field(default=None, description='来样目的')
purpose_detail: Optional[str] = Field(default=None, description='来样目的详情')
2025-12-19 10:12:59 +08:00
status: Optional[str] = Field(default='0', description='状态')
remark: Optional[str] = Field(default=None, description='备注')
create_by: Optional[str] = Field(default=None, description='创建者')
create_time: Optional[datetime] = Field(default=None, description='创建时间')
update_by: Optional[str] = Field(default=None, description='更新者')
update_time: Optional[datetime] = Field(default=None, description='更新时间')
sample_count: Optional[int] = Field(default=0, description='样品数量')
class WarehouseReceiptPageQueryModel(BaseModel):
"""
入库单分页查询模型
"""
model_config = ConfigDict(alias_generator=to_camel)
receipt_no: Optional[str] = Field(default=None, description='入库单号')
client_unit: Optional[str] = Field(default=None, description='委托单位')
client_contact: Optional[str] = Field(default=None, description='委托人')
receipt_date_start: Optional[date] = Field(default=None, description='收样开始日期')
receipt_date_end: Optional[date] = Field(default=None, description='收样结束日期')
purpose: Optional[str] = Field(default=None, description='来样目的')
status: Optional[str] = Field(default=None, description='状态')
page_num: int = Field(default=1, description='当前页码')
page_size: int = Field(default=10, description='每页记录数')
@classmethod
def as_query(cls, page_num: int = 1, page_size: int = 10, receipt_no: str = None,
client_unit: str = None, client_contact: str = None,
receipt_date_start: date = None, receipt_date_end: date = None,
purpose: str = None, status: str = None):
return cls(pageNum=page_num, pageSize=page_size, receiptNo=receipt_no,
clientUnit=client_unit, clientContact=client_contact,
receiptDateStart=receipt_date_start, receiptDateEnd=receipt_date_end,
purpose=purpose, status=status)
class AddWarehouseReceiptModel(WarehouseReceiptModel):
"""
新增入库单模型
"""
receipt_no: str = Field(description='入库单号')
samples: Optional[List[WarehouseSampleModel]] = Field(default=None, description='样品列表')
class EditWarehouseReceiptModel(WarehouseReceiptModel):
"""
编辑入库单模型
"""
receipt_id: int = Field(description='入库单ID')
samples: Optional[List[WarehouseSampleModel]] = Field(default=None, description='样品列表')
class DeleteWarehouseReceiptModel(BaseModel):
"""
删除入库单模型
"""
model_config = ConfigDict(alias_generator=to_camel)
receipt_ids: str = Field(description='入库单ID多个用逗号分隔')