diff --git a/Certificate/PdfCertificate.py b/Certificate/PdfCertificate.py index af8f457..3f93d10 100644 --- a/Certificate/PdfCertificate.py +++ b/Certificate/PdfCertificate.py @@ -22,6 +22,9 @@ class CertificateGenerator: def gen_cover(self): self.doc.drawImage(get_pic_path(pic_name='certificate_02.jpg'), 0, 0, 600, 850) + def gen_esg_cover(self): + self.doc.drawImage(get_pic_path(pic_name='certificate_esg.jpg'), 0, 0, 600, 850) + def gen_text(self): self.doc.setFont('SourceHanSerifCN-Bold', 20) margin = (Width - len(self.text_data['企业名称']) * 19) / 2 @@ -37,12 +40,41 @@ class CertificateGenerator: self.doc.setFont('SIMSUN', 10) self.doc.drawString(4.6 * inch, 260, '有效日期:{}'.format(self.text_data['有效日期'])) + def gen_esg_text(self): + # 企业名称 + self.doc.setFont('SourceHanSerifCN-Bold', 20) + margin = (Width - len(self.text_data['企业名称']) * 19) / 2 + self.doc.drawString(margin, 450, self.text_data['企业名称']) + # 统一社会信用代码 + self.doc.setFont('SIMSUN', 12, leading=5) + self.doc.drawString(2.8 * inch, 433, '统一社会信用代码:{}'.format(self.text_data['统一社会信用代码'])) + # ESG得分 + self.doc.setFont('SIMSUN', 12, leading=5) + self.doc.setFillColor('#B79249') + self.doc.drawString(5.35 * inch, 357, '{}'.format(self.text_data['ESG得分'])) + # 评价等级 + self.doc.setFont('SourceHanSerifCN-Bold', 35) + self.doc.drawString(3.2 * inch, 285, '{}级企业'.format(self.text_data['评价等级'])) + # 证书编号 + self.doc.setFont('SIMSUN', 10) + self.doc.setFillColor('black') + self.doc.drawString(1.28 * inch, 260, '证书编号:{}'.format(self.text_data['证书编号'])) + # 有效日期 + self.doc.setFont('SIMSUN', 10) + self.doc.drawString(4.6 * inch, 260, '有效日期:{}'.format(self.text_data['有效日期'])) + def gen(self): self.gen_cover() self.gen_text() self.doc.showPage() self.doc.save() + def gen_esg(self): + self.gen_esg_cover() + self.gen_esg_text() + self.doc.showPage() + self.doc.save() + if __name__ == '__main__': data = { diff --git a/Certificate/db.py b/Certificate/db.py index ac0ba16..3d069dd 100644 --- a/Certificate/db.py +++ b/Certificate/db.py @@ -32,6 +32,22 @@ def upload_pdf(name): return False +def upload_esg_pdf(name): + """ + 根据名称保存该企业证书 + """ + try: + path = get_gen_report_path(name=name) + database = '评价' + collection = 'ESG评价证书' + fs = GridFS(client[database], collection) + content = open(path, 'rb').read() + pdf_id = fs.put(content, content_type='application/pdf', filename=name) + return str(pdf_id) + except Exception: + return False + + def download_pdf(pdf_id): """ 根据pdf_id查询pdf文件 diff --git a/Certificate/routes.py b/Certificate/routes.py index d36fe12..8783d60 100644 --- a/Certificate/routes.py +++ b/Certificate/routes.py @@ -7,7 +7,7 @@ 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 +from Certificate.db import upload_pdf, upload_esg_pdf from common.scripts import verify_token certificate_route = Blueprint('certificate', __name__) @@ -17,11 +17,12 @@ certificate_route = Blueprint('certificate', __name__) @verify_token def gen_certificate(): """ - 描述 + 生成综合信用评价证书 Parameters: company str 企业名称 cid str 企业ID rid str 评价ID + type str 证书类型 Returns: result: 证书FileID """ @@ -37,7 +38,10 @@ def gen_certificate(): # 生成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) - pdf_report.gen() + if len(param) > 5: + pdf_report.gen_esg() + else: + pdf_report.gen() return certificate_file_name @@ -50,7 +54,10 @@ def gen_certificate(): res: 处理成功返回报告FileID;处理失败返回False """ # 保存PDF报告文件,删除临时存储的报告 - file_id = upload_pdf(param) + 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) diff --git a/Certificate/scripts/common.py b/Certificate/scripts/common.py index f107d14..c8d0ff3 100644 --- a/Certificate/scripts/common.py +++ b/Certificate/scripts/common.py @@ -14,19 +14,53 @@ def get_certificate_data(param): Returns: result: dict 证书所需数据 """ - # 企业基本信息 - data_01 = find_tfse_db(db="企业", col="公司基本信息", query={'企业ID': param['cid']})[0] - # 评价结果 - data_02 = find_tfse_db(db="评价", col="评价结果", query={"评价ID": param['rid']})[0] + def general(): + """ + 获取综合信用评价证书所需数据 + Parameters: + - + Returns: + result: dict 证书所需数据 + """ + # 企业基本信息 + data_01 = find_tfse_db(db="企业", col="公司基本信息", query={'企业ID': param['cid']})[0] + # 评价结果 + data_02 = find_tfse_db(db="评价", col="评价结果", query={"评价ID": param['rid']})[0] + info = dict() + info['企业名称'] = param['company'] + info['统一社会信用代码'] = data_01['工商信息']['纳税人识别号'] + info['企业级别'] = data_02['信用等级'] + info['证书编号'] = generate_number() + info['有效日期'] = effective_date() + return info - info = dict() - info['企业名称'] = param['company'] - info['统一社会信用代码'] = data_01['工商信息']['纳税人识别号'] - info['企业级别'] = data_02['信用等级'] - info['证书编号'] = generate_number() - info['有效日期'] = effective_date() + def esg(): + """ + 获取esg评价证书所需数据 + Parameters: + - + Returns: + result: dict 证书所需数据 + """ + # 企业基本信息 + data_01 = find_tfse_db(db="企业", col="公司基本信息", query={'企业ID': param['cid']})[0] + # 评价结果 + data_02 = find_tfse_db(db="评价", col="ESG评价结果", query={"评价ID": param['rid']})[0] + info = dict() + info['企业名称'] = param['company'] + info['统一社会信用代码'] = data_01['工商信息']['纳税人识别号'] + info['ESG得分'] = data_02['ESG得分'] + info['评价等级'] = data_02['评价等级'] + info['证书编号'] = generate_esg_number() + info['有效日期'] = effective_date() + return info - return info + if 'type' in param: + result = esg() + else: + result = general() + + return result def generate_number(): @@ -47,6 +81,24 @@ def generate_number(): return number +def generate_esg_number(): + """ + 生成esg证书编号 + Parameters: + - + Returns: + result: 证书编号 + """ + project_type = 'ESG' + project_number = '02' + project_time = str(datetime.now().strftime('%Y%m%d%H%M')) + project_code = generate_code(project_type, project_number, project_time) + + number = project_type + project_number + project_time + project_code + + return number + + def generate_code(param1, param2, param3): """ 生成校验码(4位) diff --git a/Certificate/static/img/certificate_esg.jpg b/Certificate/static/img/certificate_esg.jpg new file mode 100644 index 0000000..35a2745 Binary files /dev/null and b/Certificate/static/img/certificate_esg.jpg differ