update 准备企业主页数据接口重写

This commit is contained in:
P3ngSaM 2022-04-19 17:04:40 +08:00
parent 5fdc08e843
commit 62f3f22bae
3 changed files with 333 additions and 9 deletions

View File

@ -1,9 +1,12 @@
import json
import time
import requests
from DBHelper.MongoHelper import MongoHelper
from Utils.ErrorUtil import LogConditionCheckFailed
from CompanyData.CompanyDataObj import CompanyData, BasicInfo, ShareHolder, MainMember
from CompanyData.CompanyDataObj import CompanyData, BasicInfo, ShareHolder, MainMember, ComprehensiveCreditAnalysis, \
CreditPerformance, MaxScore, IndicatorRadar, IndexScore, CreditAnalysis
class CompanyDataImpl(CompanyData):
@ -170,3 +173,134 @@ class CompanyDataImpl(CompanyData):
prepare_industry_l1()
__main__()
class CompanyIndexImpl(ComprehensiveCreditAnalysis):
"""企业主页数据实现类"""
db = MongoHelper("tfse_v0.21")
def cc_rating_etl(self):
"""准备综合评价信息数据"""
rating_record = self.db.find_single_data(
'企业数据',
'评价记录',
{"评价ID": self.rid},
["报告fid"]
)
rating_result = self.db.find_single_data(
'综信评价数据',
'评价结果',
{"评价ID": self.rid},
["企业ID", "企业名称", "经营评分", "财务评分", "风险评分", "评价年度"]
)
text_model = self.db.find_single_data(
'综信评价数据',
'报告数据',
{"评价ID": self.rid},
["行业选择", "报告内容"]
)
def result_head():
"""结果数据"""
self.cid = rating_result['企业ID']
self.name = rating_result['企业名称']
self.update_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
def make_radar_chart():
"""综合信用指标表现雷达图数据"""
max_score = MaxScore()
max_score.environment = 10
max_score.social_responsibility = 10
max_score.corporate_governance = 16
max_score.profitability = 18
max_score.asset_quality = 18
max_score.debt_risk = 18
max_score.operational_growth = 18
max_score.compliance_risk = 43
max_score.cperational_risk = 10
max_score.associated_risk = 10
index_score = IndexScore()
index_score.environment = rating_result['经营评分']["环境"]
index_score.social_responsibility = rating_result['经营评分']["社会责任"]
index_score.corporate_governance = rating_result['经营评分']["公司治理"]
index_score.profitability = rating_result['财务评分']["盈利能力"]['合计']
index_score.asset_quality = rating_result['财务评分']["资产质量"]['合计']
index_score.debt_risk = rating_result['财务评分']["债务风险"]['合计']
index_score.operational_growth = rating_result['财务评分']["经营增长"]['合计']
index_score.compliance_risk = round(43 - rating_result['风险评分']["合规风险"], 2)
index_score.cperational_risk = round(10 - rating_result['风险评分']["经营风险"]['合计'], 2)
index_score.associated_risk = round(10 - rating_result['风险评分']["关联风险"]['合计'], 2)
indicator_radar = IndicatorRadar()
indicator_radar.max_score = index_score.dict_to_save()
indicator_radar.max_score = max_score.dict_to_save()
credit_performence = CreditPerformance()
credit_performence.indicator_radar = indicator_radar.dict_to_save()
self.performance = credit_performence.dict_to_save()
def credit_analysis_content():
"""综合评价分析中信用分析数据"""
def business_analysis_content():
"""经营分析"""
describe = text_model['报告内容'][1]['章节内容'][0]['小节内容'][1]['段落']
return describe
def financial_analysis_content():
"""财务分析"""
if text_model['行业选择'][0] == '制造业':
describe = list()
describe.append(text_model['报告内容'][3]['章节内容'][0]['小节内容'][1]['段落'])
describe.append(text_model['报告内容'][3]['章节内容'][1]['小节内容'][2]['段落'])
describe = ''.join(describe)
else:
describe = text_model['报告内容'][3]['章节内容'][0]['小节内容'][2]['段落']
return describe
def risk_analysis_content():
"""风险分析"""
risk_01 = text_model['报告内容'][4]['章节内容'][0]['小节内容'][0]['段落']
list_01 = risk_01.split('')
risk_02 = text_model['报告内容'][4]['章节内容'][1]['小节内容'][0]['段落']
list_02 = risk_02.split('')
risk_03 = text_model['报告内容'][4]['章节内容'][2]['小节内容'][0]['段落']
list_03 = risk_03.split('')
describe = list()
describe.append(list_01[::-1][0])
describe.append(list_02[::-1][0])
describe.append(list_03[::-1][0])
describe = ','.join(describe)
res = describe.replace('', '', 2)
return res
def evaluation_comments_content():
"""评价意见"""
describe = list()
eva_01 = text_model['报告内容'][5]['章节内容'][0]['小节内容'][0]['段落']
eva_02 = text_model['报告内容'][5]['章节内容'][0]['小节内容'][1]['段落']
eva_03 = text_model['报告内容'][5]['章节内容'][0]['小节内容'][2]['段落']
describe.append(eva_01)
describe.append(eva_02)
describe.append(eva_03)
describe = ''.join(describe)
return describe
credit_analysis = CreditAnalysis()
credit_analysis.management_analysis = business_analysis_content()
credit_analysis.finance_analysis = financial_analysis_content()
credit_analysis.risk_analysis = risk_analysis_content()
credit_analysis.evaluation_opinion = evaluation_comments_content()
credit_analysis.view_report = '/file/get_company_report?file_id={}'.format(rating_record['报告fid'])
self.credit_analysis = credit_analysis.dict_to_save()
def rating_history():
"""历史级别"""
def financial_analysis(self):
"""准备财务要素信息"""
pass
def risk_analysis_etl(self):
"""准备风险要素信息"""
pass

