| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- from __future__ import annotations
- from sqlalchemy import Boolean, Float, ForeignKey, Integer, JSON, String, Text
- from sqlalchemy.orm import Mapped, mapped_column
- from app.db.base import Base, TimestampMixin, UUIDPrimaryKeyMixin
- class Mine(UUIDPrimaryKeyMixin, TimestampMixin, Base):
- __tablename__ = "mines"
- code: Mapped[str] = mapped_column(String(64), unique=True, index=True)
- name: Mapped[str] = mapped_column(String(128), index=True)
- short_name: Mapped[str] = mapped_column(String(64), default="")
- province: Mapped[str] = mapped_column(String(64), default="")
- city: Mapped[str] = mapped_column(String(64), default="")
- status: Mapped[str] = mapped_column(String(32), default="active", index=True)
- production_capacity: Mapped[float | None] = mapped_column(Float, nullable=True)
- design_capacity: Mapped[float | None] = mapped_column(Float, nullable=True)
- ventilation_method: Mapped[str] = mapped_column(String(64), default="")
- description: Mapped[str] = mapped_column(Text, default="")
- settings: Mapped[dict] = mapped_column(JSON, default=dict)
- is_default: Mapped[bool] = mapped_column(Boolean, default=False, index=True)
- class MineArea(UUIDPrimaryKeyMixin, TimestampMixin, Base):
- __tablename__ = "mine_areas"
- mine_id: Mapped[str] = mapped_column(
- String(32), ForeignKey("mines.id", ondelete="CASCADE"), index=True
- )
- code: Mapped[str] = mapped_column(String(64), index=True)
- name: Mapped[str] = mapped_column(String(128))
- area_type: Mapped[str] = mapped_column(String(32), default="采区")
- depth: Mapped[float | None] = mapped_column(Float, nullable=True)
- status: Mapped[str] = mapped_column(String(32), default="active")
- description: Mapped[str] = mapped_column(Text, default="")
- class WorkFace(UUIDPrimaryKeyMixin, TimestampMixin, Base):
- __tablename__ = "work_faces"
- mine_id: Mapped[str] = mapped_column(
- String(32), ForeignKey("mines.id", ondelete="CASCADE"), index=True
- )
- area_id: Mapped[str | None] = mapped_column(
- String(32), ForeignKey("mine_areas.id", ondelete="SET NULL"), nullable=True, index=True
- )
- code: Mapped[str] = mapped_column(String(64), index=True)
- name: Mapped[str] = mapped_column(String(128))
- face_type: Mapped[str] = mapped_column(String(32), default="采煤工作面")
- status: Mapped[str] = mapped_column(String(32), default="active")
- planned_air_volume: Mapped[float | None] = mapped_column(Float, nullable=True)
- actual_air_volume: Mapped[float | None] = mapped_column(Float, nullable=True)
- gas_limit: Mapped[float | None] = mapped_column(Float, nullable=True)
- dust_limit: Mapped[float | None] = mapped_column(Float, nullable=True)
- location: Mapped[dict] = mapped_column(JSON, default=dict)
- class Roadway(UUIDPrimaryKeyMixin, TimestampMixin, Base):
- __tablename__ = "roadways"
- mine_id: Mapped[str] = mapped_column(
- String(32), ForeignKey("mines.id", ondelete="CASCADE"), index=True
- )
- area_id: Mapped[str | None] = mapped_column(
- String(32), ForeignKey("mine_areas.id", ondelete="SET NULL"), nullable=True, index=True
- )
- code: Mapped[str] = mapped_column(String(64), index=True)
- name: Mapped[str] = mapped_column(String(128))
- roadway_type: Mapped[str] = mapped_column(String(32), default="回风巷")
- start_node: Mapped[str] = mapped_column(String(128), default="")
- end_node: Mapped[str] = mapped_column(String(128), default="")
- length: Mapped[float | None] = mapped_column(Float, nullable=True)
- cross_section_area: Mapped[float | None] = mapped_column(Float, nullable=True)
- resistance: Mapped[float | None] = mapped_column(Float, nullable=True)
- airflow: Mapped[float | None] = mapped_column(Float, nullable=True)
- status: Mapped[str] = mapped_column(String(32), default="normal", index=True)
- properties: Mapped[dict] = mapped_column(JSON, default=dict)
|