from common.scripts import read_json_file 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 == '已获利息倍数' 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