tfse-model-api-v0.2/Report/routes.py

90 lines
3.4 KiB
Python
Raw Normal View History

import os
import time
import json
import requests
from flask import Blueprint, request
2021-11-19 14:38:49 +08:00
2021-12-07 15:28:49 +08:00
from Report.PdfReport import ReportGenerator
from Report.ReportModel import ReportModel
from Report.db import upload_pdf, update_data
from Report.scripts.path_tool import get_gen_report_path
from common.scripts import verify_token, read_json_file
2021-11-19 14:38:49 +08:00
report_route = Blueprint('report', __name__)
2021-11-19 14:38:49 +08:00
@report_route.route('/gen_general_rating_report', methods=['POST'])
@verify_token
def report_pdf():
"""
生成综合信用评价报告
Parameters:
company str 企业名称
cid str 企业ID
rid str 评价ID
Returns:
res str 报告FileID
"""
def get_report_prepare_data(param):
"""
获取报告准备数据
Parameters:
param: dict 接口接收的请求数据
Returns:
res: 请求成功返回报告准备数据请求失败返回False
"""
url = 'http://139.9.249.34:51011/etl_tfse/rating/report_data'
token = 'dmfd7FshT!5Wng9^gcCcQV7T6FBnVgl4'
headers = {'token': token, 'Content-Type': 'application/json;charset=UTF-8'}
result = requests.post(url, headers=headers, data=json.dumps(param))
return json.loads(result.text) if result.status_code == 200 else False
def save_report_data(param1, param2, param3):
"""
保存处理好的报告数据
Parameters:
param1: dict 查询条件
param2: dict 报告数据
param3: str 企业名称
Returns:
res: 处理成功返回报告FileID处理失败返回False
"""
# 保存报告数据
report_data_result = update_data('评价', '报告数据', param1, param2)
# 保存报告数据失败返回False
if not report_data_result:
return False
else:
# 生成PDF报告文件以时间戳命名临时存储
report_file_name = '{}_{}.pdf'.format(param3, int(time.time()))
pdf_report = ReportGenerator(name=report_file_name, text_model=param2)
pdf_report.gen_report()
# 保存PDF报告文件删除临时存储的报告
file_id = upload_pdf(report_file_name)
report_path = get_gen_report_path(name=report_file_name)
os.remove(report_path)
# 保存PDF报告成功返回FileID;保存PDF报告文件失败返回False
return file_id if file_id else False
# Parameters
req_body = request.json # 接收的json格式请求体
prepare_report_data = get_report_prepare_data(req_body) # 获取报告准备数据
report_template = read_json_file('/Report/static/ReportTemplates/{}.json'.format(prepare_report_data['data']['行业选择'][0])) # 根据行业获取报告模板
# 判断报告准备数据生成情况,若为None则返回错误信息
if prepare_report_data is False:
return {"info": "报告准备数据生成错误"}, 210
# 生成报告数据,保存报告数据
text_model = ReportModel(prepare_report_data['data'], report_template).report_values()
save_report_result = save_report_data({"评价ID": text_model['评价ID']}, text_model, text_model['企业名称'])
if save_report_result is not False:
return {"info": "生成报告成功", "result": {"FileID": save_report_result}}, 200
else:
return {"info": "生成报告失败"}, 210