dataplatform/APPData/Model/CompanyModel.py

150 lines
5.5 KiB
Python
Raw Normal View History

2022-11-17 15:18:34 +08:00
from sqlalchemy import Column, String, ForeignKey, Integer, Date
from sqlalchemy.dialects.mysql import LONGTEXT
from sqlalchemy.orm import relationship
2022-11-11 15:21:19 +08:00
2022-11-17 15:18:34 +08:00
from Utils.DataBase.MongoHelperUtils import get_mongodb
from Utils.DataBase.SqlAlchemyUtils import Base, engine
2022-11-11 15:21:19 +08:00
2022-11-17 15:18:34 +08:00
# 企业数据
2022-11-11 15:21:19 +08:00
class Company(Base):
2022-11-17 15:18:34 +08:00
__tablename__ = "data_company"
2022-11-11 15:21:19 +08:00
id = Column(String(11), primary_key=True)
name = Column(String(32), index=True)
2022-11-17 15:18:34 +08:00
business_data = relationship("Business", backref="data_company", uselist=False)
shareholder_data = relationship("Shareholder", backref="data_company", uselist=False)
lawsuit_data = relationship("Lawsuit", backref="data_company")
dishonest_data = relationship("Dishonest", backref="data_company")
balance_sheet_data = relationship("Balance", backref="data_company")
income_sheet_data = relationship("Income", backref="data_company")
cashflow_sheet_data = relationship("CashFlow", backref="data_company")
2022-11-18 15:41:15 +08:00
def dict(self):
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
__dict.update({"business_data": None if not self.business_data else self.business_data.dict()})
__dict.update({"shareholder_data": None if not self.shareholder_data else self.shareholder_data.dict()})
__dict.update({"lawsuit_data": [lawsuit.list() for lawsuit in list(self.lawsuit_data)]})
__dict.update({"dishonest_data": [dishonest.list() for dishonest in list(self.dishonest_data)]})
__dict.update({"balance_sheet_data": [balance.list() for balance in list(self.balance_sheet_data)]})
__dict.update({"income_sheet_data": [income.list() for income in list(self.income_sheet_data)]})
__dict.update({"cashflow_sheet_data": [cashflow.list() for cashflow in list(self.cashflow_sheet_data)]})
return __dict
def financial_dict(self, report_date):
__dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
__dict.update({"balance_sheet_data": [b for b in [balance.list() for balance in list(self.balance_sheet_data)] if b.get('截止日期') in report_date]})
__dict.update({"income_sheet_data": [i for i in [income.list() for income in list(self.income_sheet_data)] if i.get('截止日期') in report_date]})
__dict.update({"cashflow_sheet_data": [c for c in [cashflow.list() for cashflow in list(self.cashflow_sheet_data)] if c.get('截止日期') in report_date]})
return __dict
2022-11-17 15:18:34 +08:00
# 工商信息
class Business(Base):
__tablename__ = "data_bussiness"
id = Column(Integer, primary_key=True, autoincrement=True)
obj_id = Column(String(24))
_id = Column(String(11), ForeignKey("data_company.id"))
def dict(self):
mongodb = get_mongodb()
2022-11-19 12:31:11 +08:00
item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C3.1_工商信息", _id=self.obj_id)
2022-11-18 15:41:15 +08:00
return item
2022-11-17 15:18:34 +08:00
# 股东信息
class Shareholder(Base):
__tablename__ = "data_shareholder"
id = Column(Integer, primary_key=True, autoincrement=True)
obj_id = Column(String(24))
_id = Column(String(11), ForeignKey("data_company.id"))
def dict(self):
mongodb = get_mongodb()
2022-11-19 12:31:11 +08:00
item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C3.2_股东信息", _id=self.obj_id)
2022-11-18 15:41:15 +08:00
return item.get("股东列表")
2022-11-17 15:18:34 +08:00
# 法律诉讼
class Lawsuit(Base):
__tablename__ = "data_lawsuit"
id = Column(Integer, primary_key=True, autoincrement=True)
obj_id = Column(String(24))
_id = Column(String(11), ForeignKey("data_company.id"))
def list(self):
mongodb = get_mongodb()
2022-11-19 12:31:11 +08:00
item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C9.6_法律诉讼", _id=self.obj_id)
2022-11-18 15:41:15 +08:00
item.pop('企业ID')
return item
2022-11-17 15:18:34 +08:00
# 失信人
class Dishonest(Base):
__tablename__ = "data_dishonest"
id = Column(Integer, primary_key=True, autoincrement=True)
obj_id = Column(String(24))
_id = Column(String(11), ForeignKey("data_company.id"))
def list(self):
mongodb = get_mongodb()
2022-11-19 12:31:11 +08:00
item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C9.5_失信人", _id=self.obj_id)
2022-11-18 15:41:15 +08:00
item.pop('企业ID')
return item
2022-11-17 15:18:34 +08:00
# 资产负债表
class Balance(Base):
__tablename__ = "data_balance"
id = Column(Integer, primary_key=True, autoincrement=True)
obj_id = Column(String(24))
reportdate = Column(Date)
_id = Column(String(11), ForeignKey("data_company.id"))
def list(self):
mongodb = get_mongodb()
2022-11-19 12:31:11 +08:00
item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C6.1_资产负债表", _id=self.obj_id)
2022-11-18 15:41:15 +08:00
item.pop('企业ID')
return item
2022-11-17 15:18:34 +08:00
# 利润表
class Income(Base):
__tablename__ = "data_income"
id = Column(Integer, primary_key=True, autoincrement=True)
obj_id = Column(String(24))
reportdate = Column(Date)
_id = Column(String(11), ForeignKey("data_company.id"))
def list(self):
mongodb = get_mongodb()
2022-11-19 12:31:11 +08:00
item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C6.2_利润表", _id=self.obj_id)
2022-11-18 15:41:15 +08:00
item.pop('企业ID')
return item
2022-11-17 15:18:34 +08:00
# 现金流量表
class CashFlow(Base):
__tablename__ = "data_cashflow"
id = Column(Integer, primary_key=True, autoincrement=True)
obj_id = Column(String(24))
reportdate = Column(Date)
_id = Column(String(11), ForeignKey("data_company.id"))
def list(self):
mongodb = get_mongodb()
2022-11-19 12:31:11 +08:00
item = mongodb.find_data_by_id(dbname="WR_DataBase", sheet="C6.3_现金流量表", _id=self.obj_id)
2022-11-18 15:41:15 +08:00
item.pop('企业ID')
return item
2022-11-17 15:18:34 +08:00
Base.metadata.create_all(bind=engine)