update 准备企业主页数据接口重写
This commit is contained in:
parent
62f3f22bae
commit
57d7b6d165
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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类型)"""
|
||||
|
|
Loading…
Reference in New Issue