121 lines
4.3 KiB
Python
121 lines
4.3 KiB
Python
from sqlalchemy.dialects.mysql import LONGTEXT
|
|
from sqlalchemy.orm import relationship
|
|
from sqlalchemy import Column, String, ForeignKey
|
|
|
|
from Utils.DataBase.MongoHelperUtils import get_mongodb
|
|
from Utils.DataBase.SqlAlchemyUtils import Base, engine
|
|
|
|
|
|
class ScoreCard(Base):
|
|
__tablename__ = "scorecard"
|
|
|
|
id = Column(String(16), primary_key=True)
|
|
name = Column(String(16), unique=True, index=True)
|
|
description = Column(LONGTEXT)
|
|
subcategory_id = Column(String(16), ForeignKey("scorecard_subcategory.id"))
|
|
|
|
subcategory = relationship("ScoreCardSubCategory", backref="scorecard", uselist=False)
|
|
data_table = relationship("ScoreCardDataTable", backref="scorecard", uselist=False)
|
|
index_table = relationship("ScoreCardIndexTable", backref="scorecard", uselist=False)
|
|
rank_table = relationship("ScoreCardRankTable", backref="scorecard", uselist=False)
|
|
process_table = relationship("ScoreCardProcessTable", backref="scorecard", uselist=False)
|
|
scorecard_dp_ac_auth = relationship("ScoreCardDpAcAuth", back_populates="scorecard")
|
|
|
|
def dict(self):
|
|
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
|
|
__dict.update({"subcategory": self.subcategory.__str__()})
|
|
__dict.update({"data_table": None if not self.data_table else self.data_table.dict()})
|
|
__dict.update({"index_table": None if not self.index_table else self.index_table.dict()})
|
|
__dict.update({"rank_table": None if not self.rank_table else self.rank_table.dict()})
|
|
return __dict
|
|
|
|
|
|
class ScoreCardDataTable(Base):
|
|
__tablename__ = "scorecard_data_table"
|
|
|
|
id = Column(String(16), primary_key=True)
|
|
obj_id = Column(String(24))
|
|
scorecard_id = Column(String(16), ForeignKey("scorecard.id"))
|
|
|
|
def dict(self):
|
|
mongodb = get_mongodb()
|
|
item = mongodb.find_data_by_id(dbname="打分卡配置", sheet="数据表", _id=self.obj_id)
|
|
return item.get("data")
|
|
|
|
|
|
class ScoreCardIndexTable(Base):
|
|
__tablename__ = "scorecard_index_table"
|
|
|
|
id = Column(String(16), primary_key=True)
|
|
obj_id = Column(String(24))
|
|
scorecard_id = Column(String(16), ForeignKey("scorecard.id"))
|
|
|
|
def dict(self):
|
|
mongodb = get_mongodb()
|
|
item = mongodb.find_data_by_id(dbname="打分卡配置", sheet="指标表", _id=self.obj_id)
|
|
return item.get("data")
|
|
|
|
|
|
class ScoreCardRankTable(Base):
|
|
__tablename__ = "scorecard_rank_table"
|
|
|
|
id = Column(String(16), primary_key=True)
|
|
obj_id = Column(String(24))
|
|
scorecard_id = Column(String(16), ForeignKey("scorecard.id"))
|
|
|
|
def dict(self):
|
|
mongodb = get_mongodb()
|
|
item = mongodb.find_data_by_id(dbname="打分卡配置", sheet="评级表", _id=self.obj_id)
|
|
return item.get("data")
|
|
|
|
|
|
class ScoreCardProcessTable(Base):
|
|
__tablename__ = "scorecard_process_table"
|
|
|
|
id = Column(String(16), primary_key=True)
|
|
obj_id = Column(String(24))
|
|
scorecard_id = Column(String(16), ForeignKey("scorecard.id"))
|
|
|
|
|
|
class ScoreCardDpAcAuth(Base):
|
|
__tablename__ = "scorecard_dp_ac_auth"
|
|
|
|
id = Column(String(16), primary_key=True)
|
|
department_id = Column(String(16))
|
|
scorecard_id = Column(String(16), ForeignKey("scorecard.id"))
|
|
|
|
scorecard = relationship("ScoreCard", back_populates="scorecard_dp_ac_auth")
|
|
|
|
|
|
class ScoreCardSubCategory(Base):
|
|
__tablename__ = "scorecard_subcategory"
|
|
|
|
id = Column(String(16), primary_key=True)
|
|
name = Column(String(32), unique=True, index=True)
|
|
major_category_id = Column(String(16), ForeignKey("scorecard_major_category.id"))
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
def dict(self):
|
|
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
|
|
__dict.pop("major_category_id")
|
|
return __dict
|
|
|
|
|
|
class ScoreCardMajorCategory(Base):
|
|
__tablename__ = "scorecard_major_category"
|
|
|
|
id = Column(String(16), primary_key=True)
|
|
name = Column(String(32), unique=True, index=True)
|
|
|
|
subcategories = relationship("ScoreCardSubCategory", backref="scorecard_major_category")
|
|
|
|
def dict(self):
|
|
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
|
|
__dict.update({"subcategories": [subcategory.dict() for subcategory in list(self.subcategories)]})
|
|
return __dict
|
|
|
|
|
|
Base.metadata.create_all(bind=engine)
|