Files
pickling-mes/backend/app/models/production.py
wangyu 649e667ad0 feat: 实时数据持久化到计划/实绩 + 质量管理改版(钢卷信息+异常记录+继承)
- 在产计划持久化实时数据快照(run_data),物料跟踪每次轮询上报;生产完成写入实绩 process_data
- 实绩页点击行展开生产阶段数据 + 实时数据快照(测点列表)
- 质量管理默认进入异常管理,改为全宽:顶部选卷 + 钢卷信息(5列) + 异常记录表
- 异常记录新增「继承来源」列与「继承」按钮(从来源卷复制缺陷),进入即预置6行
- qc_defect 增加 inherit_source 字段

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 16:01:34 +08:00

51 lines
2.4 KiB
Python

from sqlalchemy import Column, Integer, String, Float, DateTime, Text, ForeignKey, JSON, func
from app.database import Base
class ProductionRecord(Base):
"""生产实绩"""
__tablename__ = "production_records"
id = Column(Integer, primary_key=True, index=True)
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="热卷号")
plan_id = Column(Integer, ForeignKey("production_plans.id"), nullable=True)
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")
process_data = Column(JSON, comment="生产阶段实时数据快照")
# 兼容历史字段
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))
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())