import operator def social_turnover_salary(param): """ 离职率/人均薪酬水平 Parameters: param dict 数据库数据 Returns: result dict 清洗好的数据 """ # Params three_year_data = sorted(param['社会问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False) # Returns result = dict() def date_range(): """ 评价周期年度区间 Parameters: param dict 环境问卷 Returns: result str 区间数据 """ year_begin = three_year_data[0]['年份'] year_end = three_year_data[2]['年份'] res = year_begin + '-' + year_end return res def turnover_ratio(year_param): """ 每年离职比例 Parameters: param dict 年度社会问卷数据 Returns: result type 该年度离职比例 """ # 离职率 total = year_param['员工总数(年底)'] turnover = year_param['当年离职人数'] rate = round(turnover / total * 100, 2) return str(rate) + '%' def calculate_three_year_data(): """ 计算三年数据并转为字符串 Parameters: '-' Returns: result str 三年数据用顿号隔开 """ res = dict() year_turnover = list() yart_salary_level = list() for item in three_year_data: turnover_res = turnover_ratio(item) year_turnover.append(turnover_res) yart_salary_level.append(item['人均薪酬水平(元/月)']) # 列表中元素类型float转str yart_salary_level_new = [str(x) for x in yart_salary_level] # Returns-part1 res['part_01'] = dict() res['part_01']['date_range'] = date_range() res['part_01']['turnover_ratio'] = '、'.join(year_turnover) res['part_01']['year_03'] = three_year_data[2]['年份'] res['part_01']['industry_indicators'] = None res['part_01']['industry_indicators_average'] = None res['part_01']['industry_indicators_median'] = None res['part_01']['median_comparison'] = None # part2 res['part_02'] = dict() res['part_02']['date_range'] = date_range() res['part_02']['salary_level'] = '、'.join(yart_salary_level_new) res['part_02']['year_02'] = three_year_data[1]['年份'] res['part_02']['year_03'] = three_year_data[2]['年份'] res['part_02']['year01_on_year02'] = round((yart_salary_level[1] / yart_salary_level[0] - 1) * 100, 2) res['part_02']['year02_on_year03'] = round((yart_salary_level[2] / yart_salary_level[1] - 1) * 100, 2) res['part_02']['industry_indicators'] = None res['part_02']['industry_indicators_average'] = None res['part_02']['industry_indicators_median'] = None res['part_02']['median_comparison'] = None return res result['part_01'] = calculate_three_year_data()['part_01'] result['part_02'] = calculate_three_year_data()['part_02'] return result def social_labor_disputes(param): """ 劳动纠纷 Parameters: param dict 数据库数据 Returns: result dict 清洗好的数据 """ data = param['社会问卷'] # Returns result = dict() for item in data['近三年公司数据']: if item['劳资纠纷次数'] > 0: result['describe'] = '劳动纠纷——公司在近三年出现了劳动纠纷,这影响了公司的社会得分。' break else: result['describe'] = False return result def social_safety_accident(param): """ 安全事故 Parameters: param dict 数据库数据 Returns: result dict 清洗好的数据 """ data = param['社会问卷'] # Returns result = dict() for item in data['近三年公司数据']: if item['安全事故发生次数'] > 0: result['describe'] = '安全事故——公司在近三年出现了安全事故,这影响了公司的社会得分。。' break else: result['describe'] = False return result def social_training_return(param): """ 提供培训/产品返修、退还、投诉 Parameters: param dict 数据库数据 Returns: result dict 清洗好的数据 """ # Params three_year_data = sorted(param['社会问卷']['近三年公司数据'], key=operator.itemgetter('年份'), reverse=False) # Returns result = dict() def date_range(): """ 评价周期年度区间 Parameters: param dict 环境问卷 Returns: result str 区间数据 """ year_begin = three_year_data[0]['年份'] year_end = three_year_data[2]['年份'] res = year_begin + '-' + year_end return res def calculate_three_year_data(): """ 计算三年数据并转为字符串 Parameters: '-' Returns: result str 三年数据用顿号隔开 """ res = dict() year_training = list() year_return = list() for item in three_year_data: year_training.append(str(item['组织培训次数'])) year_return.append(str(item['返修、退回、投诉产品对应销售额占全部销售比例(%)'])) # Returns-part1 res['part_01'] = dict() res['part_01']['date_range'] = date_range() res['part_01']['training_number'] = '、'.join(year_training) res['part_01']['year_03'] = three_year_data[2]['年份'] res['part_01']['industry_indicators'] = None # part2 res['part_02'] = dict() res['part_02']['date_range'] = date_range() res['part_02']['salary_level'] = '、'.join(year_return) res['part_02']['year_03'] = three_year_data[2]['年份'] res['part_02']['industry_indicators'] = None return res result['part_01'] = calculate_three_year_data()['part_01'] result['part_02'] = calculate_three_year_data()['part_02'] return result def socail_poverty_alleviation(param): """ 扶贫和捐赠 Parameters: param dict 数据库数据 Returns: result dict 清洗好的数据 """ data = param['社会问卷'] # Returns result = dict() for item in data['近三年公司数据']: if item['扶贫+捐赠规模(万元)'] > 0: result['describe'] = '扶贫和捐赠——公司在近三年有过扶贫、捐赠行为,这提高了公司社会得分。' break else: result['describe'] = False return result def socail_legal_proceedings(param): """ 司法风险 Parameters: param dict 数据库数据 Returns: result dict 清洗好的数据 """ # Parameter data = param['风险数据'] # Returns result = dict() for value in data.values(): if value > 0: result['describe'] = '法律诉讼(作为被告)、被执行人、失信人、行政处罚、税收违法、严重违法、经营异常——经查,公司存在1项或多项的法律诉讼(作为被告)、被执行人、失信人、行政处罚、税收违法、严重违法、经营异常情况,这影响了公司社会分数。' break else: result['describe'] = False return result