tfse-etl-api-v0.2/RatingData/scripts/report/abstract.py

482 lines
19 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from common.utils import read_json_file
from RatingData.scripts.common import *
def evaluation_results(param):
"""
评价结果
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
credit_rank: 信用等级
rank_date: 评价时间
"""
data = param['评价结果']
result = list()
part_01 = dict()
part_02 = dict()
part_01['credit_rank'] = data['信用等级']
part_02['rank_date'] = data['评价时间']
result.append(part_01)
result.append(part_02)
return result
def financial_data(param):
"""
主要财务数据
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
三年主要财务数据
"""
data_01 = param['综合评价填报']['财务填报']
data_02 = param['指标明细']
result = list()
for key, value in data_01['资产负债表'][0].items():
insert_list = list()
insert_list.append(key)
insert_list.append(value)
insert_list.append(data_01['资产负债表'][1][key])
insert_list.append(data_01['资产负债表'][2][key])
insert_list = judge_list(insert_list)
result.append(insert_list)
for key, value in data_01['利润表'][0].items():
if key != '报告期':
insert_list = list()
insert_list.append(key)
insert_list.append(value)
insert_list.append(data_01['利润表'][1][key])
insert_list.append(data_01['利润表'][2][key])
insert_list = judge_list(insert_list)
result.append(insert_list)
for k, v in data_02[0].items():
if k == '已获利息倍数' or k == '总资产周转率' or k == '技术投入比率' or k == '速动比率':
try:
insert_list = list()
insert_list.append(k)
insert_list.append(v)
insert_list.append(data_02[1][k])
insert_list.append(data_02[2][k])
insert_list = judge_list(insert_list)
result.append(insert_list)
except IndexError:
insert_list = list()
insert_list.append(k)
insert_list.append(str(v))
insert_list.append(str(data_02[1][k]))
insert_list.append('-')
result.append(insert_list)
return result
def evaluation_view(param1, param2, param3):
"""
评价观点 区分行业
Parameters:
param1: 企业名称
param2: 数据库数据
param3: 行业
"""
if param3[0] == '制造业':
return evaluation_view_manufacturing(param1, param2)
elif param3[0] == '信息技术业':
return evaluation_view_information(param1, param2)
def evaluation_view_manufacturing(param1, param2):
"""
评价观点 制造业
清洗数据库数据,根据需要返回
Parameters:
param1: 企业名称
param2: 数据库数据
Returns:
评价观点数据
"""
# Params
data_01 = param2['基本信息']['基本信息']
data_02 = param2['综合评价填报']['财务填报']
data_03 = param2['评价结果']
# Returns
result = list()
def para_01():
part_01 = dict()
# 企业名称
part_01['company'] = param1
# 省份
part_01['province'] = data_01['regLocation'][:2]
# 规模
def scale():
income = float(data_02['利润表'][0]['营业收入'])
# 企业规模
if income > 40000:
part_01['scale'] = '大型'
elif income > 2000:
part_01['scale'] = '中型'
elif income > 300:
part_01['scale'] = '小型'
else:
part_01['scale'] = '微型'
# 优势领域
def advantage_area():
advantage_list = list()
if float(data_02['资产负债表'][0]['资产总计']) > 400000000:
advantage_list.append('资产规模')
elif float(data_02['补充数据表'][0]['研发费用']) / float(data_02['利润表'][0]['营业收入'] * 100) > 10:
advantage_list.append('研发实力')
elif float(data_02['资产负债表'][0]['短期借款']) != 0 or float(data_02['资产负债表'][0]['一年内到期非流动负债']) != 0 or float(
data_02['资产负债表'][0]['长期借款']) != 0:
advantage_list.append('融资渠道')
part_01['advantage_area'] = ''.join(advantage_list)
# 执行子方法
scale()
advantage_area()
return part_01
def para_02():
part_02 = dict()
# esg相关描述
def esg_desc():
esg_score = float(data_03['经营评分']['合计'])
esg_desc_01 = '公司经营符合ESG理念为环境友好型企业承担相应社会责任公司治理较好为企业运营奠定良好基础。'
esg_desc_02 = '公司正努力践行ESG理念实行节能减排措施积极履行社会责任改善公司治理状况公司ESG的提升有望为企业创造更多价值。'
esg_desc_03 = '公司ESG理念较为薄弱在经营过程中需增加节能减排措施加大对供应链、社会公众、员工和地区等的责任树立良好企业形象进一步加强公司治理和内部控制促进经营效率提升和企业价值创造。'
if esg_score >= 24:
part_02['esg_desc'] = esg_desc_01
elif esg_score >= 18:
part_02['esg_desc'] = esg_desc_02
else:
part_02['esg_desc'] = esg_desc_03
esg_desc()
return part_02
def para_03():
part_03 = dict()
# 盈利能力
def profitability():
profitability_score = float(data_03['财务评分']['盈利能力']['净资产收益率']) + float(data_03['财务评分']['盈利能力']['总资产报酬率'])
if profitability_score >= 16:
part_03['profitability'] = ''
elif profitability_score >= 16 * 0.8:
part_03['profitability'] = '较好'
elif profitability_score >= 16 * 0.6:
part_03['profitability'] = '处于行业平均水平'
elif profitability_score >= 16 * 0.4:
part_03['profitability'] = '较差'
else:
part_03['profitability'] = ''
# 资产运营效率
def operational_efficiency():
operation_score = float(data_03['财务评分']['资产质量']['总资产周转率']) + float(
data_03['财务评分']['资产质量']['应收账款周转率']) + float(
data_03['财务评分']['资产质量']['存货周转率'])
if operation_score >= 18:
part_03['operational_efficiency'] = ''
elif operation_score >= 18 * 0.8:
part_03['operational_efficiency'] = '较高'
elif operation_score >= 18 * 0.6:
part_03['operational_efficiency'] = '尚可'
elif operation_score >= 18 * 0.4:
part_03['operational_efficiency'] = '较低'
else:
part_03['operational_efficiency'] = ''
# 债务风险
def debt_risk():
debt_risk_score = float(data_03['财务评分']['债务风险']['资产负债率']) + float(
data_03['财务评分']['债务风险']['已获利息倍数']) + float(
data_03['财务评分']['债务风险']['速动比率'])
if debt_risk_score >= 18:
part_03['debt_risk'] = ''
elif debt_risk_score >= 18 * 0.8:
part_03['debt_risk'] = '较大'
elif debt_risk_score >= 18 * 0.6:
part_03['debt_risk'] = '适中'
elif debt_risk_score >= 18 * 0.4:
part_03['debt_risk'] = '较小'
else:
part_03['debt_risk'] = ''
# 成长能力
def growth_ability():
growth_ability_score = float(data_03['财务评分']['经营增长']['营业增长率']) + float(
data_03['财务评分']['经营增长']['总资产增长率']) + float(
data_03['财务评分']['经营增长']['技术投入比率'])
if growth_ability_score >= 18:
part_03['growth_ability'] = ''
elif growth_ability_score >= 18 * 0.8:
part_03['growth_ability'] = '较强'
elif growth_ability_score >= 18 * 0.6:
part_03['growth_ability'] = '一般'
elif growth_ability_score >= 18 * 0.4:
part_03['growth_ability'] = '较弱'
else:
part_03['growth_ability'] = ''
# 整体信用风险
def overall_credit_risk():
overall_credit_score = data_03['信用等级']
if overall_credit_score == 'AAA' or overall_credit_score == 'AA':
part_03['overall_credit_risk'] = '很小'
elif overall_credit_score == 'A':
part_03['overall_credit_risk'] = ''
elif overall_credit_score == 'BBB':
part_03['overall_credit_risk'] = '可控'
elif overall_credit_score == 'BB' or overall_credit_score == 'B':
part_03['overall_credit_risk'] = '较大'
else:
part_03['overall_credit_risk'] = ''
profitability()
operational_efficiency()
debt_risk()
growth_ability()
overall_credit_risk()
return part_03
def para_04():
part_04 = dict()
part_04['company'] = param1
part_04['credit_rank'] = data_03['信用等级']
return part_04
result.append(para_01())
result.append(para_02())
result.append(para_03())
result.append(para_04())
return result
def evaluation_view_information(param1, param2):
"""
评价观点 信息技术业
清洗数据库数据,根据需要返回
Parameters:
param1: 企业名称
param2: 数据库数据
Returns:
评价观点数据
"""
# Params
data_01 = param2['基本信息']['基本信息']
data_02 = param2['综合评价填报']['财务填报']
data_03 = param2['评价结果']
# Returns
result = list()
def para_01():
part_01 = dict()
# 企业名称
part_01['company'] = param1
# 省份
part_01['province'] = data_01['regLocation'][:2]
# 二级行业
industry = data_02['综合评价填报']['行业选择'][1]
# 规模-计算机服务与软件业
def scale_01():
income = float(data_02['利润表'][0]['营业收入'])
# 企业规模
if income > 100000000:
part_01['scale'] = '大型'
elif income > 10000000:
part_01['scale'] = '中型'
elif income > 500000:
part_01['scale'] = '小型'
else:
part_01['scale'] = '微型'
# 规模-电信业
def scale_02():
income = float(data_02['利润表'][0]['营业收入'])
# 企业规模
if income > 100000000:
part_01['scale'] = '大型'
elif income > 10000000:
part_01['scale'] = '中型'
elif income > 500000:
part_01['scale'] = '小型'
else:
part_01['scale'] = '微型'
if industry == '计算机服务与软件业':
scale_01()
elif industry == '电信业':
scale_02()
# 优势领域
def advantage_area():
advantage_list = list()
if float(data_02['资产负债表'][0]['资产总计']) > 10000000:
advantage_list.append('资产规模')
elif float(data_02['补充数据表'][0]['研发费用']) / float(data_02['利润表'][0]['营业收入'] * 100) > 8:
advantage_list.append('研发实力')
elif float(data_02['资产负债表'][0]['短期借款']) != 0 or float(data_02['资产负债表'][0]['一年内到期非流动负债']) != 0 or float(
data_02['资产负债表'][0]['长期借款']) != 0:
advantage_list.append('融资渠道')
part_01['advantage_area'] = ''.join(advantage_list)
# 执行子方法
advantage_area()
return part_01
def para_02():
part_02 = dict()
# esg相关描述
def esg_desc():
esg_score = float(data_03['经营评分']['合计'])
esg_desc_01 = '公司经营符合ESG理念为环境友好型企业承担相应社会责任公司治理较好为企业运营奠定良好基础。'
esg_desc_02 = '公司正努力践行ESG理念实行节能减排措施积极履行社会责任改善公司治理状况公司ESG的提升有望为企业创造更多价值。'
esg_desc_03 = '公司ESG理念较为薄弱在经营过程中需增加节能减排措施加大对供应链、社会公众、员工和地区等的责任树立良好企业形象进一步加强公司治理和内部控制促进经营效率提升和企业价值创造。'
if esg_score >= 24:
part_02['esg_desc'] = esg_desc_01
elif esg_score >= 18:
part_02['esg_desc'] = esg_desc_02
else:
part_02['esg_desc'] = esg_desc_03
esg_desc()
return part_02
def para_03():
part_03 = dict()
# 盈利能力
def profitability():
profitability_score = float(data_03['财务评分']['盈利能力']['净资产收益率']) + float(data_03['财务评分']['盈利能力']['总资产报酬率'])
if profitability_score >= 16:
part_03['profitability'] = ''
elif profitability_score >= 16 * 0.8:
part_03['profitability'] = '较好'
elif profitability_score >= 16 * 0.6:
part_03['profitability'] = '处于行业平均水平'
elif profitability_score >= 16 * 0.4:
part_03['profitability'] = '较差'
else:
part_03['profitability'] = ''
# 资产运营效率
def operational_efficiency():
operation_score = float(data_03['财务评分']['资产质量']['总资产周转率']) + float(
data_03['财务评分']['资产质量']['应收账款周转率']) + float(
data_03['财务评分']['资产质量']['存货周转率'])
if operation_score >= 18:
part_03['operational_efficiency'] = ''
elif operation_score >= 18 * 0.8:
part_03['operational_efficiency'] = '较高'
elif operation_score >= 18 * 0.6:
part_03['operational_efficiency'] = '尚可'
elif operation_score >= 18 * 0.4:
part_03['operational_efficiency'] = '较低'
else:
part_03['operational_efficiency'] = ''
# 债务风险
def debt_risk():
debt_risk_score = float(data_03['财务评分']['债务风险']['资产负债率']) + float(
data_03['财务评分']['债务风险']['已获利息倍数']) + float(
data_03['财务评分']['债务风险']['速动比率'])
if debt_risk_score >= 18:
part_03['debt_risk'] = ''
elif debt_risk_score >= 18 * 0.8:
part_03['debt_risk'] = '较大'
elif debt_risk_score >= 18 * 0.6:
part_03['debt_risk'] = '适中'
elif debt_risk_score >= 18 * 0.4:
part_03['debt_risk'] = '较小'
else:
part_03['debt_risk'] = ''
# 成长能力
def growth_ability():
growth_ability_score = float(data_03['财务评分']['经营增长']['营业增长率']) + float(
data_03['财务评分']['经营增长']['总资产增长率']) + float(
data_03['财务评分']['经营增长']['技术投入比率'])
if growth_ability_score >= 18:
part_03['growth_ability'] = ''
elif growth_ability_score >= 18 * 0.8:
part_03['growth_ability'] = '较强'
elif growth_ability_score >= 18 * 0.6:
part_03['growth_ability'] = '一般'
elif growth_ability_score >= 18 * 0.4:
part_03['growth_ability'] = '较弱'
else:
part_03['growth_ability'] = ''
# 整体信用风险
def overall_credit_risk():
overall_credit_score = float(data_03['财务评分']['合计'])
if overall_credit_score >= 100:
part_03['overall_credit_risk'] = '很小'
elif overall_credit_score >= 100 * 0.8:
part_03['overall_credit_risk'] = ''
elif overall_credit_score >= 100 * 0.6:
part_03['overall_credit_risk'] = '可控'
elif overall_credit_score >= 100 * 0.4:
part_03['overall_credit_risk'] = '较大'
else:
part_03['overall_credit_risk'] = ''
profitability()
operational_efficiency()
debt_risk()
growth_ability()
overall_credit_risk()
return part_03
def para_04():
part_04 = dict()
part_04['company'] = param1
part_04['credit_rank'] = data_03['信用等级']
return part_04
result.append(para_01())
result.append(para_02())
result.append(para_03())
result.append(para_04())
return result
def attention(param):
"""
关注
Parameters:
param: 数据库数据
Returns:
result: 关注结果
"""
weight = read_json_file('/rating/static/attention/weights.json')
describe = read_json_file('/rating/static/attention/describe.json')
data = param['评价结果']['财务评分']
del param['评价结果']['财务评分']['合计']
for k, v in data.items():
for k_1, v_1 in v.items():
if k_1 != '合计':
weight[k_1] = round(v_1 / weight[k_1], 2)
res = sorted(weight.items(), key=lambda x: x[1])
result = list()
part_01 = dict()
part_02 = dict()
part_03 = dict()
part_01['attention_01'] = describe[res[0][0]]
part_02['attention_02'] = describe[res[1][0]]
part_03['attention_03'] = describe[res[2][0]]
result.append(part_01)
result.append(part_02)
result.append(part_03)
return result