293 lines
11 KiB
Python
293 lines
11 KiB
Python
from rating.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 != '企业名称' and k != '年报期' and k != '企业ID':
|
||
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 None
|
||
|
||
|
||
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 > 400000000:
|
||
part_01['scale'] = '大型'
|
||
elif income > 20000000:
|
||
part_01['scale'] = '中型'
|
||
elif income > 3000000:
|
||
part_01['scale'] = '小型'
|
||
else:
|
||
part_01['scale'] = '微型'
|
||
|
||
# 优势领域
|
||
def advantage_area():
|
||
if float(data_02['资产负债表'][0]['资产总计']) > 400000000:
|
||
part_01['advantage_area'] = '资产规模'
|
||
elif float(data_02['补充数据表'][0]['研发费用']) / float(data_02['利润表'][0]['营业收入'] * 100) > 10:
|
||
part_01['advantage_area'] = '研发实力'
|
||
elif float(data_02['资产负债表'][0]['短期借款']) != 0 or float(data_02['资产负债表'][0]['一年内到期非流动负债']) != 0 or float(
|
||
data_02['资产负债表'][0]['长期借款']) != 0:
|
||
part_01['advantage_area'] = '融资渠道'
|
||
else:
|
||
part_01['advantage_area'] = '产业政策'
|
||
|
||
# 执行子方法
|
||
scale()
|
||
advantage_area()
|
||
return part_01
|
||
|
||
def para_02():
|
||
part_02 = dict()
|
||
|
||
# esg相关描述
|
||
def esg_sesc():
|
||
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_sesc()
|
||
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):
|
||
weight = dict()
|
||
weight['净资产收益率'] = 8
|
||
weight['总资产报酬率'] = 8
|
||
weight['总资产周转率'] = 6
|
||
weight['应收账款周转率'] = 6
|
||
weight['存货周转率'] = 6
|
||
weight['资产负债率'] = 8
|
||
weight['已获利息倍数'] = 5
|
||
weight['速动比率'] = 5
|
||
weight['营业增长率'] = 8
|
||
weight['总资产增长率'] = 5
|
||
weight['技术投入比率'] = 5
|
||
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'] = res[0][0]
|
||
part_02['attention_02'] = res[1][0]
|
||
part_03['attention_03'] = res[2][0]
|
||
result.append(part_01)
|
||
result.append(part_02)
|
||
result.append(part_03)
|
||
return result
|