63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
import datetime
|
|
import json
|
|
import time
|
|
|
|
from Report.PdfReport import ReportGenerator
|
|
from Report.scripts.contents import *
|
|
|
|
|
|
class ReportModel:
|
|
"""
|
|
信息技术业报告模板
|
|
"""
|
|
|
|
def __init__(self, prepare, template):
|
|
"""
|
|
Parameters:
|
|
prepare: dict 报告准备数据
|
|
template: dict 报告模板
|
|
"""
|
|
self.data = prepare
|
|
self.doc = template
|
|
|
|
def report_values(self):
|
|
"""
|
|
生成报告数据
|
|
Parameters:
|
|
report_template 报告准备数据
|
|
report_data 报告模板
|
|
Returns:
|
|
report_template 报告数据
|
|
"""
|
|
|
|
self.doc['评价ID'] = self.data['评价ID']
|
|
self.doc['企业ID'] = self.data['企业ID']
|
|
self.doc['企业名称'] = self.data['企业名称']
|
|
self.doc['评价年度'] = self.data['评价年度']
|
|
self.doc['行业选择'] = self.data['行业选择']
|
|
self.doc['生成日期'] = datetime.datetime.now().strftime("%Y-%m-%d")
|
|
self.doc['报告内容'] = self.report_content()
|
|
|
|
return self.doc
|
|
|
|
def report_content(self):
|
|
"""
|
|
根据行业选择报告内容具体逻辑流程
|
|
"""
|
|
industry = self.data['行业选择'][0]
|
|
if industry == '制造业':
|
|
return handle_manufacturing_content(self.doc, self.data)
|
|
elif industry == '信息技术业':
|
|
return handle_information_content(self.doc, self.data)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
with open('../Report/static/test/report_data_info.json', 'r', encoding='utf-8') as f:
|
|
data = json.load(f)
|
|
with open('../Report/static/ReportTemplates/信息技术业.json', 'r', encoding='utf-8') as f:
|
|
doc = json.load(f)
|
|
model = ReportModel(data, doc)
|
|
text_model = model.report_values()
|
|
report_file_name = '{}_{}.pdf'.format(data['企业名称'], int(time.time()))
|
|
pdf_report = ReportGenerator(name=report_file_name, text_model=text_model)
|
|
pdf_report.gen_report() |