View File

@ -198,3 +198,188 @@ class CompanyData(SpecObject):
def prepare_company_init_data(self):
"""准备企业初始化数据"""
class IndexScore(SpecObject):
"""指标得分"""
environment = ValidateAttr(field='environment', type=(int, float))
social_responsibility = ValidateAttr(field='social_responsibility', type=(int, float))
corporate_governance = ValidateAttr(field='corporate_governance', type=(int, float))
profitability = ValidateAttr(field='profitability', type=(int, float))
asset_quality = ValidateAttr(field='asset_quality', type=(int, float))
debt_risk = ValidateAttr(field='debt_risk', type=(int, float))
operational_growth = ValidateAttr(field='operational_growth', type=(int, float))
compliance_risk = ValidateAttr(field='compliance_risk', type=(int, float))
cperational_risk = ValidateAttr(field='cperational_risk', type=(int, float))
associated_risk = ValidateAttr(field='associated_risk', type=(int, float))
fields_map = {
"environment": "环境",
"social_responsibility": "社会责任",
"corporate_governance": "公司治理",
"profitability": "盈利能力",
"asset_quality": "资产质量",
"debt_risk": "债务风险",
"operational_growth": "经营增长",
"compliance_risk": "合规风险",
"cperational_risk": "经营风险",
"associated_risk": "关联风险"
}
class MaxScore(SpecObject):
"""最大分数"""
environment = ValidateAttr(field='environment', type=int)
social_responsibility = ValidateAttr(field='social_responsibility', type=int)
corporate_governance = ValidateAttr(field='corporate_governance', type=int)
profitability = ValidateAttr(field='profitability', type=int)
asset_quality = ValidateAttr(field='asset_quality', type=int)
debt_risk = ValidateAttr(field='debt_risk', type=int)
operational_growth = ValidateAttr(field='operational_growth', type=int)
compliance_risk = ValidateAttr(field='compliance_risk', type=int)
cperational_risk = ValidateAttr(field='cperational_risk', type=int)
associated_risk = ValidateAttr(field='associated_risk', type=int)
fields_map = {
"environment": "环境",
"social_responsibility": "社会责任",
"corporate_governance": "公司治理",
"profitability": "盈利能力",
"asset_quality": "资产质量",
"debt_risk": "债务风险",
"operational_growth": "经营增长",
"compliance_risk": "合规风险",
"cperational_risk": "经营风险",
"associated_risk": "关联风险"
}
class IndicatorRadar(SpecObject):
"""指标雷达"""
index_score = ValidateAttr(field='index_score', type=IndexScore)
max_score = ValidateAttr(field='max_score', type=MaxScore)
fields_map = {
"index_score": "指标得分",
"max_score": "最大分数"
}
class CreditPerformance(SpecObject):
"""综合信用表现"""
indicator_radar = ValidateAttr(field='indicator_radar', type=IndicatorRadar)
fields_map = {
"indicator_radar": "指标雷达"
}
class CreditAnalysis(SpecObject):
"""信用分析"""
management_analysis = ValidateAttr(field='management_analysis', type=str)
finance_analysis = ValidateAttr(field='finance_analysis', type=str)
risk_analysis = ValidateAttr(field='risk_analysis', type=str)
evaluation_opinion = ValidateAttr(field='evaluation_opinion', type=str)
view_report = ValidateAttr(field='view_report', type=str)
fields_map = {
"management_analysis": "经营分析",
"finance_analysis": "财务分析",
"risk_analysis": "风险分析",
"evaluation_opinion": "评价意见",
"view_report": "查看报告"
}
class FinancialIndicators(SpecObject):
"""财务指标"""
profitability = ValidateAttr(field='financial_indicators', in_list=['', '', '', ''])
asset_quality = ValidateAttr(field='asset_quality', in_list=['', '', '', ''])
debt_risk = ValidateAttr(field='debt_risk', in_list=['', '', '', ''])
operating_growth = ValidateAttr(field='operating_growth', in_list=['', '', '', ''])
fields_map = {
"profitability": "盈利能力",
"asset_quality": "资产质量",
"debt_risk": "债务风险",
"operating_growth": "经营增长"
}
class RiskIndicators(SpecObject):
"""风险指标"""
compliance_risk = ValidateAttr(field='compliance_risk', in_list=['', '', '', ''])
operational_risk = ValidateAttr(field='operational_risk', in_list=['', '', '', ''])
associated_risk = ValidateAttr(field='associated_risk', in_list=['', '', '', ''])
fields_map = {
"compliance_risk": "合规风险",
"operational_risk": "经营风险",
"associated_risk": "关联风险"
}
class OperatingIndicators(SpecObject):
"""经营指标"""
environmental = ValidateAttr(field='environmental', in_list=['', '', '', ''])
social_responsibility = ValidateAttr(field='social_responsibility', in_list=['', '', '', ''])
corporate_governance = ValidateAttr(field='corporate_governance', in_list=['', '', '', ''])
fields_map = {
"environmental": "环境",
"social_responsibility": "社会责任",
"corporate_governance": "公司治理"
}
class IndexTable(SpecObject):
"""指标表格"""
financial_indicators = ValidateAttr(field='financial_indicators', type=FinancialIndicators)
risk_indicators = ValidateAttr(field='risk_indicators', type=RiskIndicators)
operating_indicators = ValidateAttr(field='operating_indicators', type=OperatingIndicators)
fields_map = {
"financial_indicators": "财务指标",
"risk_indicators": "风险指标",
"operating_indicators": "经营指标"
}
class HistoryLevel(SpecObject):
"""历史级别"""
credit_rating = ValidateAttr(field='credit_rating', type=str)
credit_score = ValidateAttr(field='credit_score', type=(float, int))
evaluation_time = ValidateAttr(field='evaluation_time', type=str)
evaluation_method = ValidateAttr(field='evaluation_method', type=str, in_list=['企业申报'])
change_trend = ValidateAttr(field='change_trend', type=str)
fields_map = {
"credit_rating": "信用等级",
"credit_score": "信用评分",
"evaluation_time": "评价时间",
"evaluation_method": "评价方式",
"change_trend": "变化趋势"
}
class ComprehensiveCreditAnalysis(SpecObject):
"""综合信用分析"""
cid = ValidateAttr(field='cid', type=str, length=8)
rid = ValidateAttr(field='rid', type=str, length=8)
name = ValidateAttr(field='name', type=str)
update_time = ValidateAttr(field='update_time', type=str)
performance = ValidateAttr(field='performance', type=CreditPerformance)
credit_analysis = ValidateAttr(field='credit_analysis', type=CreditAnalysis)
index_table = ValidateAttr(field='index_table', type=IndexTable)
history_level = ValidateAttr(field='history_level', instance_list=HistoryLevel)
fields_map = {
"cid": "企业ID",
"rid": "评价ID",
"name": "企业名称",
"update_time": "更新时间",
"performance": "综合信用表现",
"analysis": "信用分析",
"index_table": "指标表格",
"history_level": "历史级别"
}

View File

@ -1,6 +1,6 @@
from flask import Blueprint, request
from CompanyData.CompanyDataImpl import CompanyDataImpl
from CompanyData.CompanyDataImpl import CompanyDataImpl, CompanyIndexImpl
from Utils.ErrorUtil import ReturnConditionCheckFailed
from common.utils import verify_token
from CompanyData.job_scripts import *
@ -43,13 +43,18 @@ def general_rating():
Returns:
-
"""
rid = request.json['rid']
cc_rating_etl(rid)
financial_analysis(rid)
risk_analysis_etl(rid)
try:
company_index = CompanyIndexImpl()
company_index.cid = request.json['rid']
company_index.cc_rating_etl()
company_index.financial_analysis()
company_index.risk_analysis_etl()
return {"info": "数据准备完成"}, 200
except ReturnConditionCheckFailed as e:
e.log_error()
return {"info": e.failed_info}, e.status_code
except KeyError:
return {"info": "参数错误"}, 400
@company_route.route('/esg_index_etl', methods=['POST'])