Files

45 lines
1.8 KiB
Python
Raw Permalink Normal View History

"""种子处理 数据模型"""
from datetime import datetime
from sqlalchemy import Float, ForeignKey, Index, Integer, String, Text
from sqlalchemy.orm import Mapped, mapped_column
from app.core.base_model import MappedBase, ModelMixin, UserMixin
class SeedTreatmentModel(ModelMixin, UserMixin, MappedBase):
"""种子处理 主数据表。"""
__tablename__ = "bre_seed_treatment"
combination_id: Mapped[int] = mapped_column(
Integer, ForeignKey("bre_cross_combination.id", ondelete="CASCADE"),
index=True, nullable=False, comment="杂交组合"
)
seed_lot_id: Mapped[int | None] = mapped_column(
Integer, ForeignKey("bre_seed_lot.id", ondelete="SET NULL"),
index=True, nullable=True, comment="种子批(关联补链)", default=None
)
treatment_method: Mapped[str | None] = mapped_column(String(50), nullable=True, comment="处理方式", default=None)
treatment_start: Mapped[str | None] = mapped_column(String(20), nullable=True, comment="处理开始日期", default=None)
treatment_end: Mapped[str | None] = mapped_column(String(20), nullable=True, comment="处理结束日期", default=None)
germination_rate: Mapped[float | None] = mapped_column(Float, nullable=True, comment="发芽率(%)", default=None)
bre_personnel_id: Mapped[int] = mapped_column(
Integer, ForeignKey("bre_personnel.id", ondelete="CASCADE"),
index=True, nullable=True, comment="种子处理人"
)
remark: Mapped[str | None] = mapped_column(Text, nullable=True, comment="备注", default=None)
# 无 status 列:覆盖基类默认 ix_<表>_status_deleted 索引,
# 仅保留 (created_time, is_deleted) 复合索引用于数据权限过滤。
__table_args__ = (
Index("ix_bre_seed_treatment_created_deleted", "created_time", "is_deleted"),
)