changes 查询接口

This commit is contained in:
P3ngSaM 2022-11-18 15:41:15 +08:00
parent 1868637993
commit f126d19cc1
5 changed files with 77 additions and 8 deletions

View File

@ -52,3 +52,12 @@ def get_company_total(db: Session, name, page: int = 0, pagesize: int = 10):
"detail": detail "detail": detail
} }
def search_all_data(db, _id: str):
company_obj = db.query(Company).filter_by(id=_id).first()
return company_obj.dict()
def search_financial_data(db, _id: str, report_date: list):
company_obj = db.query(Company).filter_by(id=_id).first()
return company_obj.financial_dict(report_date)

View File

@ -21,6 +21,24 @@ class Company(Base):
income_sheet_data = relationship("Income", backref="data_company") income_sheet_data = relationship("Income", backref="data_company")
cashflow_sheet_data = relationship("CashFlow", backref="data_company") cashflow_sheet_data = relationship("CashFlow", backref="data_company")
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
# 工商信息 # 工商信息
class Business(Base): class Business(Base):
@ -33,7 +51,7 @@ class Business(Base):
def dict(self): def dict(self):
mongodb = get_mongodb() mongodb = get_mongodb()
item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C3.1_工商信息", _id=self.obj_id) item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C3.1_工商信息", _id=self.obj_id)
return item.get("data") return item
# 股东信息 # 股东信息
@ -47,7 +65,7 @@ class Shareholder(Base):
def dict(self): def dict(self):
mongodb = get_mongodb() mongodb = get_mongodb()
item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C3.2_股东信息", _id=self.obj_id) item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C3.2_股东信息", _id=self.obj_id)
return item.get("data") return item.get("股东列表")
# 法律诉讼 # 法律诉讼
@ -61,7 +79,8 @@ class Lawsuit(Base):
def list(self): def list(self):
mongodb = get_mongodb() mongodb = get_mongodb()
item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C9.6_法律诉讼", _id=self.obj_id) item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C9.6_法律诉讼", _id=self.obj_id)
return item.get("data") item.pop('企业ID')
return item
# 失信人 # 失信人
@ -75,7 +94,8 @@ class Dishonest(Base):
def list(self): def list(self):
mongodb = get_mongodb() mongodb = get_mongodb()
item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C9.5_失信人", _id=self.obj_id) item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C9.5_失信人", _id=self.obj_id)
return item.get("data") item.pop('企业ID')
return item
# 资产负债表 # 资产负债表
@ -90,7 +110,8 @@ class Balance(Base):
def list(self): def list(self):
mongodb = get_mongodb() mongodb = get_mongodb()
item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C6.1_资产负债表", _id=self.obj_id) item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C6.1_资产负债表", _id=self.obj_id)
return item.get("data") item.pop('企业ID')
return item
# 利润表 # 利润表
@ -105,7 +126,8 @@ class Income(Base):
def list(self): def list(self):
mongodb = get_mongodb() mongodb = get_mongodb()
item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C6.2_利润表", _id=self.obj_id) item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C6.2_利润表", _id=self.obj_id)
return item.get("data") item.pop('企业ID')
return item
# 现金流量表 # 现金流量表
@ -120,7 +142,8 @@ class CashFlow(Base):
def list(self): def list(self):
mongodb = get_mongodb() mongodb = get_mongodb()
item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C6.3_现金流量表", _id=self.obj_id) item = mongodb.find_data_by_id(dbname="WR_DataBase_v2_test", sheet="C6.3_现金流量表", _id=self.obj_id)
return item.get("data") item.pop('企业ID')
return item
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)

View File

@ -0,0 +1,31 @@
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from APPData.Crud import CompanyCrud
from APPData.Schemas import CompanySchemas
from Utils.DataBase.SqlAlchemyUtils import get_db
router = APIRouter(
tags=["查询汇总"],
prefix="/api/query"
)
@router.get("/all_data", summary="查询企业所有数据")
def func01(cid: str, db: Session = Depends(get_db)):
# 根据cid查询企业是否存在
data = CompanyCrud.get_company_by_id(db=db, _id=cid)
if not data:
raise HTTPException(status_code=404, detail="Company Not Found")
result = CompanyCrud.search_all_data(db=db, _id=cid)
return result
@router.post("/fiancial_data", summary="查询企业财务数据")
def func02(req_body: CompanySchemas.FinancialSearch, db: Session = Depends(get_db)):
# 根据cid查询企业是否存在
data = CompanyCrud.get_company_by_id(db=db, _id=req_body.cid)
if not data:
raise HTTPException(status_code=404, detail="Company Not Found")
result = CompanyCrud.search_financial_data(db=db, _id=req_body.cid, report_date=req_body.report_date)
return result

View File

@ -11,3 +11,8 @@ class MacroSearch(BaseModel):
provinces: str = '四川省' provinces: str = '四川省'
region: str = '成都市' region: str = '成都市'
year: int = 2021 year: int = 2021
class FinancialSearch(BaseModel):
cid: str = 'CID00000002'
report_date: list = ['2021-12-31', '2020-12-31', '2019-12-31']

View File

@ -3,7 +3,7 @@ from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from APPData.Router import CompanyRouter, BusinessRouter, ShareholderRouter, LawsuitRouter, DishonestRouter, \ from APPData.Router import CompanyRouter, BusinessRouter, ShareholderRouter, LawsuitRouter, DishonestRouter, \
BalanceSheetRouter, IncomeSheetRouter, CashFlowStatementRouter, MacroDataRouter BalanceSheetRouter, IncomeSheetRouter, CashFlowStatementRouter, MacroDataRouter, QuerySummaryRouter
app = FastAPI( app = FastAPI(
title="数据平台", title="数据平台",
@ -28,6 +28,7 @@ app.include_router(BalanceSheetRouter.router)
app.include_router(IncomeSheetRouter.router) app.include_router(IncomeSheetRouter.router)
app.include_router(CashFlowStatementRouter.router) app.include_router(CashFlowStatementRouter.router)
app.include_router(MacroDataRouter.router) app.include_router(MacroDataRouter.router)
app.include_router(QuerySummaryRouter.router)
if __name__ == "__main__": if __name__ == "__main__":