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

This commit is contained in:
P3ngSaM 2022-04-20 17:00:34 +08:00
parent 62f3f22bae
commit 57d7b6d165
4 changed files with 572 additions and 201 deletions

View File

@ -1,12 +1,13 @@
import json
import time
import requests
import pandas as pd
from DBHelper.MongoHelper import MongoHelper
from Utils.ErrorUtil import LogConditionCheckFailed
from CompanyData.CompanyDataObj import CompanyData, BasicInfo, ShareHolder, MainMember, ComprehensiveCreditAnalysis, \
CreditPerformance, MaxScore, IndicatorRadar, IndexScore, CreditAnalysis
FinancialElementsAnalysis, BusinessElementsAnalysis
from common.utils import sub_dict, df_iterrows
class CompanyDataImpl(CompanyData):
@ -80,12 +81,16 @@ class CompanyDataImpl(CompanyData):
for result in results:
share_holder = ShareHolder()
share_holder.name = result['name']
share_holder.share_holder_type = "公司" if result['type'] == 1 else ("个人" if result['type'] == 2 else "其他")
share_holder.share_holder_type = "公司" if result['type'] == 1 else (
"个人" if result['type'] == 2 else "其他")
if result.__contains__('capital'):
share_holder.share_holding_ratio = None if result['capital'][0]['percent'] == '' else result['capital'][0]['percent']
share_holder.subscription_amount = None if result['capital'][0]['amomon'] == '' else result['capital'][0]['amomon']
share_holder.subscription_date = None if result['capital'][0]['time'] == '' else result['capital'][0]['time']
share_holder.share_holding_ratio = None if result['capital'][0]['percent'] == '' else \
result['capital'][0]['percent']
share_holder.subscription_amount = None if result['capital'][0]['amomon'] == '' else \
result['capital'][0]['amomon']
share_holder.subscription_date = None if result['capital'][0]['time'] == '' else \
result['capital'][0]['time']
else:
share_holder.share_holding_ratio = None
share_holder.subscription_amount = None
@ -175,12 +180,11 @@ class CompanyDataImpl(CompanyData):
__main__()
class CompanyIndexImpl(ComprehensiveCreditAnalysis):
"""企业主页数据实现"""
class CreditAnalysisImpl(ComprehensiveCreditAnalysis):
"""综合信用分析"""
db = MongoHelper("tfse_v0.21")
def cc_rating_etl(self):
"""准备综合评价信息数据"""
rating_record = self.db.find_single_data(
'企业数据',
'评价记录',
@ -193,12 +197,19 @@ class CompanyIndexImpl(ComprehensiveCreditAnalysis):
{"评价ID": self.rid},
["企业ID", "企业名称", "经营评分", "财务评分", "风险评分", "评价年度"]
)
rating_results = self.db.find_all_data(
'综信评价数据',
'评价结果',
{"企业ID": rating_result['企业ID']},
['信用等级', "信用评分", '评价时间', "评价方式"]
)
text_model = self.db.find_single_data(
'综信评价数据',
'报告数据',
{"评价ID": self.rid},
["行业选择", "报告内容"]
)
df_records = pd.DataFrame(rating_results).sort_values('评价时间', ascending=False)
def result_head():
"""结果数据"""
@ -207,8 +218,10 @@ class CompanyIndexImpl(ComprehensiveCreditAnalysis):
self.update_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
def make_radar_chart():
credit_performence = self.CreditPerformance()
indicator_radar = credit_performence.IndicatorRadar()
"""综合信用指标表现雷达图数据"""
max_score = MaxScore()
max_score = indicator_radar.MaxScore()
max_score.environment = 10
max_score.social_responsibility = 10
max_score.corporate_governance = 16
@ -220,7 +233,7 @@ class CompanyIndexImpl(ComprehensiveCreditAnalysis):
max_score.cperational_risk = 10
max_score.associated_risk = 10
index_score = IndexScore()
index_score = indicator_radar.IndexScore()
index_score.environment = rating_result['经营评分']["环境"]
index_score.social_responsibility = rating_result['经营评分']["社会责任"]
index_score.corporate_governance = rating_result['经营评分']["公司治理"]
@ -232,15 +245,14 @@ class CompanyIndexImpl(ComprehensiveCreditAnalysis):
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()
indicator_radar.index_score = index_score
indicator_radar.max_score = max_score
credit_performence.indicator_radar = indicator_radar
self.performance = credit_performence
def credit_analysis_content():
"""综合评价分析中信用分析数据"""
def business_analysis_content():
"""经营分析"""
describe = text_model['报告内容'][1]['章节内容'][0]['小节内容'][1]['段落']
@ -285,22 +297,176 @@ class CompanyIndexImpl(ComprehensiveCreditAnalysis):
describe = ''.join(describe)
return describe
credit_analysis = CreditAnalysis()
credit_analysis = self.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()
credit_analysis.view_report = '/file/get_company_report?file_id={}'.format(rating_record['报告fid'])
self.credit_analysis = credit_analysis
def rating_history():
"""历史级别"""
df_records['变化趋势'] = (df_records['信用评分'] - df_records['信用评分'].shift(-1)).apply(
lambda x: '下降' if x < 0 else ('上升' if x > 0 else ('维持' if x == 0 else '-')))
history_list = list(json.loads(df_records[['信用等级', "信用评分", '评价时间', "评价方式", "变化趋势"]].T.to_json()).values())
self.history_level = list()
for item in history_list:
history_level = self.HistoryLevel()
history_level.credit_rating = item['信用等级']
history_level.credit_score = item['信用评分']
history_level.evaluation_time = item['评价时间']
history_level.evaluation_method = item['评价方式']
history_level.change_trend = item['变化趋势']
self.history_level.append(history_level.dict_to_save())
def rating_index_analysis():
"""指标表格"""
index_table = self.IndexTable()
def financial():
"""财务指标"""
financial_dict = dict()
financial_dict['盈利能力'] = rating_result['财务评分']['盈利能力']['合计']
financial_dict['资产质量'] = rating_result['财务评分']['资产质量']['合计']
financial_dict['债务风险'] = rating_result['财务评分']['债务风险']['合计']
financial_dict['经营增长'] = rating_result['财务评分']['经营增长']['合计']
df_financial = pd.DataFrame(
{'实际值': financial_dict, '最大值': {"盈利能力": 16, "资产质量": 18, "债务风险": 18, "经营增长": 18}})
financial_dict = json.loads((df_financial['实际值'] / df_financial['最大值']).apply(
lambda x: '' if x >= 1 else (
'' if x >= 0.75 else ('' if x >= 0.5 else ('' if x >= 0.25 else '')))).to_json())
financial_index = index_table.FinancialIndicators()
financial_index.profitability = financial_dict['盈利能力']
financial_index.asset_quality = financial_dict['资产质量']
financial_index.debt_risk = financial_dict['债务风险']
financial_index.operating_growth = financial_dict['经营增长']
index_table.financial_indicators = financial_index
def risks():
"""风险指标"""
risk_dict = dict()
risk_dict['合规风险'] = 43 - rating_result['风险评分']['合规风险']
risk_dict['经营风险'] = 10 - rating_result['风险评分']['经营风险']['合计']
risk_dict['关联风险'] = 10 - rating_result['风险评分']['关联风险']['合计']
df_risks = pd.DataFrame({'实际值': risk_dict, '最大值': {"合规风险": 43, "经营风险": 10, "关联风险": 10}})
risk_dict = json.loads((df_risks['实际值'] / df_risks['最大值']).apply(lambda x: '' if x >= 1 else (
'' if x >= 0.75 else ('' if x >= 0.5 else ('' if x >= 0.25 else '')))).to_json())
risk_index = index_table.RiskIndicators()
risk_index.compliance_risk = risk_dict['合规风险']
risk_index.operational_risk = risk_dict['经营风险']
risk_index.associated_risk = risk_dict['关联风险']
index_table.risk_indicators = risk_index
def operate():
"""经营指标"""
df_operate = pd.DataFrame(
{'实际值': sub_dict(rating_result['经营评分'], ['环境', '社会责任', '公司治理']),
'最大值': {'环境': 10, '社会责任': 10, '公司治理': 10}})
operate_dict = json.loads((df_operate['实际值'] / df_operate['最大值']).apply(lambda x: '' if x >= 1 else (
'' if x >= 0.75 else ('' if x >= 0.5 else ('' if x >= 0.25 else '')))).to_json())
operate_index = index_table.OperatingIndicators()
operate_index.environmental = operate_dict['环境']
operate_index.social_responsibility = operate_dict['社会责任']
operate_index.corporate_governance = operate_dict['公司治理']
index_table.operating_indicators = operate_index
financial()
risks()
operate()
self.index_table = index_table
def _main_():
result_head()
make_radar_chart()
credit_analysis_content()
rating_history()
rating_index_analysis()
result = self.dict_to_save()
self.db.upsert_single_data(
'企业数据',
'综合信用分析',
{'评价ID': self.rid},
result
)
_main_()
def financial_analysis(self):
"""准备财务要素信息"""
pass
class FinancialAnalysisImpl(FinancialElementsAnalysis):
"""财务要素分析类"""
db = MongoHelper("tfse_v0.21")
def financial_analysis_etl(self):
rating_result = self.db.find_single_data(
'综信评价数据',
'评价结果',
{"评价ID": self.rid},
["企业ID", "财务评分"]
)
rating_input = self.db.find_single_data(
'综信评价数据',
'填报数据',
{"评价ID": self.rid},
["行业选择", "财务填报"]
)
industry = rating_input['行业选择']
search = ["年报期", '净资产收益率', '总资产报酬率', '总资产周转率',
'应收账款周转率', '存货周转率', '资产负债率', '已获利息倍数',
'速动比率', '营业增长率', '总资产增长率', '技术投入比率']
periods = list(
pd.DataFrame(rating_input['财务填报']['资产负债表']).sort_values('报告期', ascending=False)['报告期'][0:2].values)
df_recent_2year = pd.DataFrame(self.db.find_single_data('综信评价数据', '财指结果', {'企业ID': rating_result['企业ID']},
search)).sort_values('年报期', ascending=False)[0:2]
df_this = df_recent_2year[0:1]
df_last = df_recent_2year[1:2]
def result_head():
"""基本信息"""
self.cid = rating_result['企业ID']
self.report_date = periods[0]
self.update_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
def index_detail():
"""指标详情"""
index_value = json.loads(df_this[
['净资产收益率', '总资产报酬率', '总资产周转率', '应收账款周转率', '存货周转率', '资产负债率', '已获利息倍数', '速动比率',
'营业增长率', '总资产增长率', '技术投入比率']].apply(
lambda x: '{}%'.format(x.values[0]) if '' in x.name else x.values[0]).T.to_json())
rate = dict()
rate['净资产收益率'] = rating_result['财务评分']['盈利能力']['净资产收益率'] / 8
rate['总资产报酬率'] = rating_result['财务评分']['盈利能力']['总资产报酬率'] / 8
rate['总资产周转率'] = rating_result['财务评分']['资产质量']['总资产周转率'] / 6
rate['存货周转率'] = rating_result['财务评分']['资产质量']['存货周转率'] / 6
rate['应收账款周转率'] = rating_result['财务评分']['资产质量']['应收账款周转率'] / 6
rate['资产负债率'] = rating_result['财务评分']['债务风险']['资产负债率'] / 8
rate['已获利息倍数'] = rating_result['财务评分']['债务风险']['已获利息倍数'] / 5
rate['速动比率'] = rating_result['财务评分']['债务风险']['速动比率'] / 5
rate['营业增长率'] = rating_result['财务评分']['经营增长']['营业增长率'] / 8
rate['总资产增长率'] = rating_result['财务评分']['经营增长']['总资产增长率'] / 5
rate['技术投入比率'] = rating_result['财务评分']['经营增长']['技术投入比率'] / 5
df_rate = pd.DataFrame([rate])
index_level = json.loads(df_rate.apply(lambda x: '' if x.values[0] >= 1 else (
'' if x.values[0] >= 0.75 else (
'' if x.values[0] >= 0.5 else ('' if x.values[0] >= 0.25 else '')))).to_json())
df_index = pd.DataFrame({'': index_value, "级别": index_level})
df_list = df_iterrows(df_index)
self.index_details = list()
for item in df_list:
index_details = self.IndexDetails()
index_details.index = item[0]
index_details.value = item[1]
index_details.level = item[2]
self.index_details.append(index_details.dict_to_save())
def compare_to_year():
"""财务得分年度比较"""
class BusinessAnalysisImpl(BusinessElementsAnalysis):
"""经营要素分析类"""
db = MongoHelper("tfse_v0.21")
def risk_analysis_etl(self):
"""准备风险要素信息"""
pass

