changes 导入财务数据

This commit is contained in:
P3ngSaM 2022-11-18 18:11:35 +08:00
parent 2600909dfb
commit 32843e2d2c
5 changed files with 98 additions and 2 deletions

View File

@ -82,3 +82,4 @@ def save_rating_flow_node(node_id: str, data: dict, db: Session, mongodb: MongoH
db.commit()
return node_item.rating_process_id

View File

@ -4,6 +4,7 @@ from sqlalchemy.orm import Session
from App.Crud import RatingFlowCrud as Crud
from App.Schemas import RatingFlowSchema
from Utils.Authentication.TokenUtil import decode_token
from Utils.Common.RegisterUtils import request_to_get, request_to_post
from Utils.DataBase.MongoHelperUtils import get_mongodb, MongoHelper
from Utils.DataBase.SqlAlchemyUtils import get_db
@ -68,8 +69,67 @@ def func(schema: RatingFlowSchema.SaveRatingFlowNodeReqBody, db: Session = Depen
@router.post("/import/input_data", summary="导入填报数据", tags=["评级节点"])
def func(schema):
pass
def func(schema: RatingFlowSchema.GetRatingDataReqBody, db: Session = Depends(get_db),
mongodb: MongoHelper = Depends(get_mongodb)):
score_card_id = schema.scorecard_id
# 获取打分卡配置
score_card_url = 'http://test.fecribd.com:5004/api/model_store/scorecard/view?_id={}'.format(score_card_id)
res = request_to_get(score_card_url)
if not res:
raise HTTPException(status_code=400, detail="ScoreCard Not Found")
data_table = res.get('data_table')
if not data_table:
raise HTTPException(status_code=400, detail="DataTable Not Found")
# 获取填报数据
data_url = 'http://test.fecribd.com:5001/api/query/fiancial_data'
data = {"cid": schema.company_id, "report_date": schema.report_date}
result = request_to_post(data_url, data)
if not result:
raise HTTPException(status_code=400, detail="Data Not Found")
# 整合结果
data_result = dict()
for name, content in data_table.items():
if name == '资产负债表':
balance = list()
for sheet in result['balance_sheet_data']:
insert = dict()
for cont in content:
insert['报告期'] = sheet['截止日期']
try:
insert[cont] = sheet[cont]
except KeyError:
insert[cont] = None
balance.append(insert)
data_result['资产负债表'] = balance
if name == '利润表':
income = list()
for sheet in result['income_sheet_data']:
insert = dict()
for cont in content:
insert['报告期'] = sheet['截止日期']
try:
insert[cont] = sheet[cont]
except KeyError:
insert[cont] = None
income.append(insert)
data_result['利润表'] = income
if name == '现金流量表':
cashflow = list()
for sheet in result['cashflow_sheet_data']:
insert = dict()
for cont in content:
insert['报告期'] = sheet['截止日期']
try:
insert[cont] = sheet[cont]
except KeyError:
insert[cont] = None
cashflow.append(insert)
data_result['现金流量表'] = cashflow
return data_result
@router.post("/import/index_data", summary="导入定性定量指标", tags=["评级节点"])

View File

@ -52,3 +52,10 @@ class CreateParticipantReqBody(BaseModel):
class SaveRatingFlowNodeReqBody(BaseModel):
node_id: str = None
data: dict = {}
class GetRatingDataReqBody(BaseModel):
company_id: str = None
scorecard_id: str = None
report_date: list = None

View File

@ -0,0 +1,23 @@
import json
import requests
TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2luZm8iOnsidWlkIjoiVUlEMDAwMSIsImVtYWlsIjoiZmVjcmliZEBmZWNyLmNvbS5jbiIsIm5hbWUiOiJyb290Iiwicm9sZSI6Ilx1N2JhMVx1NzQwNlx1NTQ1OCIsImRlcGFydG1lbnQiOiJcdTY1NzBcdTViNTdcdTUzMTZcdTkwZTgiLCJyb2xlX2lkIjoiUk9MRTAxIiwiZGVwYXJ0bWVudF9pZCI6IkQwMDEifSwiZXhwIjoxNjgzNDc2OTA4fQ.8girdw3n0WDktRuK0aSgGor10eb11nIFvRJqUtPZum4"
HEADERS = {"token": TOKEN}
def request_to_get(url):
res = requests.get(url=url, headers=HEADERS)
if res.status_code == 200:
return json.loads(res.text)
else:
return False
def request_to_post(url, data):
res = requests.post(url=url, headers=HEADERS, data=json.dumps(data))
if res.status_code == 200:
return json.loads(res.text)
else:
return False

View File

@ -1,3 +1,4 @@
import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
@ -25,3 +26,7 @@ app.include_router(RatingFlowRouter.router)
# app.include_router(Router.IndividualCreditRouter.router)
# app.include_router(Router.ExternalSupportRouter.router)
# app.include_router(Router.SubjectCreditRouter.router)
if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1", port=8011)