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