View File

@ -1,5 +1,5 @@
from Utils.ObjUtil import SpecObject
from Utils.ValidateUtil import ValidateAttr
from Utils.ValidateUtil import ValidateAttr, Validate
class BasicInfo(SpecObject):
@ -200,174 +200,164 @@ class CompanyData(SpecObject):
"""准备企业初始化数据"""
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):
"""综合信用分析"""
class CreditPerformance(SpecObject):
class IndicatorRadar(SpecObject):
"""指标雷达"""
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": "关联风险"
}
index_score = ValidateAttr(field='index_score', type=IndexScore)
max_score = ValidateAttr(field='max_score', type=MaxScore)
fields_map = {
"index_score": "指标得分",
"max_score": "最大分数"
}
"""综合信用表现"""
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 IndexTable(SpecObject):
"""指标表格"""
class FinancialIndicators(SpecObject):
"""财务指标"""
profitability = ValidateAttr(field='profitability', 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": "公司治理"
}
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": "变化趋势"
}
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)
update_time = ValidateAttr(field='update_time', func=Validate.time_format)
performance = ValidateAttr(field='performance', type=CreditPerformance)
credit_analysis = ValidateAttr(field='credit_analysis', type=CreditAnalysis)
index_table = ValidateAttr(field='index_table', type=IndexTable)
@ -379,7 +369,201 @@ class ComprehensiveCreditAnalysis(SpecObject):
"name": "企业名称",
"update_time": "更新时间",
"performance": "综合信用表现",
"analysis": "信用分析",
"credit_analysis": "信用分析",
"index_table": "指标表格",
"history_level": "历史级别"
}
}
class FinancialElementsAnalysis(SpecObject):
"""财务要素分析"""
class CompareToYears(SpecObject):
"""财务得分年度比较"""
class FinancialAnalysisIndex(SpecObject):
"""指标"""
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))
business_growth = ValidateAttr(field='business_growth', type=(int, float))
fields_map = {
"profitability": "盈利能力",
"asset_quality": "资产质量",
"debt_risk": "债务风险",
"business_growth": "经营增长"
}
year = ValidateAttr(field='year', type=str, func=Validate.date_format)
index = ValidateAttr(field='index', instance_list=FinancialAnalysisIndex)
fields_map = {
"year": "年度",
"index": "指标"
}
class CompareToIndustry(SpecObject):
"""财务得分同行比较"""
class CompanyScore(SpecObject):
"""公司水平"""
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))
business_growth = ValidateAttr(field='business_growth', type=(int, float))
fields_map = {
"profitability": "盈利能力",
"asset_quality": "资产质量",
"debt_risk": "债务风险",
"business_growth": "经营增长"
}
class AverageScore(SpecObject):
"""平均水平"""
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))
business_growth = ValidateAttr(field='business_growth', type=(int, float))
fields_map = {
"profitability": "盈利能力",
"asset_quality": "资产质量",
"debt_risk": "债务风险",
"business_growth": "经营增长"
}
company_score = ValidateAttr(field='company_score', type=CompanyScore)
average_score = ValidateAttr(field='average_score', type=AverageScore)
fields_map = {
"company_score": "公司水平",
"average_score": "平均水平"
}
class DeltaToYears(SpecObject):
"""财务得分较去年变化"""
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))
business_growth = ValidateAttr(field='business_growth', type=(int, float))
fields_map = {
"profitability": "盈利能力",
"asset_quality": "资产质量",
"debt_risk": "债务风险",
"business_growth": "经营增长"
}
class DeltaToIndustry(SpecObject):
"""财务得分较同行差异"""
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))
business_growth = ValidateAttr(field='business_growth', type=(int, float))
fields_map = {
"profitability": "盈利能力",
"asset_quality": "资产质量",
"debt_risk": "债务风险",
"business_growth": "经营增长"
}
class IndexDetails(SpecObject):
"""指标详情"""
index = ValidateAttr(field='', type=str)
value = ValidateAttr(field='', type=str)
level = ValidateAttr(field='', type=str, in_list=['', '', '', '', ''])
fields_map = {
"index": "指标",
"value": "数值",
"level": "水平"
}
cid = ValidateAttr(field='cid', type=str, length=8, default=None)
update_time = ValidateAttr(field='update_time', func=Validate.time_format)
rid = ValidateAttr(field='rid', type=str, length=8)
report_date = ValidateAttr(field='report_date', type=str, func=Validate.date_format)
compare_to_years = ValidateAttr(field='compare_to_years', length=2, type=CompareToYears)
compare_to_industry = ValidateAttr(field='compare_to_industry', type=CompareToIndustry)
delta_to_years = ValidateAttr(field='delta_to_years', type=DeltaToYears)
delta_to_industry = ValidateAttr(field='delta_to_industry', type=DeltaToIndustry)
index_details = ValidateAttr(field='index_details', instance_list=IndexDetails)
fields_map = {
"cid": "企业ID",
"update_time": "更新时间",
"rid": "评价ID",
"report_date": "财报期",
"compare_to_years": "财务得分年度比较",
"compare_to_industry": "财务得分同行比较",
"delta_to_years": "财务得分较去年变化",
"delta_to_industry": "财务得分较同行差异",
"index_details": "指标详情"
}
class BusinessElementsAnalysis(SpecObject):
"""经营要素分析"""
class ComplianceRisk(SpecObject):
"""合规风险"""
genre = ValidateAttr(field='genre', type=str)
quantity = ValidateAttr(field='quantity', type=int)
affect = ValidateAttr(field='affect', type=str)
fields_map = {
"genre": "类型",
"quantity": "数量",
"affect": "影响"
}
class OperationalRisk(SpecObject):
"""经营风险"""
genre = ValidateAttr(field='genre', type=str)
quantity = ValidateAttr(field='quantity', type=int)
affect = ValidateAttr(field='affect', type=str)
fields_map = {
"genre": "类型",
"quantity": "数量",
"affect": "影响"
}
class PeripheralRisk(SpecObject):
"""周边风险"""
genre = ValidateAttr(field='genre', type=str)
quantity = ValidateAttr(field='quantity', type=int)
detail = ValidateAttr(field='detail', type=list)
fields_map = {
"genre": "类型",
"quantity": "数量",
"detail": "详情"
}
class ChangeLog(SpecObject):
"""变更记录"""
genre = ValidateAttr(field='genre', type=str)
quantity = ValidateAttr(field='quantity', type=int)
affect = ValidateAttr(field='affect', type=str)
fields_map = {
"genre": "类型",
"quantity": "数量",
"affect": "影响"
}
cid = ValidateAttr(field='cid', type=str, length=8, default=None)
rid = ValidateAttr(field='rid', type=str, length=8, default=None)
update_time = ValidateAttr(field='update_time', func=Validate.time_format)
risk_score = ValidateAttr(field='risk_score', type=(int, float))
risk_level = ValidateAttr(field='risk_level', type=str, in_list=['', '较高', '中等', '警示', ''])
risk_quantity = ValidateAttr(field='risk_quantity', type=int)
untrustworthy_list = ValidateAttr(field='untrustworthy_list', type=str, in_list=['', ''])
compliance_risk = ValidateAttr(field='compliance_risk', instance_list=ComplianceRisk)
operational_risk = ValidateAttr(field='operational_risk', instance_list=OperationalRisk)
peripheral_risk = ValidateAttr(field='peripheral_risk', instance_list=PeripheralRisk)
change_log = ValidateAttr(field='change_log', instance_list=ChangeLog)

