creditrating-wcq/rating_process/App/Model/RatingFlowModel.py

47 lines
2.0 KiB
Python

from sqlalchemy import Column, String, Date, Enum, ForeignKey, Integer, Boolean
from sqlalchemy.orm import relationship
from rating_process.App.Schemas.RatingFlowSchema import RankLevelEnum, RatingFlowStatusEnum
from Utils.DataBase.rating_process.SqlAlchemyUtils import Base, engine
class RatingFlow(Base):
__tablename__ = "rating_flow"
id = Column(String(16), primary_key=True)
report_date = Column(Date)
status = Column(Enum(RatingFlowStatusEnum, values_callable=lambda x: [e.value for e in x]))
rank_level = Column(Enum(RankLevelEnum, values_callable=lambda x: [e.value for e in x]), default="-")
company = Column(String(32), index=True, comment="测评企业")
company_id = Column(String(16), comment="企业ID")
scorecard = Column(String(64), index=True, comment="打分卡")
scorecard_id = Column(String(16), comment="打分卡ID")
nodes = relationship("RatingFlowNode", backref="rating_flow")
rating_flow_participant = relationship("RatingFlowParticipant", back_populates="rating_flow")
class RatingFlowParticipant(Base):
__tablename__ = "rating_flow_participant"
id = Column(String(16), primary_key=True)
participant = Column(String(32), index=True, comment="参与人")
user_id = Column(String(16), comment="用户ID")
rating_process_id = Column(String(16), ForeignKey("rating_flow.id", ondelete="CASCADE"), comment="评级流程ID")
rating_flow = relationship("RatingFlow", back_populates="rating_flow_participant")
class RatingFlowNode(Base):
__tablename__ = "rating_flow_node"
id = Column(String(16), primary_key=True, comment="流程节点ID")
node_num = Column(Integer, comment="流程节点序号")
node_name = Column(String(32), comment="流程节点名称")
status = Column(Boolean, default=0, comment="流程节点状态")
obj_id = Column(String(24), default=None, comment="流程内容mongoID")
rating_process_id = Column(String(16), ForeignKey("rating_flow.id", ondelete="CASCADE"), comment="评级流程ID")
Base.metadata.create_all(bind=engine)