60 lines
2.5 KiB
Python
60 lines
2.5 KiB
Python
|
|
import enum
|
|||
|
|
from sqlalchemy import Column, Integer, String, Float, DateTime, Text, Enum, func
|
|||
|
|
from app.database import Base
|
|||
|
|
|
|||
|
|
|
|||
|
|
class L3Status(str, enum.Enum):
|
|||
|
|
pending = "pending"
|
|||
|
|
sent = "sent"
|
|||
|
|
confirmed = "confirmed"
|
|||
|
|
cancelled = "cancelled"
|
|||
|
|
|
|||
|
|
|
|||
|
|
class L2Status(str, enum.Enum):
|
|||
|
|
pending = "pending"
|
|||
|
|
processing = "processing"
|
|||
|
|
done = "done"
|
|||
|
|
|
|||
|
|
|
|||
|
|
class PDIRecord(Base):
|
|||
|
|
"""PDI (Process Data Input) – per-coil process order from L3."""
|
|||
|
|
__tablename__ = "pdi_records"
|
|||
|
|
|
|||
|
|
id = Column(Integer, primary_key=True, index=True)
|
|||
|
|
coil_no = Column(String(30), nullable=False, index=True, comment="卷号")
|
|||
|
|
order_no = Column(String(30), nullable=True, comment="订单号")
|
|||
|
|
customer = Column(String(100), nullable=True, comment="客户名称")
|
|||
|
|
steel_grade = Column(String(30), nullable=True, comment="钢种")
|
|||
|
|
|
|||
|
|
# 几何规格
|
|||
|
|
thickness = Column(Float, nullable=True, comment="来料厚度 mm")
|
|||
|
|
width = Column(Float, nullable=True, comment="来料宽度 mm")
|
|||
|
|
target_thickness = Column(Float, nullable=True, comment="目标厚度 mm")
|
|||
|
|
target_width = Column(Float, nullable=True, comment="目标宽度 mm")
|
|||
|
|
|
|||
|
|
# 力学性能
|
|||
|
|
yield_strength = Column(Float, nullable=True, comment="屈服强度 MPa")
|
|||
|
|
tensile_strength = Column(Float, nullable=True, comment="抗拉强度 MPa")
|
|||
|
|
elongation = Column(Float, nullable=True, comment="延伸率 %")
|
|||
|
|
|
|||
|
|
# 卷重/尺寸
|
|||
|
|
coil_weight = Column(Float, nullable=True, comment="卷重 kg")
|
|||
|
|
inner_diameter = Column(Float, nullable=True, comment="内径 mm")
|
|||
|
|
outer_diameter = Column(Float, nullable=True, comment="外径 mm")
|
|||
|
|
|
|||
|
|
# 工艺
|
|||
|
|
process_route = Column(String(100), nullable=True, comment="工艺路径 e.g. P1+P2+P3+P4+P5+P6")
|
|||
|
|
priority = Column(Integer, default=3, comment="优先级 1-5")
|
|||
|
|
|
|||
|
|
# 状态
|
|||
|
|
l3_status = Column(Enum(L3Status), default=L3Status.pending, comment="L3状态")
|
|||
|
|
l2_status = Column(Enum(L2Status), default=L2Status.pending, comment="L2状态")
|
|||
|
|
|
|||
|
|
# 时间戳
|
|||
|
|
send_time = Column(DateTime, nullable=True, comment="下发时间")
|
|||
|
|
confirm_time = Column(DateTime, nullable=True, comment="确认时间")
|
|||
|
|
|
|||
|
|
remark = Column(Text, nullable=True, comment="备注")
|
|||
|
|
created_at = Column(DateTime, server_default=func.now())
|
|||
|
|
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|