Merge branch 'wsc' into 'master'

Wsc

See merge request pengsen/etl_tfse!5
This commit is contained in:
王思川 2021-12-21 03:13:43 +00:00
commit 6e03f133f2
2 changed files with 119 additions and 55 deletions

View File

@ -32,49 +32,23 @@ def basic_info():
return {"info": "企业基本信息初始化成功"}
@company_route.route('/general_rating', methods=['POST'])
@company_route.route('/company_index_etl', methods=['POST'])
@verify_token
def general_rating():
"""
准备综合评价信息数据
1.准备综合评价信息数据
2.准备财务要素信息
3.准备风险要素信息
4.准备指标明细数据
Parameters:
-
rid str 评价ID
cid str 企业ID
Returns:
-
"""
rid = request.json['rid']
general_rating_etl(rid)
financial_analysis(rid)
@company_route.route('/financial_analysis', methods=['POST'])
@verify_token
def financial_analysis():
"""
准备财务要素信息
Parameters:
-
Returns:
-
"""
@company_route.route('/risk_analysis', methods=['POST'])
@verify_token
def risk_analysis():
"""
准备风险要素信息
Parameters:
-
Returns:
-
"""
@company_route.route('/index_detail', methods=['POST'])
@verify_token
def index_detail():
"""
准备指标明细数据
Parameters:
-
Returns:
-
"""
return {"info": "数据准备完成"}

View File

