update esg评价分析
This commit is contained in:
parent
e62cdbdfa2
commit
4b941f6d93
|
@ -7,7 +7,8 @@ from DBHelper.MongoHelper import MongoHelper
|
|||
from RatingData.scripts.risk_detail import associate_risk_detail, change_log_detail
|
||||
from Utils.ErrorUtil import LogConditionCheckFailed
|
||||
from CompanyData.CompanyDataObj import CompanyData, BasicInfo, ShareHolder, MainMember, ComprehensiveCreditAnalysis, \
|
||||
FinancialElementsAnalysis, BusinessElementsAnalysis, FinancialIndex, BalanceSheet, ProfitSheet, AppendixDataSheet
|
||||
FinancialElementsAnalysis, BusinessElementsAnalysis, FinancialIndex, BalanceSheet, ProfitSheet, AppendixDataSheet, \
|
||||
EsgRatingAnalysis, FinancialIndexs
|
||||
from common.utils import sub_dict, df_iterrows
|
||||
|
||||
|
||||
|
@ -182,6 +183,7 @@ class CompanyDataImpl(CompanyData):
|
|||
|
||||
def update_credit_data(self, rid):
|
||||
"""更新综信评价相关数据"""
|
||||
|
||||
def update_rating_result():
|
||||
"""更新评价结果"""
|
||||
rating_result = self.db_tfse.find_single_data(
|
||||
|
@ -305,7 +307,6 @@ class CompanyDataImpl(CompanyData):
|
|||
)
|
||||
|
||||
|
||||
|
||||
class CreditAnalysisImpl(ComprehensiveCreditAnalysis):
|
||||
"""综合信用分析类"""
|
||||
db = MongoHelper("tfse_v0.21")
|
||||
|
@ -619,7 +620,7 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis):
|
|||
def score_actl_script():
|
||||
"""今年财务得分"""
|
||||
compare = self.CompareToYears()
|
||||
score_index = compare.FinancialScoreIndex()
|
||||
score_index = FinancialIndexs()
|
||||
score_index.profitability = rating_result['财务评分']['盈利能力']['合计']
|
||||
score_index.asset_quality = rating_result['财务评分']['资产质量']['合计']
|
||||
score_index.debt_risk = rating_result['财务评分']['债务风险']['合计']
|
||||
|
@ -631,7 +632,7 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis):
|
|||
def score_last_script():
|
||||
"""去年财务得分"""
|
||||
compare = self.CompareToYears()
|
||||
score_index = compare.FinancialScoreIndex()
|
||||
score_index = FinancialIndexs()
|
||||
score_index.profitability = score_last_origin['盈利能力']['合计']
|
||||
score_index.asset_quality = score_last_origin['资产质量']['合计']
|
||||
score_index.debt_risk = score_last_origin['债务风险']['合计']
|
||||
|
@ -649,7 +650,7 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis):
|
|||
|
||||
def company_level():
|
||||
"""公司水平"""
|
||||
company = compare_industry.CompanyScore()
|
||||
company = FinancialIndexs()
|
||||
company.profitability = rating_result['财务评分']['盈利能力']['合计']
|
||||
company.asset_quality = rating_result['财务评分']['资产质量']['合计']
|
||||
company.debt_risk = rating_result['财务评分']['债务风险']['合计']
|
||||
|
@ -658,7 +659,7 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis):
|
|||
|
||||
def average_level():
|
||||
"""平均水平"""
|
||||
average = compare_industry.AverageScore()
|
||||
average = FinancialIndexs()
|
||||
average.profitability = 8
|
||||
average.asset_quality = 9
|
||||
average.debt_risk = 9
|
||||
|
@ -671,8 +672,9 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis):
|
|||
|
||||
def delta_to_year():
|
||||
"""财务得分较去年变化"""
|
||||
delat_data = json.loads((df['今年值']/df['去年值']-1).apply(lambda x: '{}%'.format(round(x*100, 2))).T.to_json())
|
||||
delat = self.DeltaToYears()
|
||||
delat_data = json.loads(
|
||||
(df['今年值'] / df['去年值'] - 1).apply(lambda x: '{}%'.format(round(x * 100, 2))).T.to_json())
|
||||
delat = FinancialIndexs()
|
||||
delat.profitability = delat_data['盈利能力']
|
||||
delat.asset_quality = delat_data['资产质量']
|
||||
delat.debt_risk = delat_data['债务风险']
|
||||
|
@ -681,8 +683,9 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis):
|
|||
|
||||
def delta_to_industry():
|
||||
"""财务扽分交同行差异"""
|
||||
delat_data = json.loads((df['今年值']/df['平均值']-1).apply(lambda x: '{}%'.format(round(x * 100, 2))).T.to_json())
|
||||
delat = self.DeltaToIndustry()
|
||||
delat_data = json.loads(
|
||||
(df['今年值'] / df['平均值'] - 1).apply(lambda x: '{}%'.format(round(x * 100, 2))).T.to_json())
|
||||
delat = FinancialIndexs()
|
||||
delat.profitability = delat_data['盈利能力']
|
||||
delat.asset_quality = delat_data['资产质量']
|
||||
delat.debt_risk = delat_data['债务风险']
|
||||
|
@ -732,7 +735,7 @@ class BusinessAnalysisImpl(BusinessElementsAnalysis):
|
|||
def risk_relative_score():
|
||||
"""风险分数"""
|
||||
risk_score = rating_result['风险评分']['合计']
|
||||
self.risk_score = 100 if risk_score/43 >= 1 else round(risk_score/43*100, 2)
|
||||
self.risk_score = 100 if risk_score / 43 >= 1 else round(risk_score / 43 * 100, 2)
|
||||
|
||||
def risk_level():
|
||||
"""风险级别"""
|
||||
|
@ -759,6 +762,7 @@ class BusinessAnalysisImpl(BusinessElementsAnalysis):
|
|||
|
||||
def eligibility_risk():
|
||||
"""合规风险"""
|
||||
|
||||
def degree_of_impact(param):
|
||||
if param.name in ['失信人', '严重违法']:
|
||||
impact = '严重'
|
||||
|
@ -785,6 +789,7 @@ class BusinessAnalysisImpl(BusinessElementsAnalysis):
|
|||
|
||||
def operating_risk():
|
||||
"""经营风险"""
|
||||
|
||||
def degree_of_impact(param):
|
||||
if param.name in ['开庭公告', '法院公告', '诉讼', '送达公告'] and param.values[0] >= 50:
|
||||
impact = '异常'
|
||||
|
@ -881,5 +886,85 @@ class BusinessAnalysisImpl(BusinessElementsAnalysis):
|
|||
_main_()
|
||||
|
||||
|
||||
class EsgAnalysisImpl(EsgRatingAnalysis):
|
||||
"""ESG评价分析类"""
|
||||
db = MongoHelper("tfse_v0.21")
|
||||
|
||||
def egs_analysis_etl(self):
|
||||
rating_record = self.db.find_single_data(
|
||||
'ESG评价数据',
|
||||
'评价结果',
|
||||
{"评价ID": self.rid},
|
||||
["企业ID", "评价等级", "ESG得分", "环境得分", "社会得分", "公司治理得分"]
|
||||
)
|
||||
rating_input = self.db.find_single_data(
|
||||
'ESG评价数据',
|
||||
'填报数据',
|
||||
{"评价ID": self.rid},
|
||||
["所属行业"]
|
||||
)
|
||||
|
||||
self.cid = rating_record['企业ID']
|
||||
self.update_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||||
|
||||
def esg_rating():
|
||||
"""esg评级"""
|
||||
rating = self.EsgRating()
|
||||
rating.rating = rating_record['评价等级']
|
||||
rating.score = rating_record['ESG得分']
|
||||
rating.industry = rating_input['所属行业'][0]
|
||||
self.esg_rating = rating
|
||||
|
||||
def dimension_rating():
|
||||
"""维度得分情况"""
|
||||
self.dimension_score = list()
|
||||
|
||||
def e():
|
||||
"""环境"""
|
||||
dimension = self.DimensionScore()
|
||||
dimension.dimension = '环境'
|
||||
dimension.weights = '35%'
|
||||
dimension.score = rating_record['环境得分']['合计']
|
||||
dimension.score_change = '-%'
|
||||
dimension.industry_average = '-'
|
||||
self.dimension_score.append(dimension.dict_to_save())
|
||||
|
||||
def s():
|
||||
"""社会"""
|
||||
dimension = self.DimensionScore()
|
||||
dimension.dimension = '社会'
|
||||
dimension.weights = '35%'
|
||||
dimension.score = rating_record['社会得分']['合计']
|
||||
dimension.score_change = '-%'
|
||||
dimension.industry_average = '-'
|
||||
self.dimension_score.append(dimension.dict_to_save())
|
||||
|
||||
def g():
|
||||
"""治理"""
|
||||
dimension = self.DimensionScore()
|
||||
dimension.dimension = '治理'
|
||||
dimension.weights = '30%'
|
||||
dimension.score = rating_record['公司治理得分']['合计']
|
||||
dimension.score_change = '-%'
|
||||
dimension.industry_average = '-'
|
||||
self.dimension_score.append(dimension.dict_to_save())
|
||||
|
||||
def _main_():
|
||||
e()
|
||||
s()
|
||||
g()
|
||||
|
||||
_main_()
|
||||
|
||||
def __main__():
|
||||
esg_rating()
|
||||
dimension_rating()
|
||||
result = self.dict_to_save()
|
||||
self.db.upsert_single_data(
|
||||
"企业数据",
|
||||
"ESG评价分析",
|
||||
{"评价ID": self.rid},
|
||||
result
|
||||
)
|
||||
|
||||
__main__()
|
|
@ -374,18 +374,12 @@ class ComprehensiveCreditAnalysis(SpecObject):
|
|||
}
|
||||
|
||||
|
||||
class FinancialElementsAnalysis(SpecObject):
|
||||
"""财务要素分析"""
|
||||
|
||||
class CompareToYears(SpecObject):
|
||||
"""财务得分年度比较"""
|
||||
|
||||
class FinancialScoreIndex(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))
|
||||
class FinancialIndexs(SpecObject):
|
||||
"""财务指标"""
|
||||
profitability = ValidateAttr(field='profitability', type=(int, float, str))
|
||||
asset_quality = ValidateAttr(field='asset_quality', type=(int, float, str))
|
||||
debt_risk = ValidateAttr(field='debt_risk', type=(int, float, str))
|
||||
business_growth = ValidateAttr(field='business_growth', type=(int, float, str))
|
||||
|
||||
fields_map = {
|
||||
"profitability": "盈利能力",
|
||||
|
@ -394,8 +388,14 @@ class FinancialElementsAnalysis(SpecObject):
|
|||
"business_growth": "经营增长"
|
||||
}
|
||||
|
||||
|
||||
class FinancialElementsAnalysis(SpecObject):
|
||||
"""财务要素分析"""
|
||||
|
||||
class CompareToYears(SpecObject):
|
||||
"""财务得分年度比较"""
|
||||
year = ValidateAttr(field='year', type=str, func=Validate.date_format)
|
||||
index = ValidateAttr(field='index', type=FinancialScoreIndex)
|
||||
index = ValidateAttr(field='index', type=FinancialIndexs)
|
||||
|
||||
fields_map = {
|
||||
"year": "年度",
|
||||
|
@ -404,71 +404,14 @@ class FinancialElementsAnalysis(SpecObject):
|
|||
|
||||
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)
|
||||
company_score = ValidateAttr(field='company_score', type=FinancialIndexs)
|
||||
average_score = ValidateAttr(field='average_score', type=FinancialIndexs)
|
||||
|
||||
fields_map = {
|
||||
"company_score": "公司水平",
|
||||
"average_score": "平均水平"
|
||||
}
|
||||
|
||||
class DeltaToYears(SpecObject):
|
||||
"""财务得分较去年变化"""
|
||||
profitability = ValidateAttr(field='profitability', type=str)
|
||||
asset_quality = ValidateAttr(field='asset_quality', type=str)
|
||||
debt_risk = ValidateAttr(field='debt_risk', type=str)
|
||||
business_growth = ValidateAttr(field='business_growth', type=str)
|
||||
|
||||
fields_map = {
|
||||
"profitability": "盈利能力",
|
||||
"asset_quality": "资产质量",
|
||||
"debt_risk": "债务风险",
|
||||
"business_growth": "经营增长"
|
||||
}
|
||||
|
||||
class DeltaToIndustry(SpecObject):
|
||||
"""财务得分较同行差异"""
|
||||
profitability = ValidateAttr(field='profitability', type=str)
|
||||
asset_quality = ValidateAttr(field='asset_quality', type=str)
|
||||
debt_risk = ValidateAttr(field='debt_risk', type=str)
|
||||
business_growth = ValidateAttr(field='business_growth', type=str)
|
||||
|
||||
fields_map = {
|
||||
"profitability": "盈利能力",
|
||||
"asset_quality": "资产质量",
|
||||
"debt_risk": "债务风险",
|
||||
"business_growth": "经营增长"
|
||||
}
|
||||
|
||||
class IndexDetails(SpecObject):
|
||||
"""指标详情"""
|
||||
index = ValidateAttr(field='index', type=str)
|
||||
|
@ -487,8 +430,8 @@ class FinancialElementsAnalysis(SpecObject):
|
|||
report_date = ValidateAttr(field='report_date', type=str, func=Validate.date_format)
|
||||
compare_to_years = ValidateAttr(field='compare_to_years', instance_list=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)
|
||||
delta_to_years = ValidateAttr(field='delta_to_years', type=FinancialIndexs)
|
||||
delta_to_industry = ValidateAttr(field='delta_to_industry', type=FinancialIndexs)
|
||||
index_details = ValidateAttr(field='index_details', instance_list=IndexDetails)
|
||||
|
||||
fields_map = {
|
||||
|
@ -580,3 +523,48 @@ class BusinessElementsAnalysis(SpecObject):
|
|||
"change_log": "变更记录"
|
||||
}
|
||||
|
||||
|
||||
class EsgRatingAnalysis(SpecObject):
|
||||
"""ESG评价分析"""
|
||||
class EsgRating(SpecObject):
|
||||
"""ESG评级"""
|
||||
rating = ValidateAttr(field='rating', type=str)
|
||||
score = ValidateAttr(field='score', type=(float, int))
|
||||
industry = ValidateAttr(field='industry', type=str)
|
||||
|
||||
fields_map = {
|
||||
"rating": "ESG评级",
|
||||
"score": "ESG综合得分",
|
||||
"industry": "行业"
|
||||
}
|
||||
|
||||
class DimensionScore(SpecObject):
|
||||
"""维度得分情况"""
|
||||
dimension = ValidateAttr(field='dimension', type=str)
|
||||
weights = ValidateAttr(field='weights', type=str)
|
||||
score = ValidateAttr(field='score', type=(float, int))
|
||||
score_change = ValidateAttr(field='score_change', type=str)
|
||||
industry_average = ValidateAttr(field='industry_average', type=str)
|
||||
|
||||
fields_map = {
|
||||
"dimension": "维度",
|
||||
"weights": "权重",
|
||||
"score": "公司得分",
|
||||
"score_change": "得分变化",
|
||||
"industry_average": "行业均分"
|
||||
}
|
||||
|
||||
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)
|
||||
esg_rating = ValidateAttr(field='esg_rating', type=EsgRating)
|
||||
dimension_score = ValidateAttr(field='dimension_score', instance_list=DimensionScore)
|
||||
|
||||
fields_map = {
|
||||
"cid": "企业ID",
|
||||
"rid": "评价ID",
|
||||
"update_time": "更新日期",
|
||||
"esg_rating": "ESG评级",
|
||||
"dimension_score": "维度得分情况"
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from flask import Blueprint, request
|
||||
|
||||
from CompanyData.CompanyDataImpl import CompanyDataImpl, CreditAnalysisImpl, FinancialAnalysisImpl, BusinessAnalysisImpl
|
||||
from CompanyData.CompanyDataImpl import CompanyDataImpl, CreditAnalysisImpl, FinancialAnalysisImpl, \
|
||||
BusinessAnalysisImpl, EsgAnalysisImpl
|
||||
from Utils.ErrorUtil import ReturnConditionCheckFailed
|
||||
from common.utils import verify_token
|
||||
from CompanyData.job_scripts import update_process_scripts
|
||||
|
@ -44,17 +45,18 @@ def general_rating():
|
|||
-
|
||||
"""
|
||||
try:
|
||||
rid = request.json['rid']
|
||||
credit_analysis = CreditAnalysisImpl()
|
||||
credit_analysis.rid = request.json['rid']
|
||||
credit_analysis.rid = rid
|
||||
credit_analysis.cc_rating_etl()
|
||||
financial_analysis = FinancialAnalysisImpl()
|
||||
financial_analysis.rid = request.json['rid']
|
||||
financial_analysis.rid = rid
|
||||
financial_analysis.financial_analysis_etl()
|
||||
business_analysis = BusinessAnalysisImpl()
|
||||
business_analysis.rid = request.json['rid']
|
||||
business_analysis.rid = rid
|
||||
business_analysis.risk_analysis_etl()
|
||||
company_data = CompanyDataImpl()
|
||||
company_data.update_credit_data(request.json['rid'])
|
||||
company_data.update_credit_data(rid)
|
||||
return {"info": "数据准备完成"}, 200
|
||||
except ReturnConditionCheckFailed as e:
|
||||
e.log_error()
|
||||
|
@ -74,8 +76,12 @@ def esg_rating():
|
|||
Returns:
|
||||
-
|
||||
"""
|
||||
rid = request.json['rid']
|
||||
esg_analysis = EsgAnalysisImpl()
|
||||
esg_analysis.rid = rid
|
||||
esg_analysis.egs_analysis_etl()
|
||||
company_data = CompanyDataImpl()
|
||||
company_data.update_esg_data(request.json['rid'])
|
||||
company_data.update_esg_data(rid)
|
||||
|
||||
return {"info": "数据准备完成"}, 200
|
||||
|
||||
|
|
Loading…
Reference in New Issue