Files
dpb/backend/app/api/v1/module_bre/propagation/schema.py
T
34047007@qq.com b95053c52c init: 初始化 dpb 桃育种系统代码库
前后端 + 后端 FastAPI 全量源码、部署脚本与文档。
2026-08-06 00:17:49 +08:00

81 lines
4.2 KiB
Python

"""克隆扩繁批次 —— Pydantic 校验/序列化模型。"""
from datetime import date, datetime
from pydantic import BaseModel, ConfigDict, Field
from app.core.base_schema import CommonSchema
class PropagationBaseSchema(BaseModel):
model_config = ConfigDict(from_attributes=True)
batch_code: str = Field(..., description="扩繁批次编号")
scion_source_type: str | None = Field(default=None, description="接穗来源类型(germplasm/tree)")
scion_source_id: int | None = Field(default=None, description="接穗来源ID")
produced_clone_id: int | None = Field(default=None, description="产出的无性系(沿用原clone)")
rootstock_id: int | None = Field(default=None, description="砧木(砧木字典)")
method: str | None = Field(default=None, description="繁殖方法")
graft_date: date | None = Field(default=None, description="嫁接日期")
nursery_site_id: int | None = Field(default=None, description="育苗基地(试验基地)")
operator_id: int | None = Field(default=None, description="操作人(育种人员)")
scion_count: int | None = Field(default=None, description="接穗数量")
grafted_count: int | None = Field(default=None, description="嫁接数量")
survival_count: int | None = Field(default=None, description="成活数量")
destination: str | None = Field(default=None, description="去向")
remark: str | None = Field(default=None, description="备注")
class PropagationCreateSchema(PropagationBaseSchema):
pass
class PropagationUpdateSchema(PropagationBaseSchema):
batch_code: str | None = Field(default=None, description="扩繁批次编号")
scion_source_type: str | None = Field(default=None, description="接穗来源类型(germplasm/tree)")
scion_source_id: int | None = Field(default=None, description="接穗来源ID")
produced_clone_id: int | None = Field(default=None, description="产出的无性系(沿用原clone)")
rootstock_id: int | None = Field(default=None, description="砧木(砧木字典)")
method: str | None = Field(default=None, description="繁殖方法")
graft_date: date | None = Field(default=None, description="嫁接日期")
nursery_site_id: int | None = Field(default=None, description="育苗基地(试验基地)")
operator_id: int | None = Field(default=None, description="操作人(育种人员)")
scion_count: int | None = Field(default=None, description="接穗数量")
grafted_count: int | None = Field(default=None, description="嫁接数量")
survival_count: int | None = Field(default=None, description="成活数量")
destination: str | None = Field(default=None, description="去向")
remark: str | None = Field(default=None, description="备注")
class PropagationOutSchema(PropagationBaseSchema):
id: int
uuid: str
batch_code: str | None = None
scion_source_type: str | None = None
scion_source_id: int | None = None
produced_clone_id: int | None = None
produced_clone_name: str | None = None # 由 Service 层联表填充
rootstock_id: int | None = None
rootstock_name: str | None = None # 由 Service 层联表填充
method: str | None = None
graft_date: date | None = None
nursery_site_id: int | None = None
site_name: str | None = None # 由 Service 层联表填充
operator_id: int | None = None
operator_name: str | None = None # 由 Service 层联表填充
scion_count: int | None = None
grafted_count: int | None = None
survival_count: int | None = None
destination: str | None = None
remark: str | None = None
created_time: datetime | None = None
updated_time: datetime | None = None
created_by: CommonSchema | None = None
updated_by: CommonSchema | None = None
class PropagationQueryParam(BaseModel):
batch_code: str | None = Field(default=None, description="扩繁批次编号", json_schema_extra={"q": "like"})
method: str | None = Field(default=None, description="繁殖方法", json_schema_extra={"q": "like"})
produced_clone_id: int | None = Field(default=None, description="产出的无性系", json_schema_extra={"q": "eq"})
nursery_site_id: int | None = Field(default=None, description="育苗基地", json_schema_extra={"q": "eq"})