mine.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from __future__ import annotations
  2. from sqlalchemy import Boolean, Float, ForeignKey, Integer, JSON, String, Text
  3. from sqlalchemy.orm import Mapped, mapped_column
  4. from app.db.base import Base, TimestampMixin, UUIDPrimaryKeyMixin
  5. class Mine(UUIDPrimaryKeyMixin, TimestampMixin, Base):
  6. __tablename__ = "mines"
  7. code: Mapped[str] = mapped_column(String(64), unique=True, index=True)
  8. name: Mapped[str] = mapped_column(String(128), index=True)
  9. short_name: Mapped[str] = mapped_column(String(64), default="")
  10. province: Mapped[str] = mapped_column(String(64), default="")
  11. city: Mapped[str] = mapped_column(String(64), default="")
  12. status: Mapped[str] = mapped_column(String(32), default="active", index=True)
  13. production_capacity: Mapped[float | None] = mapped_column(Float, nullable=True)
  14. design_capacity: Mapped[float | None] = mapped_column(Float, nullable=True)
  15. ventilation_method: Mapped[str] = mapped_column(String(64), default="")
  16. description: Mapped[str] = mapped_column(Text, default="")
  17. settings: Mapped[dict] = mapped_column(JSON, default=dict)
  18. is_default: Mapped[bool] = mapped_column(Boolean, default=False, index=True)
  19. class MineArea(UUIDPrimaryKeyMixin, TimestampMixin, Base):
  20. __tablename__ = "mine_areas"
  21. mine_id: Mapped[str] = mapped_column(
  22. String(32), ForeignKey("mines.id", ondelete="CASCADE"), index=True
  23. )
  24. code: Mapped[str] = mapped_column(String(64), index=True)
  25. name: Mapped[str] = mapped_column(String(128))
  26. area_type: Mapped[str] = mapped_column(String(32), default="采区")
  27. depth: Mapped[float | None] = mapped_column(Float, nullable=True)
  28. status: Mapped[str] = mapped_column(String(32), default="active")
  29. description: Mapped[str] = mapped_column(Text, default="")
  30. class WorkFace(UUIDPrimaryKeyMixin, TimestampMixin, Base):
  31. __tablename__ = "work_faces"
  32. mine_id: Mapped[str] = mapped_column(
  33. String(32), ForeignKey("mines.id", ondelete="CASCADE"), index=True
  34. )
  35. area_id: Mapped[str | None] = mapped_column(
  36. String(32), ForeignKey("mine_areas.id", ondelete="SET NULL"), nullable=True, index=True
  37. )
  38. code: Mapped[str] = mapped_column(String(64), index=True)
  39. name: Mapped[str] = mapped_column(String(128))
  40. face_type: Mapped[str] = mapped_column(String(32), default="采煤工作面")
  41. status: Mapped[str] = mapped_column(String(32), default="active")
  42. planned_air_volume: Mapped[float | None] = mapped_column(Float, nullable=True)
  43. actual_air_volume: Mapped[float | None] = mapped_column(Float, nullable=True)
  44. gas_limit: Mapped[float | None] = mapped_column(Float, nullable=True)
  45. dust_limit: Mapped[float | None] = mapped_column(Float, nullable=True)
  46. location: Mapped[dict] = mapped_column(JSON, default=dict)
  47. class Roadway(UUIDPrimaryKeyMixin, TimestampMixin, Base):
  48. __tablename__ = "roadways"
  49. mine_id: Mapped[str] = mapped_column(
  50. String(32), ForeignKey("mines.id", ondelete="CASCADE"), index=True
  51. )
  52. area_id: Mapped[str | None] = mapped_column(
  53. String(32), ForeignKey("mine_areas.id", ondelete="SET NULL"), nullable=True, index=True
  54. )
  55. code: Mapped[str] = mapped_column(String(64), index=True)
  56. name: Mapped[str] = mapped_column(String(128))
  57. roadway_type: Mapped[str] = mapped_column(String(32), default="回风巷")
  58. start_node: Mapped[str] = mapped_column(String(128), default="")
  59. end_node: Mapped[str] = mapped_column(String(128), default="")
  60. length: Mapped[float | None] = mapped_column(Float, nullable=True)
  61. cross_section_area: Mapped[float | None] = mapped_column(Float, nullable=True)
  62. resistance: Mapped[float | None] = mapped_column(Float, nullable=True)
  63. airflow: Mapped[float | None] = mapped_column(Float, nullable=True)
  64. status: Mapped[str] = mapped_column(String(32), default="normal", index=True)
  65. properties: Mapped[dict] = mapped_column(JSON, default=dict)