90 lines
3.4 KiB
Python
90 lines
3.4 KiB
Python
import os
|
||
import time
|
||
import json
|
||
|
||
import requests
|
||
from flask import Blueprint, request
|
||
|
||
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
|
||
|
||
report_route = Blueprint('report', __name__)
|
||
|
||
|
||
@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
|