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

123 lines
5.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from datetime import date, datetime
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
from typing import Optional, List
class WarehouseSampleModel(BaseModel):
"""
样品信息模型
"""
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
sample_id: Optional[int] = Field(default=None, description='样品ID')
receipt_id: Optional[int] = Field(default=None, description='入库单ID')
receipt_no: Optional[str] = Field(default=None, description='入库单号')
sample_model: Optional[str] = Field(default=None, description='样品型号')
sample_sn: Optional[str] = Field(default=None, description='样品SN号')
hardware_version: Optional[str] = Field(default=None, description='样品硬件版本号')
external_status: Optional[str] = Field(default=None, description='样品入库外测状态')
test_items: Optional[str] = Field(default=None, description='计划测试项')
test_deadline: Optional[date] = Field(default=None, description='计划测试截止日期')
actual_test_items: Optional[str] = Field(default=None, description='实际测试项')
delivery_date: Optional[date] = Field(default=None, description='出库交样日期')
delivery_method: Optional[str] = Field(default=None, description='出库交样方式')
delivery_person: Optional[str] = Field(default=None, description='出库交样人')
receive_person: Optional[str] = Field(default=None, description='出库接样人')
delivery_recorder: 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='更新时间')
class WarehouseSamplePageQueryModel(BaseModel):
"""
样品分页查询模型
"""
model_config = ConfigDict(alias_generator=to_camel)
receipt_id: Optional[int] = Field(default=None, description='入库单ID')
receipt_no: Optional[str] = Field(default=None, description='入库单号')
sample_model: Optional[str] = Field(default=None, description='样品型号')
sample_sn: Optional[str] = Field(default=None, description='样品SN号')
external_status: 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, receiptId: Optional[int] = None,
receiptNo: Optional[str] = None, sampleModel: Optional[str] = None, sampleSn: Optional[str] = None,
externalStatus: Optional[str] = None, status: Optional[str] = None):
return cls(pageNum=page_num, pageSize=page_size, receiptId=receiptId,
receiptNo=receiptNo, sampleModel=sampleModel, sampleSn=sampleSn,
externalStatus=externalStatus, status=status)
class AddWarehouseSampleModel(WarehouseSampleModel):
"""
新增样品模型
"""
receipt_id: int = Field(description='入库单ID')
class EditWarehouseSampleModel(WarehouseSampleModel):
"""
编辑样品模型
"""
sample_id: int = Field(description='样品ID')
class DeleteWarehouseSampleModel(BaseModel):
"""
删除样品模型
"""
model_config = ConfigDict(alias_generator=to_camel)
sample_ids: str = Field(description='样品ID多个用逗号分隔')
class GenerateWorkOrderFromSampleModel(BaseModel):
"""
从样品生成工单的请求模型
"""
model_config = ConfigDict(alias_generator=to_camel)
sample_ids: List[int] = Field(description='样品ID列表')
test_flow_id: int = Field(description='测试流程ID')
work_order_name: Optional[str] = Field(default=None, description='工单名称')
memo: Optional[str] = Field(default=None, description='备注')
force: Optional[bool] = Field(default=False, description='是否强制生成(忽略样品状态检查)')
class FailedSampleInfo(BaseModel):
"""
失败的样品信息
"""
model_config = ConfigDict(alias_generator=to_camel)
sample_id: int = Field(description='样品ID')
sample_sn: Optional[str] = Field(default=None, description='样品SN号')
reason: str = Field(description='失败原因')
class WorkOrderGenerationResponseModel(BaseModel):
"""
工单生成响应模型
"""
model_config = ConfigDict(alias_generator=to_camel)
success_count: int = Field(description='成功数量')
failed_count: int = Field(description='失败数量')
work_order_ids: List[int] = Field(default_factory=list, description='生成的工单ID列表')
failed_samples: List[FailedSampleInfo] = Field(default_factory=list, description='失败的样品信息')