2022-02-17 16:44:58 +08:00
|
|
|
import operator
|
2022-02-11 16:53:01 +08:00
|
|
|
|
|
|
|
|
|
|
|
def governance_rating(param):
|
|
|
|
"""
|
|
|
|
治理部分打分
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score float 治理部分得分
|
|
|
|
"""
|
2022-02-17 16:44:58 +08:00
|
|
|
result = dict()
|
|
|
|
result['企业性质'] = calculation_01(param)
|
|
|
|
result['公司是否设有董事会'] = calculation_02(param)
|
|
|
|
result['公司是否设有监事会'] = calculation_03(param)
|
|
|
|
result['董监高平均拥有的行业经验年数'] = calculation_04(param)
|
|
|
|
result['董监高近三年离职率'] = calculation_05(param)
|
|
|
|
result['公司近三年信息披露及时、可靠、完备、审计质量'] = calculation_06(param)
|
|
|
|
result['公司董事会近三年年均开会次数'] = calculation_07(param)
|
|
|
|
result['净资产收益率'] = calculation_08(param)
|
|
|
|
result['公司是否有审计报告'] = calculation_09(param)
|
|
|
|
|
2022-02-11 16:53:01 +08:00
|
|
|
fraction = list()
|
2022-02-17 16:44:58 +08:00
|
|
|
for value in result.values():
|
|
|
|
fraction.append(value)
|
2022-02-11 16:53:01 +08:00
|
|
|
|
|
|
|
score = sum(fraction)
|
2022-02-17 16:44:58 +08:00
|
|
|
result['合计'] = score
|
2022-02-11 16:53:01 +08:00
|
|
|
|
2022-02-17 16:44:58 +08:00
|
|
|
return result
|
2022-02-11 16:53:01 +08:00
|
|
|
|
|
|
|
|
|
|
|
def calculation_01(param):
|
|
|
|
"""
|
|
|
|
企业性质
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
|
|
|
answer = param['治理问卷']['其他类型问卷'][0]
|
|
|
|
|
|
|
|
if answer == 'A':
|
|
|
|
score = 8
|
|
|
|
elif answer == 'B':
|
|
|
|
score = 3
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|
|
|
|
|
|
|
|
|
|
|
|
def calculation_02(param):
|
|
|
|
"""
|
|
|
|
公司是否设有董事会
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
|
|
|
answer = param['治理问卷']['其他类型问卷'][5]
|
|
|
|
|
|
|
|
if answer == '是':
|
|
|
|
score = 1
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|
|
|
|
|
|
|
|
|
|
|
|
def calculation_03(param):
|
|
|
|
"""
|
|
|
|
公司是否设有监事会
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
|
|
|
answer = param['治理问卷']['其他类型问卷'][6]
|
|
|
|
|
|
|
|
if answer == '是':
|
|
|
|
score = 1
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|
|
|
|
|
|
|
|
|
|
|
|
def calculation_04(param):
|
|
|
|
"""
|
|
|
|
董监高平均拥有的行业经验年数
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
|
|
|
answer = param['治理问卷']['其他类型问卷'][1]
|
|
|
|
|
|
|
|
if answer == 'A':
|
|
|
|
score = 4
|
|
|
|
elif answer == 'B':
|
|
|
|
score = 2
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|
|
|
|
|
|
|
|
|
|
|
|
def calculation_05(param):
|
|
|
|
"""
|
|
|
|
董监高近三年离职率
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
|
|
|
answer = param['治理问卷']['其他类型问卷'][2] / param['治理问卷']['其他类型问卷'][3] * 100
|
|
|
|
|
|
|
|
if answer < 35:
|
|
|
|
score = 4
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|
|
|
|
|
|
|
|
|
|
|
|
def calculation_06(param):
|
|
|
|
"""
|
|
|
|
公司近三年信息披露及时、可靠、完备、审计质量
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
|
|
|
answer = param['治理问卷']['其他类型问卷'][7]
|
|
|
|
|
2022-03-02 11:15:04 +08:00
|
|
|
if answer == 'A':
|
2022-02-11 16:53:01 +08:00
|
|
|
score = 1
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|
|
|
|
|
|
|
|
|
|
|
|
def calculation_07(param):
|
|
|
|
"""
|
|
|
|
公司董事会近三年年均开会次数
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
|
|
|
answer = param['治理问卷']['其他类型问卷'][4]
|
|
|
|
|
|
|
|
if answer == 'A':
|
|
|
|
score = 3
|
|
|
|
elif answer == 'B':
|
|
|
|
score = 1
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|
|
|
|
|
|
|
|
|
|
|
|
def calculation_08(param):
|
|
|
|
"""
|
|
|
|
净资产收益率
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
2022-02-17 16:44:58 +08:00
|
|
|
# Parameter
|
|
|
|
three_year_data = sorted(param['治理问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False)
|
|
|
|
|
|
|
|
year_begin = three_year_data[0]['公司净利润(万元)'] / three_year_data[0]['公司净资产(万元)'] * 100
|
|
|
|
year_middle = three_year_data[1]['公司净利润(万元)'] / three_year_data[1]['公司净资产(万元)'] * 100
|
|
|
|
year_end = three_year_data[2]['公司净利润(万元)'] / three_year_data[2]['公司净资产(万元)'] * 100
|
2022-02-11 16:53:01 +08:00
|
|
|
|
2022-02-17 16:44:58 +08:00
|
|
|
average = (year_end + year_middle + year_begin)/3
|
2022-02-11 16:53:01 +08:00
|
|
|
|
|
|
|
if average >= 15:
|
|
|
|
score = 6
|
|
|
|
elif average >= 10:
|
|
|
|
score = 4
|
|
|
|
elif average >= 8:
|
|
|
|
score = 2
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|
|
|
|
|
|
|
|
|
|
|
|
def calculation_09(param):
|
|
|
|
"""
|
|
|
|
公司是否有审计报告
|
|
|
|
Parameters:
|
|
|
|
param dict 填报问卷
|
|
|
|
Returns:
|
|
|
|
score int 得分
|
|
|
|
"""
|
2022-02-17 16:44:58 +08:00
|
|
|
# Parameter
|
|
|
|
three_year_data = sorted(param['治理问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False)
|
2022-02-11 16:53:01 +08:00
|
|
|
|
2022-02-17 16:44:58 +08:00
|
|
|
year_begin = three_year_data[0]['公司是否有审计报告']
|
|
|
|
year_middle = three_year_data[1]['公司是否有审计报告']
|
|
|
|
year_end = three_year_data[2]['公司是否有审计报告']
|
|
|
|
|
|
|
|
if year_end == year_middle == year_begin == '是':
|
2022-02-11 16:53:01 +08:00
|
|
|
score = 2
|
|
|
|
else:
|
|
|
|
score = 0
|
|
|
|
|
|
|
|
return score
|