feat: 增加报工超额快照字段
This commit is contained in:
@@ -13,6 +13,7 @@ from sqlalchemy import (
|
||||
Numeric,
|
||||
String,
|
||||
Text,
|
||||
text,
|
||||
)
|
||||
from sqlalchemy.dialects.mysql import JSON
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
@@ -249,6 +250,13 @@ class ProductionReport(Base):
|
||||
expected_workload: Mapped[float] = mapped_column(Numeric(12, 2), nullable=False, default=0)
|
||||
pace_rate: Mapped[float] = mapped_column(Numeric(10, 2), nullable=False, default=0)
|
||||
workload_rate: Mapped[float] = mapped_column(Numeric(10, 2), nullable=False, default=0)
|
||||
has_over_limit: Mapped[bool] = mapped_column(
|
||||
Boolean,
|
||||
nullable=False,
|
||||
default=False,
|
||||
server_default=text("0"),
|
||||
)
|
||||
over_limit_summary: Mapped[str | None] = mapped_column(String(500))
|
||||
status: Mapped[ReportStatus] = mapped_column(
|
||||
Enum(ReportStatus),
|
||||
nullable=False,
|
||||
@@ -290,6 +298,7 @@ class ProductionReport(Base):
|
||||
Index("idx_reports_status_date", "status", "report_date"),
|
||||
Index("idx_reports_reviewer", "reviewer_phone", "reviewed_at"),
|
||||
Index("idx_reports_voided", "is_voided", "voided_at"),
|
||||
Index("idx_reports_over_limit", "has_over_limit", "submitted_at"),
|
||||
)
|
||||
|
||||
|
||||
@@ -315,6 +324,23 @@ class ProductionReportItem(Base):
|
||||
good_qty: Mapped[float] = mapped_column(Numeric(12, 2), nullable=False, default=0)
|
||||
defect_qty: Mapped[float] = mapped_column(Numeric(12, 2), nullable=False, default=0)
|
||||
scrap_qty: Mapped[float] = mapped_column(Numeric(12, 2), nullable=False, default=0)
|
||||
over_limit_status: Mapped[str] = mapped_column(
|
||||
String(32),
|
||||
nullable=False,
|
||||
default="not_checked",
|
||||
server_default="not_checked",
|
||||
)
|
||||
over_limit_type: Mapped[str | None] = mapped_column(String(64))
|
||||
over_limit_reason: Mapped[str | None] = mapped_column(String(500))
|
||||
over_limit_checked_at: Mapped[datetime | None] = mapped_column(DateTime)
|
||||
over_limit_check_source: Mapped[str | None] = mapped_column(String(32))
|
||||
over_limit_batch_no: Mapped[str | None] = mapped_column(String(128))
|
||||
over_limit_product_gross_weight_kg: Mapped[float | None] = mapped_column(Numeric(12, 4))
|
||||
over_limit_issued_weight_kg: Mapped[float | None] = mapped_column(Numeric(18, 6))
|
||||
over_limit_max_reportable_qty: Mapped[float | None] = mapped_column(Numeric(12, 2))
|
||||
over_limit_previous_good_qty: Mapped[float | None] = mapped_column(Numeric(12, 2))
|
||||
over_limit_current_cumulative_qty: Mapped[float | None] = mapped_column(Numeric(12, 2))
|
||||
over_limit_current_report_qty: Mapped[float | None] = mapped_column(Numeric(12, 2))
|
||||
allocated_minutes: Mapped[float] = mapped_column(Numeric(10, 2), nullable=False, default=0)
|
||||
started_at: Mapped[datetime | None] = mapped_column(DateTime)
|
||||
remark: Mapped[str | None] = mapped_column(String(500))
|
||||
@@ -329,6 +355,15 @@ class ProductionReportItem(Base):
|
||||
__table_args__ = (
|
||||
Index("idx_report_items_report", "report_id"),
|
||||
Index("idx_report_items_product", "project_no", "product_name"),
|
||||
Index("idx_report_items_over_limit_status", "over_limit_status"),
|
||||
Index(
|
||||
"idx_report_items_process_batch",
|
||||
"attendance_point_name",
|
||||
"project_no",
|
||||
"product_name",
|
||||
"raw_material_batch_no",
|
||||
"process_name",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user