2026-05-27 16:38:40 +08:00
|
|
|
from sqlalchemy import Column, Integer, String, Float, DateTime, Text, ForeignKey, func
|
|
|
|
|
from app.database import Base
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProductionRecord(Base):
|
|
|
|
|
"""生产实绩"""
|
|
|
|
|
__tablename__ = "production_records"
|
|
|
|
|
|
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
2026-06-20 18:19:06 +08:00
|
|
|
coil_no = Column(String(30), nullable=False, index=True) # 兼容旧字段,等同于 sub_coil_no
|
|
|
|
|
sub_coil_no = Column(String(30), index=True, comment="子卷号")
|
|
|
|
|
hot_coil_no = Column(String(30), index=True, comment="热卷号")
|
2026-05-27 16:38:40 +08:00
|
|
|
plan_id = Column(Integer, ForeignKey("production_plans.id"), nullable=True)
|
2026-06-20 18:19:06 +08:00
|
|
|
shift = Column(String(10), comment="班")
|
|
|
|
|
team = Column(String(10), comment="组")
|
|
|
|
|
steel_grade = Column(String(30), comment="钢种")
|
|
|
|
|
incoming_thickness = Column(Float, comment="来料厚度 mm")
|
|
|
|
|
outlet_thickness = Column(Float, comment="出口厚度 mm")
|
|
|
|
|
deviation_upper = Column(Float, comment="偏差上限")
|
|
|
|
|
deviation_lower = Column(Float, comment="偏差下限")
|
|
|
|
|
incoming_width = Column(Float, comment="来料宽度 mm")
|
|
|
|
|
outlet_width = Column(Float, comment="出口宽度 mm")
|
|
|
|
|
incoming_weight = Column(Float, comment="来料重量 t")
|
|
|
|
|
weighed_weight = Column(Float, comment="称重重量 t")
|
|
|
|
|
packaging_req = Column(String(30), comment="包装要求")
|
|
|
|
|
trim_req = Column(String(30), comment="切边要求")
|
|
|
|
|
surface_quality = Column(String(30), comment="表面质量")
|
|
|
|
|
product_quality = Column(Float, comment="成品质量 %")
|
|
|
|
|
product_length = Column(Float, comment="成品长度 m")
|
|
|
|
|
length_per_ton = Column(Float, comment="吨钢长度 m/t")
|
|
|
|
|
offline_time = Column(DateTime, comment="下线时间")
|
|
|
|
|
status = Column(String(20), default="UNWEIGH", comment="状态: UNWEIGH/PRODUCT")
|
|
|
|
|
|
|
|
|
|
# 兼容历史字段
|
|
|
|
|
shift_date = Column(DateTime)
|
|
|
|
|
start_time = Column(DateTime)
|
|
|
|
|
end_time = Column(DateTime)
|
|
|
|
|
process_length = Column(Float)
|
|
|
|
|
process_weight = Column(Float)
|
|
|
|
|
avg_speed = Column(Float)
|
|
|
|
|
max_speed = Column(Float)
|
|
|
|
|
acid_consumption = Column(Float)
|
|
|
|
|
inlet_thickness = Column(Float)
|
|
|
|
|
inlet_width = Column(Float)
|
|
|
|
|
quality_grade = Column(String(10))
|
2026-05-27 16:38:40 +08:00
|
|
|
operator = Column(String(50))
|
|
|
|
|
remark = Column(Text)
|
|
|
|
|
created_at = Column(DateTime, server_default=func.now())
|
|
|
|
|
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|