from app.core.base_schema import CommonSchema """育苗管理 —— Pydantic 校验/序列化模型。""" from datetime import datetime from pydantic import BaseModel, ConfigDict, Field class SeedlingBaseSchema(BaseModel): model_config = ConfigDict(from_attributes=True) combination_id: int = Field(..., description="杂交组合") treatment_id: int | None = Field(default=None, description="来源种子处理") batch_no: str | None = Field(default=None, description="育苗批次号") sowing_date: str = Field(default=None, description="播种日期") tray_no: str = Field(default=None, description="穴盘号") nursery: str = Field(default=None, description="苗圃") seedling_count: int | None = Field(default=None, description="出苗数") emergence_date: str | None = Field(default=None, description="出苗日期") strong_seedling_date: str | None = Field(default=None, description="壮苗日期") strong_seedling_count: int | None = Field(default=None, description="壮苗数") stage: str | None = Field(default=None, description="当前阶段:1播种/2出苗/3壮苗") bre_personnel_id: int = Field(default=None, description="育苗人") remark: str = Field(default=None, description="备注") class SeedlingCreateSchema(SeedlingBaseSchema): pass class SeedlingUpdateSchema(SeedlingBaseSchema): combination_id: int | None = Field(default=None, description="杂交组合") treatment_id: int | None = Field(default=None, description="来源种子处理") batch_no: str | None = Field(default=None, description="育苗批次号") sowing_date: str | None = Field(default=None, description="播种日期") tray_no: str | None = Field(default=None, description="穴盘号") nursery: str | None = Field(default=None, description="苗圃") seedling_count: int | None = Field(default=None, description="出苗数") emergence_date: str | None = Field(default=None, description="出苗日期") strong_seedling_date: str | None = Field(default=None, description="壮苗日期") strong_seedling_count: int | None = Field(default=None, description="壮苗数") stage: str | None = Field(default=None, description="当前阶段:1播种/2出苗/3壮苗") bre_personnel_id: int | None = Field(default=None, description="育苗人") remark: str | None = Field(default=None, description="备注") class SeedlingOutSchema(SeedlingBaseSchema): id: int uuid: str combination_name: str | None = None # 由 Service 层联表填充 treatment_id: int | None = None treatment_batch_no: str | None = None # 由 Service 层联表填充(来源处理记录无独立批次号,展示处理人/方式) batch_no: str | None = None sowing_date: str | None = None tray_no: str | None = None nursery: str | None = None seedling_count: int | None = None emergence_date: str | None = None strong_seedling_date: str | None = None strong_seedling_count: int | None = None stage: str | None = None bre_personnel_name: str | None = None # 由 Service 层联表填充 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 SeedlingQueryParam(BaseModel): combination_id: int | None = Field(default=None, description="杂交组合") treatment_id: int | None = Field(default=None, description="来源种子处理") batch_no: str | None = Field(default=None, description="育苗批次号") tray_no: str | None = Field(default=None, description="穴盘号") nursery: str | None = Field(default=None, description="苗圃") bre_personnel_id: int | None = Field(default=None, description="育苗人") model_config = ConfigDict( extra="ignore", json_schema_extra={ "combination_id": ("eq", "{param}"), "treatment_id": ("eq", "{param}"), "batch_no": ("like", "{param}"), "tray_no": ("like", "{param}"), "nursery": ("like", "{param}"), "bre_personnel_id": ("eq", "{param}"), }, )