90 lines
4.2 KiB
Python
90 lines
4.2 KiB
Python
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='收样方式详情')
|
||
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='来样目的详情')
|
||
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,多个用逗号分隔')
|
||
|
||
|
||
|