import datetime import os import time from flask import Blueprint, request from Certificate.PdfCertificate import CertificateGenerator from Certificate.scripts.common import get_certificate_data from Certificate.scripts.path_tool import get_gen_report_path from Certificate.db import upload_pdf, upload_esg_pdf from common.scripts import verify_token certificate_route = Blueprint('certificate', __name__) @certificate_route.route('/generate_certificate', methods=['POST']) @verify_token def gen_certificate(): """ 生成综合信用评价证书 Parameters: company str 企业名称 cid str 企业ID rid str 评价ID type str 证书类型 Returns: result: 证书FileID """ def certificate(param): """ 生成证书pdf Parameters: param: dict 证书所需数据 Returns: res: 处理成功返回报告FileID;处理失败返回False """ # 生成PDF报告文件,以时间戳命名,临时存储 certificate_file_name = '{}_{}.pdf'.format(req_body['company'], datetime.datetime.now().strftime('%Y%m%d')) pdf_report = CertificateGenerator(name=certificate_file_name, text_data=param) if len(param) > 5: pdf_report.gen_esg() else: pdf_report.gen() return certificate_file_name def save_certificate(param): """ 保存证书pdf Parameters: param: 证书pdf Returns: res: 处理成功返回报告FileID;处理失败返回False """ # 保存PDF报告文件,删除临时存储的报告 if len(text_data) > 5: file_id = upload_esg_pdf(param) else: file_id = upload_pdf(param) certificate_path = get_gen_report_path(name=param) os.remove(certificate_path) # 保存PDF报告成功,返回FileID;保存PDF报告文件失败,返回False return file_id if file_id else False # Parameters req_body = request.json # 接收的json格式请求体 text_data = get_certificate_data(req_body) certifice_pdf = certificate(text_data) result = save_certificate(certifice_pdf) if result is not False: return {"info": "生成证书成功", "result": {"FileID": result}}, 200 else: return {"info": "生成证书失败"}, 210