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