2021-11-22 14:53:29 +08:00
|
|
|
|
import os
|
2021-12-27 13:51:18 +08:00
|
|
|
|
import time
|
|
|
|
|
import json
|
2021-11-22 14:53:29 +08:00
|
|
|
|
|
2021-12-24 14:02:33 +08:00
|
|
|
|
import requests
|
2021-12-27 13:51:18 +08:00
|
|
|
|
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
|
2021-12-27 13:51:18 +08:00
|
|
|
|
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
|
|
|
|
|
2021-12-27 15:33:47 +08:00
|
|
|
|
report_route = Blueprint('report', __name__)
|
2021-11-19 14:38:49 +08:00
|
|
|
|
|
|
|
|
|
|
2021-12-27 13:51:18 +08:00
|
|
|
|
@report_route.route('/gen_general_rating_report', methods=['POST'])
|
2021-12-24 14:02:33 +08:00
|
|
|
|
@verify_token
|
2021-12-20 17:08:04 +08:00
|
|
|
|
def report_pdf():
|
2021-12-27 13:51:18 +08:00
|
|
|
|
"""
|
|
|
|
|
生成综合信用评价报告
|
|
|
|
|
Parameters:
|
|
|
|
|
company str 企业名称
|
|
|
|
|
cid str 企业ID
|
|
|
|
|
rid str 评价ID
|
|
|
|
|
Returns:
|
|
|
|
|
res str 报告FileID
|
|
|
|
|
"""
|
2021-12-24 14:02:33 +08:00
|
|
|
|
|
2021-12-27 13:51:18 +08:00
|
|
|
|
def get_report_prepare_data(param):
|
|
|
|
|
"""
|
|
|
|
|
获取报告准备数据
|
|
|
|
|
Parameters:
|
|
|
|
|
param: dict 接口接收的请求数据
|
|
|
|
|
Returns:
|
|
|
|
|
res: 请求成功返回报告准备数据;请求失败返回False
|
|
|
|
|
"""
|
2021-12-24 14:02:33 +08:00
|
|
|
|
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'}
|
2021-12-27 13:51:18 +08:00
|
|
|
|
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
|
2021-12-24 14:02:33 +08:00
|
|
|
|
else:
|
2021-12-27 13:51:18 +08:00
|
|
|
|
# 生成PDF报告文件,以时间戳命名,临时存储
|
|
|
|
|
report_file_name = '{}_{}.pdf'.format(param3, int(time.time()))
|
|
|
|
|
pdf_report = ReportGenerator(name=report_file_name, text_model=param2)
|
2021-12-24 14:02:33 +08:00
|
|
|
|
pdf_report.gen_report()
|
|
|
|
|
|
2021-12-27 13:51:18 +08:00
|
|
|
|
# 保存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格式请求体
|
2021-12-30 14:26:43 +08:00
|
|
|
|
prepare_report_data = get_report_prepare_data(req_body)
|
2021-12-27 13:51:18 +08:00
|
|
|
|
|
|
|
|
|
# 判断报告准备数据生成情况,若为None则返回错误信息
|
|
|
|
|
if prepare_report_data is False:
|
|
|
|
|
return {"info": "报告准备数据生成错误"}, 210
|
|
|
|
|
|
2021-12-30 14:26:43 +08:00
|
|
|
|
# 获取报告准备数据
|
|
|
|
|
report_template = read_json_file('/Report/static/ReportTemplates/{}.json'.format(prepare_report_data['data']['行业选择'][0])) # 根据行业获取报告模板
|
|
|
|
|
|
2021-12-27 13:51:18 +08:00
|
|
|
|
# 生成报告数据,保存报告数据
|
|
|
|
|
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['企业名称'])
|
|
|
|
|
|
2022-01-05 15:24:26 +08:00
|
|
|
|
if save_report_result is not False:
|
2021-12-27 13:51:18 +08:00
|
|
|
|
return {"info": "生成报告成功", "result": {"FileID": save_report_result}}, 200
|
2021-12-20 17:08:04 +08:00
|
|
|
|
else:
|
2021-12-27 13:51:18 +08:00
|
|
|
|
return {"info": "生成报告失败"}, 210
|
2022-01-10 16:47:30 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@report_route.route('/generate_pdf_report', methods=['POST'])
|
|
|
|
|
@verify_token
|
|
|
|
|
def gen_pdf():
|
|
|
|
|
"""
|
|
|
|
|
生成PDF报告
|
|
|
|
|
Parameters:
|
|
|
|
|
text_model 报告json
|
|
|
|
|
Returns:
|
|
|
|
|
res str 报告FileID
|
|
|
|
|
"""
|
|
|
|
|
text_model = request.json['text_model']
|
|
|
|
|
# 生成PDF报告文件,以时间戳命名,临时存储
|
|
|
|
|
report_file_name = '{}_{}.pdf'.format(text_model['企业名称'], int(time.time()))
|
|
|
|
|
pdf_report = ReportGenerator(name=report_file_name, text_model=text_model)
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
# file_id存在,生成成功;不存在则生成失败
|
|
|
|
|
if file_id:
|
|
|
|
|
return {"info": "生成报告成功", "result": {"FileID": file_id}}, 200
|
|
|
|
|
else:
|
|
|
|
|
return {"info": "生成报告失败"}, 210
|