tfse-model-api-v0.2/Report/ReportImpl.py

1058 lines
47 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
import os
import datetime
import requests
import time
from DBHelper.MongoHelper import MongoHelper
from Report.PdfReport import ReportGenerator
from Report.ReportObj import ReportData
from Report.scripts.path_tool import get_gen_report_path
from common.scripts import update_process_status
class HandleReportData:
"""处理报告数据"""
report_data = None
report_template = None
def handle_cc_rating_report(self):
"""处理综信报告"""
def handle_paragraph_01(param):
"""
摘要
Parameters:
param: 摘要部分报告内容
Returns:
result: 处理好的报告内容
"""
data = self.report_data['报告模板'][0]['摘要']
def handle_part_01():
"""
评价结果
"""
param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['评价结果'][0])
param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['评价结果'][1])
def handle_part_02():
"""
主要财务数据
"""
param[1]['小节内容'][2]['表格'] = data['主要财务数据']
def handle_part_03():
"""
评价观点
"""
param[2]['小节内容'][0]['段落'] = param[2]['小节内容'][0]['段落'].format(**data['评价观点'][0])
param[2]['小节内容'][1]['段落'] = param[2]['小节内容'][1]['段落'].format(**data['评价观点'][1])
param[2]['小节内容'][2]['段落'] = param[2]['小节内容'][2]['段落'].format(**data['评价观点'][2])
param[2]['小节内容'][3]['段落'] = param[2]['小节内容'][3]['段落'].format(**data['评价观点'][3])
def handle_part_04():
"""
关注
"""
param[3]['小节内容'][0]['段落'] = param[3]['小节内容'][0]['段落'].format(**data['关注'][0])
param[3]['小节内容'][1]['段落'] = param[3]['小节内容'][1]['段落'].format(**data['关注'][1])
param[3]['小节内容'][2]['段落'] = param[3]['小节内容'][2]['段落'].format(**data['关注'][2])
# 调用子方法
handle_part_01()
handle_part_02()
handle_part_03()
handle_part_04()
return param
def handle_paragraph_02(param):
"""
公司概况
Parameters:
param: 公司概况部分报告内容
Returns:
result: 处理好的报告内容
"""
data = self.report_data['报告模板'][1]['一、公司概况']
def handle_part_01():
"""
公司背景
"""
param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['公司背景'][0])
param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['公司背景'][1])
def handle_part_02():
"""
股东实力
股东分为企业和自然人,如果股东为企业显示前两段,为自然人只显示最后一段
"""
# 判断返回的数据长度为2是企业为1是自然人
if len(data['股东实力']) == 1:
param[1]['小节内容'][2]['段落'] = param[1]['小节内容'][2]['段落'].format(**data['股东实力'][0])
# 删除前两段描述语句
del param[1]['小节内容'][0]
del param[1]['小节内容'][0]
else:
# 删除末尾语句
del param[1]['小节内容'][2]
param[1]['小节内容'][0]['段落'] = param[1]['小节内容'][0]['段落'].format(**data['股东实力'][0])
param[1]['小节内容'][1]['段落'] = param[1]['小节内容'][1]['段落'].format(**data['股东实力'][1])
def handle_part_03():
"""
对外投资
分为两种情况:一种是有对外投资数据,则只处理第一段和第四段,其他描述语句保留
另一种是没有对外投资数据,只显示返回的一句描述语句其他描述语句删除
"""
if len(data['对外投资']) == 1:
param[2]['小节内容'] = list()
describe = dict()
describe['段落'] = data['对外投资'][0]['describe']
param[2]['小节内容'].append(describe)
else:
param[2]['小节内容'][0]['段落'] = param[2]['小节内容'][0]['段落'].format(**data['对外投资'][0])
param[2]['小节内容'][3]['表格'] = data['对外投资'][1]
def handle_part_04():
"""
业务状况
"""
pass
def handle_part_05():
"""
进出口权
"""
param[4]['小节内容'][0]['段落'] = param[4]['小节内容'][0]['段落'].format(**data['进出口权'][0])
def handle_part_06():
"""
知识产权
"""
param[5]['小节内容'][0]['段落'] = param[5]['小节内容'][0]['段落'].format(**data['知识产权'][0])
param[5]['小节内容'][1]['段落'] = param[5]['小节内容'][1]['段落'].format(**data['知识产权'][1])
param[5]['小节内容'][2]['段落'] = param[5]['小节内容'][2]['段落'].format(**data['知识产权'][2])
def handle_part_07():
"""
荣誉资质(制造业)
荣誉资质共六段如果返回数据长度为1则此企业没有荣誉资质只显示最后一段话
如果长度大于1则先处理第一段和第二段第一段中返回字段存在无则删除此段
"""
if len(data['资质荣誉']) == 1:
param[6]['小节内容'] = list()
describe = dict()
describe['段落'] = '经查询,公司无技术、产品品质或品牌等方面的荣誉资质。'
param[6]['小节内容'].append(describe)
else:
param[6]['小节内容'][0]['段落'] = param[6]['小节内容'][0]['段落'].format(**data['资质荣誉'][0])
param[6]['小节内容'][1]['段落'] = param[6]['小节内容'][1]['段落'].format(**data['资质荣誉'][1])
param[6]['小节内容'][-2]['表格'] = data['资质荣誉'][2]
def handle_part_07_info():
"""
荣誉资质(信息技术业)
荣誉资质共六段如果返回数据长度为1则此企业没有荣誉资质只显示最后一段话
如果长度大于1则先处理第一段和第二段第一段中返回字段存在无则删除此段
"""
if len(data['资质荣誉']) == 1:
param[6]['小节内容'] = list()
describe = dict()
describe['段落'] = '经查询,公司无技术、产品品质或品牌等方面的荣誉资质。'
param[6]['小节内容'].append(describe)
else:
param[6]['小节内容'][0]['段落'] = param[6]['小节内容'][0]['段落'].format(**data['资质荣誉'][0])
param[6]['小节内容'][1]['段落'] = param[6]['小节内容'][1]['段落'].format(**data['资质荣誉'][1])
param[6]['小节内容'][2]['段落'] = param[6]['小节内容'][2]['段落'].format(**data['资质荣誉'][2])
param[6]['小节内容'][-2]['表格'] = data['资质荣誉'][3]
param_list = list()
for item in param[6]['小节内容']:
try:
if item['段落'] != '无数据':
param_list.append(item)
except KeyError:
param_list.append(item)
param[6]['小节内容'] = param_list
# 调用子方法
handle_part_01()
handle_part_02()
handle_part_03()
handle_part_04()
handle_part_05()
handle_part_06()
if self.report_data['行业选择'][0] == '制造业':
handle_part_07()
else:
handle_part_07_info()
return param
def handle_paragraph_03(param):
"""
ESG评价
Parameters:
param: ESG评价部分报告内容
Returns:
result: 处理好的报告内容
"""
data = self.report_data['报告模板'][2]['二、ESG评价']
def handle_part_01():
"""
环境治理
"""
param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['环境治理'][0])
param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['环境治理'][1])
def handle_part_02():
"""
社会责任
"""
param[1]['小节内容'][0]['段落'] = param[1]['小节内容'][0]['段落'].format(**data['社会责任'][0])
def handle_part_03():
"""
公司治理
"""
param[2]['小节内容'][0]['段落'] = param[2]['小节内容'][0]['段落'].format(**data['公司治理'][0])
# 调用子方法
handle_part_01()
handle_part_02()
handle_part_03()
return param
def handle_paragraph_04(param):
"""
财务分析
Parameters:
param: 财务分析部分报告内容
Returns:
result: 处理好的报告内容
"""
data = self.report_data['报告模板'][3]['三、财务分析']
def handle_part_01():
"""
盈利能力
"""
param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['盈利能力'][1])
def handle_part_02():
"""
资产质量
"""
param[1]['小节内容'][2]['段落'] = param[1]['小节内容'][2]['段落'].format(**data['资产质量'][2])
def handle_part_03():
"""
债务风险
"""
param[2]['小节内容'][1]['段落'] = param[2]['小节内容'][1]['段落'].format(**data['债务风险'][1])
def handle_part_04():
"""
成长能力
"""
param[3]['小节内容'][1]['段落'] = param[3]['小节内容'][1]['段落'].format(**data['成长能力'][1])
# 调用子方法
handle_part_01()
handle_part_02()
handle_part_03()
handle_part_04()
return param
def handle_paragraph_04_info(param):
"""
财务分析(信息技术业)
Parameters:
param: 财务分析部分报告内容
Returns:
result: 处理好的报告内容
"""
data = self.report_data['报告模板'][3]['三、财务分析']
def handle_part_01():
"""
盈利能力
"""
param[0]['小节内容'][2]['段落'] = param[0]['小节内容'][2]['段落'].format(**data['盈利能力'][2])
def handle_part_02():
"""资产质量"""
param[1]['小节内容'][0]['段落'] = param[1]['小节内容'][0]['段落'].format(**data['资产质量'][0])
def handle_part_03():
"""
债务风险
"""
param[2]['小节内容'][1]['段落'] = param[2]['小节内容'][1]['段落'].format(**data['债务风险'][1])
def handle_part_04():
"""
成长能力
"""
param[3]['小节内容'][1]['段落'] = param[3]['小节内容'][1]['段落'].format(**data['成长能力'][1])
# 调用子方法
handle_part_01()
handle_part_02()
handle_part_03()
handle_part_04()
return param
def handle_paragraph_05(param):
"""
企业风险
Parameters:
param: 企业风险部分报告内容
Returns:
result: 处理好的报告内容
"""
data = self.report_data['报告模板'][4]['四、企业风险']
def handle_part_01():
"""
合规风险
"""
param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['合规风险'][0])
def handle_part_02():
"""
经营风险
"""
param[1]['小节内容'][0]['段落'] = param[1]['小节内容'][0]['段落'].format(**data['经营风险'][0])
def handle_part_03():
"""
关联风险
"""
param[2]['小节内容'][0]['段落'] = param[2]['小节内容'][0]['段落'].format(**data['关联风险'][0])
# 调用子方法
handle_part_01()
handle_part_02()
handle_part_03()
return param
def handle_paragraph_06(param):
"""
评级结论
Parameters:
param: 评级结论部分报告内容
Returns:
result: 处理好的报告内容
"""
data = self.report_data['报告模板'][5]['五、评级结论']
def handle_part_01():
"""
结论
"""
param[0]['小节内容'][0]['段落'] = param[0]['小节内容'][0]['段落'].format(**data['结论'][0])
param[0]['小节内容'][1]['段落'] = param[0]['小节内容'][1]['段落'].format(**data['结论'][1])
param[0]['小节内容'][2]['段落'] = param[0]['小节内容'][2]['段落'].format(**data['结论'][2])
# 调用子方法
handle_part_01()
return param
def handle_paragraph_07(param):
"""
附录
Parameters:
param: 评级结论部分报告内容
Returns:
result: 处理好的报告内容
"""
data = self.report_data['报告模板'][6]['附录']
def handle_part_01():
"""
附录一
"""
param[0]['小节内容'][1]['表格'] = data['附录一']
# 调用子方法
handle_part_01()
return param
def manufacturing():
"""制造业"""
for index in range(len(self.report_template['报告内容'])):
if self.report_template['报告内容'][index]['章节'] == '摘要':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_01(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '一、公司概况':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_02(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '二、ESG评价':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_03(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '三、财务分析':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_04(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '四、企业风险':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_05(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '五、评级结论':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_06(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '附录':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_07(
self.report_template['报告内容'][index]['章节内容'])
def information_technology():
"""信息技术业"""
for index in range(len(self.report_template['报告内容'])):
if self.report_template['报告内容'][index]['章节'] == '摘要':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_01(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '一、公司概况':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_02(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '二、ESG评价':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_03(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '三、财务分析':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_04_info(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '四、企业风险':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_05(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '五、评级结论':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_06(
self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '附录':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_07(
self.report_template['报告内容'][index]['章节内容'])
if self.report_data['行业选择'][0] == '制造业':
manufacturing()
elif self.report_data['行业选择'][0] == '信息技术业':
information_technology()
result = dict()
result['评价ID'] = self.report_data['评价ID']
result['企业ID'] = self.report_data['企业ID']
result['企业名称'] = self.report_data['企业名称']
result['评价年度'] = self.report_data['评价年度']
result['行业选择'] = self.report_data['行业选择']
result['生成日期'] = datetime.datetime.now().strftime("%Y-%m-%d")
result['报告内容'] = self.report_template['报告内容']
return result
def handle_esg_rating_report(self):
"""处理esg报告"""
def handle_paragraph_01(param):
"""
远东资信
Parameters:
param dict 远东资信段落模板
Returns:
result dict 处理好的报告模板
"""
param[2]['段落'] = param[2]['段落'].format(self.report_data['报告模板']['远东资信']['联系电话'])
param[3]['段落'] = param[3]['段落'].format(self.report_data['报告模板']['远东资信']['联系人'])
return param
def handle_paragraph_02(param):
"""
基本信息
Parameters:
param dict 基本信息段落模板
Returns:
result dict 处理好的报告模板
"""
param[0]['段落'] = param[0]['段落'].format(self.report_data['报告模板']['基本信息']['公司名称'])
param[1]['段落'] = param[1]['段落'].format(self.report_data['报告模板']['基本信息']['所属行业'])
return param
def handle_paragraph_03(param):
"""
公司ESG等级
Parameters:
param dict 公司ESG等级段落模板
Returns:
result dict 处理好的报告模板
"""
param[0]['段落'] = param[0]['段落'].format(self.report_data['报告模板']['公司ESG等级']['评价等级'])
return param
def handle_paragraph_04(param):
"""
环境部分
Parameters:
param dict 环境部分段落模板
Returns:
result dict 处理好的报告模板
"""
def handle_part_03():
"""
段落3
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落3']
param[2]['段落'] = param[2]['段落'].format(date_range=data['date_range'],
co2_emissions=data['co2_emissions'])
def handle_part_04():
"""
段落4
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落4']
param[3]['段落'] = param[3]['段落'].format(date_range=data['date_range'],
co2_emissions=data['co2_emissions'],
year_02=data['year_02'], year_03=data['year_03'],
year01_on_year02=data['year01_on_year02'],
year02_on_year03=data['year02_on_year03'],
industry_indicators=data['industry_indicators'],
industry_indicators_average=data['industry_indicators_average'],
industry_indicators_median=data['industry_indicators_median'],
median_comparison=data['median_comparison'])
def handle_part_06():
"""
段落4
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落6']
param[5]['段落'] = param[5]['段落'].format(date_range=data['date_range'],
energy_consumption=data['energy_consumption'])
def handle_part_07():
"""
段落7
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落7']
param[6]['段落'] = param[6]['段落'].format(date_range=data['date_range'],
energy_consumption=data['energy_consumption'],
year_02=data['year_02'], year_03=data['year_03'],
year01_on_year02=data['year01_on_year02'],
year02_on_year03=data['year02_on_year03'],
industry_indicators=data['industry_indicators'],
industry_indicators_average=data['industry_indicators_average'],
industry_indicators_median=data['industry_indicators_median'],
median_comparison=data['median_comparison'])
def handle_part_08():
"""
段落8
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落8']
param[7]['段落'] = param[7]['段落'].format(date_range=data['date_range'],
energy_consumption=data['energy_consumption'])
def handle_part_09():
"""
段落9
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落9']
param[8]['段落'] = param[8]['段落'].format(date_range=data['date_range'],
energy_consumption=data['energy_consumption'])
def handle_part_10():
"""
段落10
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落10']
param[9]['段落'] = param[9]['段落'].format(date_range=data['date_range'],
consume_water=data['consume_water'])
def handle_part_11():
"""
段落11
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落11']
param[10]['段落'] = param[10]['段落'].format(date_range=data['date_range'],
consume_water=data['consume_water'],
year_02=data['year_02'], year_03=data['year_03'],
year01_on_year02=data['year01_on_year02'],
year02_on_year03=data['year02_on_year03'],
industry_indicators=data['industry_indicators'],
industry_indicators_average=data[
'industry_indicators_average'],
industry_indicators_median=data['industry_indicators_median'],
median_comparison=data['median_comparison'])
def handle_part_12():
"""
段落12
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落12']
param[11]['段落'] = param[11]['段落'].format(describe=data['describe'])
def hanlde_part_13():
"""
段落13
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['环境部分']['段落13']
param[12]['段落'] = param[12]['段落'].format(describe=data['describe'])
def judge_false():
"""
判断语句描述中是否有false有则删除
Parameters:
param type 参数名
Returns:
result type 返回数据
"""
new_list = list()
for item in param:
if item['段落'] != 'False':
new_list.append(item)
return new_list
# 调用子方法
handle_part_03()
handle_part_04()
handle_part_06()
handle_part_07()
handle_part_08()
handle_part_09()
handle_part_10()
handle_part_11()
handle_part_12()
hanlde_part_13()
result = judge_false()
return result
def handle_paragraph_05(param):
"""
社会部分
Parameters:
param dict 社会部分段落模板
Returns:
result dict 处理好的报告模板
"""
def handle_part_02():
"""
段落2
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['社会部分']['段落2']
param[1]['段落'] = param[1]['段落'].format(date_range=data['date_range'],
turnover_ratio=data['turnover_ratio'],
year_03=data['year_03'],
industry_indicators=data['industry_indicators'],
industry_indicators_average=data['industry_indicators_average'],
industry_indicators_median=data['industry_indicators_median'],
median_comparison=data['median_comparison'])
def handle_part_03():
"""
段落3
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['社会部分']['段落3']
param[2]['段落'] = param[2]['段落'].format(date_range=data['date_range'], salary_level=data['salary_level'],
year_02=data['year_02'], year_03=data['year_03'],
year01_on_year02=data['year01_on_year02'],
year02_on_year03=data['year02_on_year03'],
industry_indicators=data['industry_indicators'],
industry_indicators_average=data['industry_indicators_average'],
industry_indicators_median=data['industry_indicators_median'],
median_comparison=data['median_comparison'])
def handle_part_04():
"""
段落4
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['社会部分']['段落4']
param[3]['段落'] = param[3]['段落'].format(describe=data['describe'])
def handle_part_05():
"""
段落5
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['社会部分']['段落5']
param[4]['段落'] = param[4]['段落'].format(describe=data['describe'])
def handle_part_06():
"""
段落6
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['社会部分']['段落6']
param[5]['段落'] = param[5]['段落'].format(date_range=data['date_range'],
training_number=data['training_number'], year_03=data['year_03'],
industry_indicators=data['industry_indicators'])
def handle_part_07():
"""
段落7
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['社会部分']['段落7']
param[6]['段落'] = param[6]['段落'].format(date_range=data['date_range'],
salary_level=data['salary_level'], year_03=data['year_03'],
industry_indicators=data['industry_indicators'])
def handle_part_08():
"""
段落8
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['社会部分']['段落8']
param[7]['段落'] = param[7]['段落'].format(describe=data['describe'])
def handle_part_09():
"""
段落9
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['社会部分']['段落9']
param[8]['段落'] = param[8]['段落'].format(describe=data['describe'])
def judge_false():
"""
判断语句描述中是否有false有则删除
Parameters:
param type 参数名
Returns:
result type 返回数据
"""
new_list = list()
for item in param:
if item['段落'] != 'False':
new_list.append(item)
return new_list
# 调用子方法
handle_part_02()
handle_part_03()
handle_part_04()
handle_part_05()
handle_part_06()
handle_part_07()
handle_part_08()
handle_part_09()
result = judge_false()
return result
def handle_paragraph_06(param):
"""
公司治理部分
Parameters:
param dict 社会部分段落模板
Returns:
result dict 处理好的报告模板
"""
def handle_part_02():
"""
段落2
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['公司治理部分']['段落2']
param[1]['段落'] = param[1]['段落'].format(describe=data['describe'])
def handle_part_03():
"""
段落3
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['公司治理部分']['段落3']
param[2]['段落'] = param[2]['段落'].format(describe=data['describe'])
def handle_part_04():
"""
段落4
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['公司治理部分']['段落4']
param[3]['段落'] = param[3]['段落'].format(experience_year=data['experience_year'],
industry_indicators_average=data['industry_indicators_average'])
def handle_part_05():
"""
段落5
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['公司治理部分']['段落5']
param[4]['段落'] = param[4]['段落'].format(describe=data['describe'])
def handle_part_06():
"""
段落6
Parameters:
-
Returns:
result dict 处理好的报告段落模板
"""
data = self.report_data['报告模板']['公司治理部分']['段落6']
param[5]['段落'] = param[5]['段落'].format(board_meetings_number=data['board_meetings_number'],
industry_indicators_average=data['industry_indicators_average'])
def judge_false():
"""
判断语句描述中是否有false有则删除
Parameters:
param type 参数名
Returns:
result type 返回数据
"""
new_list = list()
for item in param:
if item['段落'] != 'False':
new_list.append(item)
return new_list
# 调用子方法
handle_part_02()
handle_part_03()
handle_part_04()
handle_part_05()
handle_part_06()
result = judge_false()
return result
self.report_template['企业名称'] = self.report_data['企业名称']
self.report_template['评价ID'] = self.report_data['评价ID']
self.report_template['企业ID'] = self.report_data['企业ID']
self.report_template['评价年度'] = self.report_data['评价年度']
self.report_template['生成日期'] = datetime.datetime.now().strftime("%Y-%m-%d")
self.report_template['报告类型'] = 'ESG'
for index in range(len(self.report_template['报告内容'])):
if self.report_template['报告内容'][index]['章节'] == '远东资信':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_01(self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '基本信息':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_02(self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '公司ESG等级':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_03(self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '环境部分':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_04(self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '社会部分':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_05(self.report_template['报告内容'][index]['章节内容'])
elif self.report_template['报告内容'][index]['章节'] == '公司治理部分':
self.report_template['报告内容'][index]['章节内容'] = handle_paragraph_06(self.report_template['报告内容'][index]['章节内容'])
return self.report_template
class GenerateReport(ReportData):
"""报告生成类"""
db = MongoHelper("tfse_v0.21")
def generate_pdf(self, name, content, database):
# 生成PDF报告文件以时间戳命名临时存储
report_file_name = '{}_{}.pdf'.format(name, int(time.time()))
pdf_report = ReportGenerator(name=report_file_name, text_model=content)
pdf_report.gen_report()
# 保存PDF报告文件删除临时存储的报告
file_id = self.db.upsert_file('文件', database, 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
def generate_cc_rating_report(self):
"""生成综信评价报告"""
def get_report_prepare_data():
"""获取报告准备数据"""
search = self.dict_to_save(columns=['企业ID', '评价ID', '企业名称'])
data = {"cid": search['企业ID'], "rid": search['评价ID'], "company": search['企业名称']}
url = 'http://api.fecribd.com/etl_tfse/rating/report_data'
token = 'dmfd7FshT!5Wng9^gcCcQV7T6FBnVgl4'
headers = {'token': token, 'Content-Type': 'application/json;charset=UTF-8'}
result = requests.post(url, headers=headers, data=json.dumps(data))
return json.loads(result.text) if result.status_code == 200 else False
def get_report_template():
"""获取报告模板"""
template = self.db.find_single_data(
'模型端',
'综信报告模板',
{"行业": industry},
['报告内容']
)
return template
def save_report_data(data):
"""保存处理好的报告数据"""
self.db.upsert_single_data(
'综信评价数据',
'报告数据',
{'评价ID': self.rid},
data
)
update_process_status(self.rid, '综合评价流程', {"评价流程.文档生成.报告数据": 1})
fid = self.generate_pdf(self.name, data, '综信报告')
return fid
prepare_report_data = get_report_prepare_data()
if prepare_report_data is False:
return {"info": "报告准备数据生成错误"}, 210
industry = prepare_report_data['data']['行业选择'][0]
report_template = get_report_template()
if report_template is False:
return {"info": "未查询到此行业相关报告"}, 210
handle = HandleReportData()
handle.report_data = prepare_report_data['data']
handle.report_template = report_template
report_content = handle.handle_cc_rating_report()
save_report = save_report_data(report_content)
if save_report is not False:
return {"info": "生成报告成功", "result": {"FileID": save_report}}, 200
else:
return {"info": "生成报告失败"}, 210
def generate_esg_rating_report(self):
"""生成ESG评价报告"""
def get_report_prepare_data():
"""获取报告准备数据"""
search = self.dict_to_save(columns=['企业ID', '评价ID', '企业名称'])
data = {"cid": search['企业ID'], "rid": search['评价ID'], "company": search['企业名称']}
url = 'http://api.fecribd.com/etl_tfse/rating/esg_report_data'
token = 'dmfd7FshT!5Wng9^gcCcQV7T6FBnVgl4'
headers = {'token': token, 'Content-Type': 'application/json;charset=UTF-8'}
result = requests.post(url, headers=headers, data=json.dumps(data))
return json.loads(result.text) if result.status_code == 200 else False
def get_report_template():
"""获取报告模板"""
template = self.db.find_single_data(
'模型端',
'ESG报告模板',
{},
['报告内容']
)
return template
def save_report_data():
"""保存处理好的报告数据"""
self.db.upsert_single_data(
'ESG评价数据',
'报告数据',
{'评价ID': self.rid},
report_content
)
update_process_status(self.rid, 'ESG评价流程', {"评价流程.文档生成.报告数据": 1})
fid = self.generate_pdf(self.name, report_content, 'ESG报告')
return fid
prepare_report_data = get_report_prepare_data()
if prepare_report_data is False:
return {"info": "报告准备数据生成错误"}, 210
report_template = get_report_template()
if report_template is False:
return {"info": "未查询到此行业相关报告"}, 210
handle = HandleReportData()
handle.report_data = prepare_report_data['data']
handle.report_template = report_template
report_content = handle.handle_esg_rating_report()
save_report = save_report_data()
if save_report is not False:
return {"info": "生成报告成功", "result": {"FileID": save_report}}, 200
else:
return {"info": "生成报告失败"}, 210
def generate_admin_report(self, report_content):
"""生成通用报告"""
name = report_content['企业名称']
text_model = report_content
if '评价类型' in report_content:
database = 'ESG报告'
else:
database = '综信报告'
fid = self.generate_pdf(name, text_model, database)
if fid is not False:
return {"info": "生成报告成功", "result": {"FileID": fid}}, 200
else:
return {"info": "生成报告失败"}, 210