Files
pickling-mes/backend/app/models/pdi.py
wangyu 193da0018f feat: 移除PDI和订单号字段,新增设备巡检模块
- 从物料跟踪页面移除订单号列和表单字段
- 从导航菜单移除PDI管理,添加设备巡检
- 新增InspectionLocation和InspectionRecord后端模型和API
- 新增设备巡检前端页面(左侧点位列表,右侧设备和历史记录)
2026-05-27 16:38:40 +08:00

60 lines
2.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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())