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,多个用逗号分隔')