tfse-model-api-v0.2/Esg/scripts/social.py

354 lines
8.5 KiB
Python
Raw Normal View History

2022-02-11 16:53:01 +08:00
from common.scripts import read_json_file
def social_rating(param):
"""
社会部分打分
Parameters:
param dict 填报问卷
Returns:
score float 社会部分得分
"""
fraction = list()
if calculation_15(param) == 'S=0':
score = 0
else:
fraction.append(calculation_01(param))
fraction.append(calculation_02(param))
fraction.append(calculation_03(param))
fraction.append(calculation_04(param))
fraction.append(calculation_05(param))
fraction.append(calculation_06(param))
fraction.append(calculation_07(param))
fraction.append(calculation_08(param))
fraction.append(calculation_09(param))
fraction.append(calculation_10(param))
fraction.append(calculation_11(param))
fraction.append(calculation_12(param))
fraction.append(calculation_13(param))
fraction.append(calculation_14(param))
score = sum(fraction)
return score
def calculation_01(param):
"""
离职人数占比
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
social_data = param['社会问卷']['近三年公司数据']
year_2020 = round(social_data[0]['当年离职人数'] / social_data[0]['员工总数'], 2)
year_2019 = round(social_data[1]['当年离职人数'] / social_data[1]['员工总数'], 2)
year_2018 = round(social_data[2]['当年离职人数'] / social_data[2]['员工总数'], 2)
factor_01 = (year_2018 + year_2019 + year_2020)/3*100 <= 20
factor_02 = 20 < (year_2018 + year_2019 + year_2020)/3*100 <= 30
if factor_01:
score = 5
elif factor_02:
score = 2
else:
score = 0
return score
def calculation_02(param):
"""
人均薪酬涨幅
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['人均薪酬水平(元/月)']
year_2018 = param['社会问卷']['近三年公司数据'][2]['人均薪酬水平(元/月)']
factor = (year_2020/year_2018)**(1/2) - 1 >= 0.03
if factor:
score = 2
else:
score = 0
return score
def calculation_03(param):
"""
劳动合同中的工作时长
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['劳动合同要求工作时长(每周小时数)']
year_2019 = param['社会问卷']['近三年公司数据'][1]['劳动合同要求工作时长(每周小时数)']
year_2018 = param['社会问卷']['近三年公司数据'][2]['劳动合同要求工作时长(每周小时数)']
factor = (year_2020 + year_2019 + year_2018) / 3 <= 45
if factor:
score = 4
else:
score = 0
return score
def calculation_04(param):
"""
劳动纠纷
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['劳资纠纷次数']
year_2019 = param['社会问卷']['近三年公司数据'][1]['劳资纠纷次数']
year_2018 = param['社会问卷']['近三年公司数据'][2]['劳资纠纷次数']
factor = (year_2020 + year_2019 + year_2018) <= 0
if factor:
score = 3
else:
score = 0
return score
def calculation_05(param):
"""
安全事故
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['安全事故发生次数']
year_2019 = param['社会问卷']['近三年公司数据'][1]['安全事故发生次数']
year_2018 = param['社会问卷']['近三年公司数据'][2]['安全事故发生次数']
factor = (year_2020 + year_2019 + year_2018) <= 0
if factor:
score = 3
else:
score = 0
return score
def calculation_06(param):
"""
提供培训
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['组织培训次数']
year_2019 = param['社会问卷']['近三年公司数据'][1]['组织培训次数']
year_2018 = param['社会问卷']['近三年公司数据'][2]['组织培训次数']
factor_01 = (year_2020 + year_2019 + year_2018) >= 4
factor_02 = (year_2020 + year_2019 + year_2018) >= 1
if factor_01:
score = 5
elif factor_02:
score = 2
else:
score = 0
return score
def calculation_07(param):
"""
社保缴纳是否符合当地标准
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
anwser = param['社会问卷']['其他类型问卷'][0]
if anwser == '':
score = 1
else:
score = 0
return score
def calculation_08(param):
"""
公积金缴纳是否符合当地标准
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
anwser = param['社会问卷']['其他类型问卷'][1]
if anwser == '':
score = 1
else:
score = 0
return score
def calculation_09(param):
"""
是否提供员工体检
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
anwser = param['社会问卷']['其他类型问卷'][2]
if anwser == '':
score = 1
else:
score = 0
return score
def calculation_10(param):
"""
是否提供带薪假期
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
anwser = param['社会问卷']['其他类型问卷'][3]
if anwser == '':
score = 1
else:
score = 0
return score
def calculation_11(param):
"""
公司从前三大供货商拿货占比
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['公司从前3大供应商拿货占全部供应商比例%']
year_2018 = param['社会问卷']['近三年公司数据'][2]['公司从前3大供应商拿货占全部供应商比例%']
factor = year_2018 >= year_2020
if factor:
score = 1
else:
score = 0
return score
def calculation_12(param):
"""
公司前3大客户销量占比
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['公司前3大客户销售额占全部销售比例%']
year_2018 = param['社会问卷']['近三年公司数据'][2]['公司前3大客户销售额占全部销售比例%']
factor = year_2018 >= year_2020
if factor:
score = 1
else:
score = 0
return score
def calculation_13(param):
"""
公司返修退回投诉产品比例%
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['返修、退回、投诉产品对应销售额占全部销售比例(%']
year_2018 = param['社会问卷']['近三年公司数据'][2]['返修、退回、投诉产品对应销售额占全部销售比例(%']
factor = year_2018 >= year_2020
if factor:
score = 1
else:
score = 0
return score
def calculation_14(param):
"""
扶贫+捐赠规模万元
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
year_2020 = param['社会问卷']['近三年公司数据'][0]['扶贫+捐赠规模(万元)']
year_2019 = param['社会问卷']['近三年公司数据'][1]['扶贫+捐赠规模(万元)']
year_2018 = param['社会问卷']['近三年公司数据'][2]['扶贫+捐赠规模(万元)']
factor_01 = (year_2020 + year_2019 + year_2018) > 0
if factor_01:
score = 5
else:
score = 0
return score
def calculation_15(param):
"""
司法风险
Parameters:
param dict 填报问卷
Returns:
score int 得分
"""
risk = param['风险数据']
score = None
for value in risk.values():
if value > 0:
score = 'S=0'
break
else:
score = 0
return score
if __name__ == '__main__':
data = read_json_file('/Esg/static/template_data.json')
S_score = social_rating(data)
print(S_score)