View File

@ -1,9 +1,9 @@
from flask import Blueprint, request
from CompanyData.CompanyDataImpl import CompanyDataImpl, CompanyIndexImpl
from CompanyData.CompanyDataImpl import CompanyDataImpl, CreditAnalysisImpl, FinancialAnalysisImpl
from Utils.ErrorUtil import ReturnConditionCheckFailed
from common.utils import verify_token
from CompanyData.job_scripts import *
from CompanyData.job_scripts import update_process_scripts
company_route = Blueprint('company', __name__)
@ -44,10 +44,11 @@ def general_rating():
-
"""
try:
company_index = CompanyIndexImpl()
company_index.cid = request.json['rid']
company_index.cc_rating_etl()
company_index.financial_analysis()
credit_analysis = CreditAnalysisImpl()
credit_analysis.rid = request.json['rid']
credit_analysis.cc_rating_etl()
financial_analysis = FinancialAnalysisImpl()
financial_analysis.financial_analysis_etl()
company_index.risk_analysis_etl()
return {"info": "数据准备完成"}, 200
except ReturnConditionCheckFailed as e:

View File

@ -20,6 +20,20 @@ class Validate(object):
case = (len(param) >= 8) and (re.match(regex, param) is not None)
return True if case else False
@staticmethod
def date_format(param):
"""yyyy-mm-dd"""
regex = "\d{4}-\d{1,2}-\d{1,2}"
case = re.match(regex, param) is not None
return True if case else False
@staticmethod
def time_format(param):
"""yyyy-mm-dd hh:mm:ss"""
regex = "\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}"
case = re.match(regex, param) is not None
return True if case else False
@staticmethod
def image(param):
""""""
@ -28,7 +42,7 @@ class Validate(object):
class ValidateAttr(object):
def __init__(self, **kwargs):
""""""
self.kwargs = kwargs
@ -41,16 +55,22 @@ class ValidateAttr(object):
def __set__(self, instance, value):
""""""
self.error_info = '{}异常'.format(instance.fields_map[self.kwargs['field']])
try:
self.error_info = '{}异常'.format(instance.fields_map[self.kwargs['field']])
except AttributeError:
pass
def not_default():
"""无默认值时属性设值检查"""
if 'type' in self.kwargs:
"""检查实例的属性类型"""
if not isinstance(value, self.kwargs['type']):
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
if type(self.kwargs['type']) is list:
if type(value) not in self.kwargs['type']:
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
else:
if not isinstance(value, self.kwargs['type']):
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
if 'length' in self.kwargs:
"""检查实例的属性值长度(一般是str类型)"""