@ -100,19 +100,18 @@ def basic_info_etl(cid, company_name):
insert_data_to_tfse('企业', '公司基本信息', data)
def general_rating_etl(rid, cid):
def general_rating_etl(rid):
"""
执行综合信用评价信息数据清洗程序
Parameters:
rid: str 评价ID
cid: str 企业ID
Returns:
res: desc
"""
# Parameters
rating_result = find_data_in_tfse('评价', '评价结果', {"评价ID": rid})[0]
rating_record = find_data_in_tfse('评价', '评价结果', {"企业ID": cid})
rating_record = find_data_in_tfse('评价', '评价结果', {"企业ID": rating_result['企业ID']})
df_records = pd.DataFrame(rating_record).sort_values('评价时间', ascending=False)
@ -135,19 +134,30 @@ def general_rating_etl(rid, cid):
result['历史级别'] = list(json.loads(df_records[['信用等级', "信用评分", '评价时间', "评价方式", "变化趋势"]].T.to_json()).values())
# 生成雷达图数据
rating_score = list()
rating_score.append(rating_result['经营评分']["环境"])
rating_score.append(rating_result['经营评分']["社会责任"])
rating_score.append(rating_result['经营评分']["公司治理"])
rating_score.append(rating_result['财务评分']["盈利能力"]['合计'])
rating_score.append(rating_result['财务评分']["资产质量"]['合计'])
rating_score.append(rating_result['财务评分']["债务风险"]['合计'])
rating_score.append(rating_result['财务评分']["经营增长"]['合计'])
rating_score.append(43 - rating_result['风险评分']["合规风险"])
rating_score.append(10 - rating_result['风险评分']["经营风险"]['合计'])
rating_score.append(10 - rating_result['风险评分']["关联风险"]['合计'])
rating_score = dict()
rating_score["环境"] = rating_result['经营评分']["环境"]
rating_score["社会责任"] = rating_result['经营评分']["社会责任"]
rating_score["公司治理"] = rating_result['经营评分']["公司治理"]
rating_score["盈利能力"] = rating_result['财务评分']["盈利能力"]['合计']
rating_score["资产质量"] = rating_result['财务评分']["资产质量"]['合计']
rating_score["债务风险"] = rating_result['财务评分']["债务风险"]['合计']
rating_score["经营增长"] = rating_result['财务评分']["经营增长"]['合计']
rating_score["合规风险"] = 43 - rating_result['风险评分']["合规风险"]
rating_score["经营风险"] = 10 - rating_result['风险评分']["经营风险"]['合计']
rating_score["关联风险"] = 10 - rating_result['风险评分']["关联风险"]['合计']
score_max = [10, 10, 10, 16, 18, 18, 18, 43, 10, 10]
score_max = {
"环境": 10,
"社会责任": 10,
"公司治理": 10,
"盈利能力": 16,
"资产质量": 18,
"债务风险": 18,
"经营增长": 18,
"合规风险": 43,
"经营风险": 10,
"关联风险": 10
}
result['综合信用表现'] = dict()
result['综合信用表现']['指标雷达'] = dict()
@ -180,14 +190,94 @@ def general_rating_etl(rid, cid):
# 生成信用分析数据
result['信用分析'] = dict()
result['信用分析']['经营分析'] = '经营分析是利用会计核算、统计核算、业务以及其他方面提供的数据信息,采用一定分析方法,依靠计算技术,来分析经济活动的过程及其结果,从而加强对企业运行情况的把握,监控运行过程的问题,发现商业机会以及提炼经营管理知识,以便充分挖掘人力、物力、财力潜力,合理安排生产经营活动,提高经济效益的一门经营管理科学和活动 经营分析活动看成是管理活动的一个部分,管理目标、管理的内容决定了经营分析的内容 或者说,没有明确的战略和战术层面的管理目标,没有明确的达成管理目标的思路,经营分析就会失去其核心意义 经营分析系统是以业务运营支撑系统中其他系统的数据为基础,构建统一的企业级数据仓库'
result['信用分析']['经营分析'] = '经营分析是利用会计核算、统计核算、业务以及其他方面提供的数据信息,。。。。'
result['信用分析']['财务分析'] = '财务分析是以会计核算和报表资料及其他相关资料为依据,采用一系列专门的分析技术和方法,对企业等经济组织过去和现在有关筹资活动、投资活动、经营活动、分配活动的盈利能力、营运能力、偿债能力和增长能力状况等进行分析与评价的经济管理活动。'
result['信用分析']['风险分析'] = '风险分析有狭义和广义两种,狭义的风险分析是指通过定量分析的方法给出完成任务所需的费用、进度、性能三个随机变量的可实现值的概率分布。 而广义的风险分析则是一种识别和测算风险,开发、选择和管理方案来解决这些风险的有组织的手段。 它包括风险识别、风险评估和风险管理三方面的内容。 本文中论及风险分析时,都采用后一种定义。'
result['信用分析']['评价意见'] = '评价意见是指在掌握大量数据资料的基础上,对经过筛选后的少数方案再具体化,通过进一步的调查、研究和评价,最后选出最令人满意的方案,其评价结论是方案审批的依据。'
result['信用分析']['查看报告'] = 'http://139.9.249.34:51010/app/file/get_company_report?file_id=61bc4c4733120000ce000695'
result['信用分析']['查看报告'] = '/file/get_company_report?file_id=61bc4c4733120000ce000695'
insert_data_to_tfse('企业', '综合评价分析', result)
def financial_analysis(rid):
"""
Notes
Parameters:
-
Returns:
res: desc
"""
# Parameters
rating_result = find_data_in_tfse('评价', '评价结果', {"评价ID": rid})[0]
rating_input = find_data_in_tfse('评价', '综合评价填报', {"评价ID": rid})[0]
industry = rating_input['行业选择']
periods = list(pd.DataFrame(rating_input['财务填报']['资产负债表']).sort_values('报告期', ascending=False)['报告期'][0:2].values)
df_recent_2year = pd.DataFrame(find_data_in_tfse('企业', '指标明细', {'企业ID': rating_result['企业ID']})).sort_values('年报期', ascending=False)[0:2]
df_this = df_recent_2year[0:1]
df_last = df_recent_2year[1:2]
# Returns
result = dict()
result['企业ID'] = rating_result['企业ID']
# 财报期
result['财报期'] = periods[0]
# 更新日期
result['更新日期'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 与行业平均对比
score_avg = {
"盈利能力": 8,
"资产质量": 9,
"债务风险": 9,
"经营增长": 9
}
score_actl = {
"盈利能力": rating_result['财务评分']['盈利能力']['合计'],
"资产质量": rating_result['财务评分']['资产质量']['合计'],
"债务风险": rating_result['财务评分']['债务风险']['合计'],
"经营增长": rating_result['财务评分']['经营增长']['合计']
}
# 与去年对比
data_last = list(json.loads(df_last[['净资产收益率', '存货周转率', '已获利息倍数', '应收账款周转率', '总资产周转率', '总资产增长率', '总资产报酬率', '技术投入比率', '营业增长率', '资产负债率', '速动比率']].T.to_json()).values())
url = "http://139.9.249.34:51012/tfse_rating/rating/financial_score"
headers = {'token': "X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5", "content-type": "application/json"}
data = {"财务指标": data_last, "所属行业": industry}
score_last_origin = json.loads(requests.post(url=url, headers=headers, data=json.dumps(data)).text)['result']
score_last = {
"盈利能力": score_last_origin['盈利能力']['合计'],
"资产质量": score_last_origin['资产质量']['合计'],
"债务风险": score_last_origin['债务风险']['合计'],
"经营增长": score_last_origin['经营增长']['合计']
}
df = pd.DataFrame({'今年值': score_actl, '去年值': score_last, "平均值": score_avg})
# 同行对比图
df1 = df[['今年值', '平均值']]
df1 = df1.rename(columns={'今年值': '公司水平', '平均值': '平均水平'})
result['同行对比图'] = json.loads(df1.to_json())
# 去年对比图
df2 = df[['今年值', '去年值']]
df2 = df2.rename(columns={'今年值': periods[0], '去年值': periods[1]})
result['去年对比图'] = json.loads(df2.to_json())
# 去年对比表
result['去年对比表'] = json.loads((df['今年值']/df['去年值']-1).apply(lambda x: '{}%'.format(round(x*100, 2))).T.to_json())
# 同行对比表
result['同行对比表'] = json.loads((df['今年值']/df['平均值']-1).apply(lambda x: '{}%'.format(round(x * 100, 2))).T.to_json())
# 指标详情
result['指标详情'] = json.loads(df_this[
['净资产收益率', '存货周转率', '已获利息倍数', '应收账款周转率', '总资产周转率', '总资产增长率', '总资产报酬率', '技术投入比率', '营业增长率', '资产负债率',
'速动比率']].apply(lambda x: '{}%'.format(x.values[0]) if '' in x.name else x.values[0]).T.to_json())
insert_data_to_tfse('企业', '财务要素分析', result)
if __name__ == '__main__':
general_rating_etl("kSVoCeJ1", "cqqHE80f")
# general_rating_etl("kSVoCeJ1")
financial_analysis("bR2n0mV0")