77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
import json
|
|
import os
|
|
|
|
import requests
|
|
from flask import Blueprint, request, Response
|
|
|
|
from Report.PdfReport import ReportGenerator
|
|
from Report.ReportModel import ReportModel
|
|
from Report.db import upload_pdf, download_pdf, find_tfse_db, conserve_data
|
|
from Report.path_tool import get_gen_report_path
|
|
from common.scripts import verify_token
|
|
|
|
report_route = Blueprint('result', __name__)
|
|
|
|
|
|
@report_route.route('/gen_pdf', methods=['POST'])
|
|
@verify_token
|
|
def report_pdf():
|
|
# 获取报告模板json
|
|
with open("static/test_data/manufacturing_report.json", "r", encoding="utf-8") as f:
|
|
temp_data = json.load(f)
|
|
|
|
# 企业名称
|
|
req = request.json
|
|
name = req['company']
|
|
cid = req['cid']
|
|
|
|
# 获取报告数据
|
|
def get_report_data():
|
|
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'}
|
|
req_data = json.dumps(req)
|
|
result = requests.post(url, headers=headers, data=req_data)
|
|
if result.status_code == 200:
|
|
data = json.loads(result.text)
|
|
else:
|
|
data = None
|
|
return data
|
|
# 执行子方法
|
|
report_data = get_report_data()
|
|
|
|
# 保存处理好的报告数据
|
|
def save_report_data(r_data):
|
|
res = conserve_data(db='评价', col='报告数据', cid=cid, insert_data=r_data)
|
|
if res != '保存成功':
|
|
return '报告数据保存失败'
|
|
else:
|
|
return res
|
|
|
|
# 判断表格数据是否获取成功
|
|
if report_data is not None:
|
|
text_model = ReportModel(rep_json=report_data['data'], temp_data=temp_data).report_vlaues()
|
|
# 保存text_model到报告数据库
|
|
save_result = save_report_data(text_model)
|
|
if save_result == '保存成功':
|
|
# 生成报告保存到static临时文件夹
|
|
pdf_report = ReportGenerator(name=name, text_model=text_model)
|
|
pdf_report.gen_report()
|
|
|
|
# 将报告pdf保存到数据库并删掉本地报告
|
|
file_id = upload_pdf(name)
|
|
# 根据名称保存报告获取file_id
|
|
if file_id:
|
|
file_path = get_gen_report_path(name=name)
|
|
os.remove(file_path)
|
|
file = download_pdf(file_id)
|
|
response = Response(file, content_type='application/pdf')
|
|
return response
|
|
else:
|
|
return {"info": save_result}, 210
|
|
else:
|
|
return {"info": "报告数据不存在"}, 400
|
|
|
|
|
|
|