tfse-etl-api-v0.2/rating/scripts/report.py

1556 lines
60 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import datetime
import time
from rating.db import find_tyc_db, find_tfse_db, conserve_data
from rating.province_map import p_map
def get_tfse_data(param):
"""
获取数据库数据
Parameters:
param: 企业名称、企业ID、评价ID
Returns:
report_data: 数据库数据
"""
company = param['company']
rid = param['rid']
cid = param['cid']
report_data = dict()
# 评价结果
es = find_tfse_db(db='评价', col='评价结果', query={'评价ID': rid})[0]
# 综合评价填报
cef = find_tfse_db(db='评价', col='综合评价填报', query={'评价ID': rid})[0]
# 指标明细
fid = find_tfse_db(db='企业', col='指标明细', query={'企业名称': company})
# 基本信息
cbd = find_tyc_db(db='公司背景', col='基本信息', query={'企业名称': company})[0]
# 企业股东
cs = find_tyc_db(db='公司背景', col='企业股东', query={'企业名称': '四川麦克福瑞制药有限公司'})[0]
# 对外投资
oi = find_tyc_db(db='公司背景', col='对外投资', query={'企业名称': company})[0]
# 进出口信用
ip = find_tyc_db(db='经营状况', col='进出口信用', query={'企业名称': company})[0]
# 专利
ip_02 = find_tyc_db(db='知识产权', col='专利', query={'企业名称': company})[0]
# 软件著作权
sc = find_tyc_db(db='知识产权', col='软件著作权', query={'企业名称': company})[0]
# 资质证书
qh = find_tyc_db(db='经营状况', col='资质证书', query={'企业名称': '四川麦克福瑞制药有限公司'})[0]
# 融资历史
fh = find_tyc_db(db='公司发展', col='融资历史', query={'企业名称': company})[0]
# 风险数据
rd = find_tfse_db(db='评价', col='风险数据', query={'企业ID': cid})[0]
# 周边风险
pr = find_tyc_db(db='天眼风险', col='周边风险', query={'企业名称': company})[0]
report_data['评价结果'] = es
report_data['综合评价填报'] = cef
report_data['指标明细'] = fid
report_data['基本信息'] = cbd
report_data['企业股东'] = cs
report_data['对外投资'] = oi
report_data['进出口信用'] = ip
report_data['专利'] = ip_02
report_data['软件著作权'] = sc
report_data['资质证书'] = qh
report_data['融资历史'] = fh
report_data['风险数据'] = rd
report_data['周边风险'] = pr
return report_data
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(str(value))
insert_list.append(str(data_01['资产负债表'][1][key]))
insert_list.append(str(data_01['资产负债表'][2][key]))
result.append(insert_list)
for key, value in data_01['利润表'][0].items():
if key != '报告期':
insert_list = list()
insert_list.append(key)
insert_list.append(str(value))
insert_list.append(str(data_01['利润表'][1][key]))
insert_list.append(str(data_01['利润表'][2][key]))
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(str(v))
insert_list.append(str(data_02[1][k]))
insert_list.append(str(data_02[2][k]))
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):
"""
评价观点
清洗数据库数据,根据需要返回
Parameters:
param1: 企业名称
param2: 数据库数据
Returns:
评价观点数据
"""
data_01 = param2['基本信息']['基本信息']
data_02 = param2['综合评价填报']['财务填报']
data_03 = param2['评价结果']
result = list()
part_01 = dict()
part_01['company'] = param1
part_01['province'] = data_01['regLocation'][:2]
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'] = '微型'
# 优势领域
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'] = '产业政策'
part_02 = dict()
# esg相关描述
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
part_03 = dict()
# 盈利能力
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'] = ''
# 资产运营效率
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'] = ''
# 债务风险得分
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'] = ''
# 经营增长状况得分
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'] = ''
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'] = ''
part_04 = dict()
part_04['company'] = param1
part_04['credit_rank'] = data_03['信用等级']
result.append(part_01)
result.append(part_02)
result.append(part_03)
result.append(part_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
def company_background(param1, param2):
"""
公司背景
清洗数据库数据,根据需要返回
Parameters:
param1: 企业名称
param2: 数据库数据
Returns:
公司背景数据
"""
data_01 = param2['基本信息']['基本信息']
data_02 = param2['企业股东']['企业股东']
data_03 = param2['综合评价填报']['财务填报']
result = list()
part_01 = dict()
part_02 = dict()
# 段落1
part_01['company'] = param1
# 年限
part_01['year_03'] = data_03['资产负债表'][0]['报告期'][:4]
# 成立时间
part_01['found_date'] = time_stamp(data_01['estiblishTime'])
# 注册资本
part_01['register_assets'] = data_01['regCapital']
# 实收资本
part_01['paid_assets'] = data_01['actualCapital']
# 股份持有人
part_01['share_holders'] = data_02['result'][0]['name']
# 股份
part_01['share_rates'] = data_02['result'][0]['capital'][0]['percent']
# 实际控制人
part_01['real_boss'] = part_01['share_holders']
# 经营范围
part_01['business_scope'] = data_01['businessScope']
# 段落2
# 年限
part_02['year_03'] = data_03['资产负债表'][0]['报告期'][:4]
total_assets_01 = data_03['资产负债表'][0]['资产总计']
total_assets_02 = data_03['资产负债表'][1]['资产总计']
# 公司总资产
part_02['total_assets'] = str(total_assets_01)
# 总资产同比增长
part_02['year_03_total_assets_variety'] = str(calculate_growth_rate(total_assets_01, total_assets_02))
net_assets_01 = data_03['资产负债表'][0]['所有者权益合计']
net_assets_02 = data_03['资产负债表'][1]['所有者权益合计']
# 净资产(所有者权益)
part_02['net_assets'] = str(net_assets_01)
# 净资产同比增长
part_02['year_03_net_assets_variety'] = str(calculate_growth_rate(net_assets_01, net_assets_02))
income_01 = data_03['利润表'][0]['营业收入']
income_02 = data_03['利润表'][1]['营业收入']
# 营业收入
part_02['income'] = str(income_01)
# 营业收入同比增长
part_02['year_03_income_variety'] = str(calculate_growth_rate(income_01, income_02))
profit_01 = data_03['利润表'][0]['净利润']
profit_02 = data_03['利润表'][1]['净利润']
# 净利润
part_02['profit'] = str(profit_01)
# 净利润同比增长
part_02['year_03_profit_variety'] = str(calculate_growth_rate(profit_01, profit_02))
result.append(part_01)
result.append(part_02)
return result
def calculate_growth_rate(param1, param2):
"""
计算增长率
传入两年财务数据字典项,算出年增长率
Parameters:
param1: 财务指标1
param2: 财务指标2
Returns:
增长率
"""
param1 = float(param1)
param2 = float(param2)
rate = round((param1 - param2) / param2, 2)
return rate
def shareholder_strength_data(param):
"""
股东数据
清洗数据库数据,根据需要返回
Parameters:
param: 企业名称
Returns:
股东数据
"""
data = dict()
# 基本信息
cbd = find_tyc_db(db='公司背景', col='基本信息', query={'企业名称': param})[0]
# 企业股东
cs = find_tyc_db(db='公司背景', col='企业股东', query={'企业名称': param})[0]
data['基本信息'] = cbd
data['企业股东'] = cs
return data
def person_subsidiaries(param):
"""
人员控股数据
清洗数据库数据,根据需要返回
Parameters:
param: 人员id
Returns:
人员控股数据
"""
data = dict()
# 控股数据
ps = find_tyc_db(db='公司背景', col='人员控股企业', query={'人员ID': param})[0]
data['人员控股企业'] = ps
return data
def shareholder_strength(param):
"""
股东实力
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
股东实力数据
"""
data_01 = param['企业股东']['企业股东']
result = list()
part_01 = dict()
part_02 = dict()
if data_01['result'][0]['type'] == 1:
shareholder = data_01['result'][0]['name']
# 大股东名称
part_01['company'] = shareholder
# 股东-基本信息
data_02 = shareholder_strength_data(shareholder)['基本信息']['基本信息']
# 股东-企业股东
data_03 = shareholder_strength_data(shareholder)['企业股东']['企业股东']
part_01['found_date'] = time_stamp(data_02['estiblishTime'])
part_01['registered_capital'] = data_02['regCapital']
part_01['registered_capital'] = data_02['actualCapital']
part_01['share_holders'] = data_03['result'][0]['name']
part_01['share_rates'] = data_03['result'][0]['capital'][0]['percent']
part_01['business_scope'] = data_02['businessScope']
esatablish = datetime.datetime.today().year - int(part_01['found_date'][:4])
if esatablish >= 5:
part_02['establish_time'] = '较长'
else:
part_02['establish_time'] = '较短'
regcapital = float(data_02['regCapital'].replace('万人民币', ''))
if regcapital >= 30000:
part_02['capital_strength'] = ''
part_02['support_strength'] = '有望在业务和资金方面给予公司一定支持'
elif regcapital >= 10000:
part_02['capital_strength'] = '较强'
part_02['support_strength'] = '有望在业务和资金方面给予公司一定支持'
elif regcapital >= 3000:
part_02['capital_strength'] = '尚可'
part_02['support_strength'] = '对公司的支持力度或较弱'
elif regcapital >= 1000:
part_02['capital_strength'] = '较弱'
part_02['support_strength'] = '对公司的支持力度或较弱'
else:
part_02['capital_strength'] = ''
part_02['support_strength'] = '对公司的支持力度或较弱'
result.append(part_01)
result.append(part_02)
else:
part_01['name'] = data_01['result'][0]['name']
amount = 0
subsidiaries = person_subsidiaries(data_01['result'][0]['id'])
if len(subsidiaries['人员控股企业']['人员控股企业']) > 0:
for item in subsidiaries['人员控股企业']['items']:
reg = float(item['regCapital'].replace('万人民币', ''))
percent = float(item['percent'].replace('%', ''))
if reg > 3000 and percent > 50:
amount += 1
if amount > 0:
part_01['enterprise_amount'] = '旗下拥有{num}家资本实力较强的子公司,可为公司经营提供一定支持'.format(num=amount)
else:
part_01['enterprise_amount'] = '旗下无资本实力较强的子公司,对公司支持力度偏弱'
result.append(part_01)
return result
def outbound_investment(param):
"""
对外投资
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
对外投资数据
"""
data_01 = param['对外投资']['对外投资']
data_02 = param['综合评价填报']['财务填报']
result = list()
part_01 = dict()
# 年限
part_01['year_03'] = data_02['资产负债表'][0]['报告期'][:4]
# 对外投资数量
part_01['subsidiary_total_number'] = len(data_01['result'])
# 投资总金额
part_01['investment_total_amount'] = str(calculate_amount(data_01['result'])['amount'])
# 持股50%以上子公司
fifty_percent = list()
for item in data_01['result']:
percent = float(item['percent'].replace('%', ''))
if percent > 50:
fifty_percent.append(item)
# 子公司数量
part_01['subsidiary_number'] = str(len(fifty_percent))
# 子公司投资金额合计
part_01['investment_amount'] = str(calculate_amount(fifty_percent)['amount'])
# 对外投资集中行业
industry = calculate_amount(data_01['result'])['industry']
industry_amount = calculate_list(industry)
top_3_industry = sorted(industry_amount.items(), key=lambda x: x[1], reverse=True)
industry_result = calculate_tuple(top_3_industry, data_01['result'], float(part_01['investment_total_amount']),
'industry')
part_01['top_3_industry'] = industry_result['industry']
# 行业集中度
part_01['Industry_concentration'] = industry_result['concentration']
# 对外投资地域集中省市
base = calculate_amount(data_01['result'])['base']
base_amount = calculate_list(base)
top_3_base = sorted(base_amount.items(), key=lambda x: x[1], reverse=True)
region_result = calculate_tuple(top_3_base, data_01['result'], float(part_01['investment_total_amount']),
'region')
part_01['top_3_region'] = region_result['industry']
part_01['Regional_concentration'] = region_result['concentration']
# 表2
part_02 = list()
part_02.append(['被投资企业名称', '注册资本', '投资比例', '投资金额', '成立日期', '所属行业', '所属省份'])
for item in data_01['result']:
insert_list = list()
insert_list.append(item['name'])
insert_list.append(item['regCapital'])
insert_list.append(item['percent'])
insert_list.append(str(item['amount']) + '万元')
insert_list.append(time_stamp(item['estiblishTime']))
insert_list.append(item['category'])
insert_list.append(province_conversion(item['base']))
part_02.append(insert_list)
result.append(part_01)
result.append(part_02)
return result
def calculate_amount(param):
"""
计算数据之和
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
数据合计
"""
result = dict()
result['amount'] = 0
result['industry'] = list()
result['base'] = list()
for item in param:
result['amount'] += item['amount']
result['industry'].append(item['category'])
result['base'].append(item['base'])
return result
def calculate_list(param):
"""
计算列表中所有元素出现的次数
Parameters:
param: list数据
Returns:
列表元素出现次数对象
"""
result = dict()
for item in param:
result[item] = param.count(item)
return result
def calculate_tuple(param1, param2, param3, param4):
"""
计算元组中值最大的三个
Parameters:
param1: tuple数据
param2: 对外投资数据
param3: 对外投资总金额
param4: industry/region
Returns:
元组元素出现次数对象
行业集中度
"""
result = dict()
if len(param1) > 3:
data = param1[:3]
result['industry'] = [data[0][0], data[1][0], data[2][0]]
else:
result['industry'] = list()
for num in range(len(param1)):
result['industry'].append(param1[num][0])
amount = 0
for item in param2:
if param4 == 'industry':
if item['category'] in result['industry']:
amount += item['amount']
else:
if item['base'] in result['industry']:
amount += item['amount']
concentration = round(amount / param3 * 100, 2)
if concentration > 60:
result['concentration'] = ''
elif concentration > 40:
result['concentration'] = '较高'
elif concentration > 20:
result['concentration'] = '适中'
elif concentration > 10:
result['concentration'] = '较低'
else:
result['concentration'] = ''
base_list = list()
if param4 == 'region':
for region in result['industry']:
res = [v for k, v in p_map.items() if k == region][0]
base_list.append(res)
result['industry'] = ''.join(base_list)
else:
result['industry'] = ''.join(result['industry'])
return result
def time_stamp(param):
"""
时间戳转换
Parameters:
param: 时间戳数据
Returns:
转换后时间数据
"""
estiblish_time = param / 1000
put_date = time.localtime(estiblish_time)
date = time.strftime("%Y-%m-%d", put_date)
return date
def province_conversion(param):
"""
省份转换
Parameters:
param: 省份简称
Returns:
转换后省份全称
"""
res = [v for k, v in p_map.items() if k == param][0]
return res
def import_export(param):
"""
进出口权
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
对外投资数据
"""
data_01 = param['进出口信用']['进出口信用']
result = list()
part_01 = dict()
if data_01:
part_01['import_export_power'] = '拥有' + data_01['baseInfo']['creditRating']
part_01['influence'] = ''
else:
part_01['import_export_power'] = ''
part_01['influence'] = ''
result.append(part_01)
return result
def intellectual_property(param):
"""
知识产权
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
知识产权数据
"""
data_01 = param['专利']['专利']
data_02 = param['软件著作权']['软件著作权']
result = list()
part_01 = dict()
part_02 = dict()
part_03 = dict()
today = datetime.datetime.today()
year = today.year
month = today.month
# part_01
part_01['date'] = str(year) + '' + str(month) + ''
if data_01 is None:
part_01['patent_number'] = '0'
part_01['patent_number_03'] = '0、0、0'
part_01['patent_number_three_year'] = '0'
part_01['patent_number_03_three_year'] = '0、0、0'
else:
part_01['patent_number'] = len(data_01)
part_01['patent_number_three_year'] = 0
um = 0
ad = 0
ip = 0
um_03 = 0
ad_03 = 0
ip_03 = 0
for item in data_01:
if year - int(item['pubDate'][:4]) <= 3:
part_01['patent_number_three_year'] += 0
if item['patentType'] == '实用新型':
um_03 += 1
elif item['patentType'] == '外观设计':
ad_03 += 1
elif item['patentType'] == '发明专利':
ip_03 += 1
if item['patentType'] == '实用新型':
um += 1
elif item['patentType'] == '外观设计':
ad += 1
elif item['patentType'] == '发明专利':
ip += 1
part_01['patent_number_03'] = str(um) + '' + str(ad) + '' + str(ip)
part_01['patent_number_03_three_year'] = str(um_03) + '' + str(ad_03) + '' + str(ip_03)
# part_02
part_02['date'] = str(year) + '' + str(month) + ''
if data_02 is None:
part_02['copyrights_number'] = '0'
part_02['copyrights_number_03'] = '0、0、0'
part_02['copyrights_number_three_year'] = '0'
part_02['copyrights_number_03_three_year'] = '0、0、0'
else:
part_02['copyrights_number'] = len(data_02)
part_02['copyrights_number_three_year'] = 0
os = 0
ia = 0
fs = 0
os_03 = 0
ia_03 = 0
fs_03 = 0
for item in data_02:
if year - int(item['regtime'][:4]) <= 3:
part_02['copyrights_number_three_year'] += 0
if item['catnum'] == '操作系统':
os_03 += 1
elif item['catnum'] == '行业应用软件':
ia_03 += 1
elif item['catnum'] == '金融软件':
fs_03 += 1
if item['patentType'] == '操作系统':
os += 1
elif item['patentType'] == '行业应用软件':
ia += 1
elif item['patentType'] == '金融软件':
fs += 1
part_01['copyrights_number_03'] = str(os) + '' + str(ia) + '' + str(fs)
part_01['copyrights_number_03_three_year'] = str(os_03) + '' + str(ia_03) + '' + str(fs_03)
# part_03
patented_software = int(part_01['patent_number']) + int(part_02['copyrights_number'])
if patented_software > 5000:
part_03['patented_software'] = '较多'
part_03['RD_capability'] = ''
elif patented_software > 1000:
part_03['patented_software'] = '处于行业中游水平'
part_03['RD_capability'] = '尚可'
else:
part_03['patented_software'] = '较少'
part_03['RD_capability'] = ''
result.append(part_01)
result.append(part_02)
result.append(part_03)
return result
def qualification_honor(param):
"""
资质荣誉
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
资质荣誉数据
"""
data = param['资质证书']['资质证书']
result = list()
part_01 = dict()
if len(data) == 0:
part_01 = '无数据'
result.append(part_01)
else:
part_02 = dict()
part_01['Qualification'] = list()
part_02['Qualification_number'] = 0
part_02['Qualification_international'] = list()
part_02['Qualification_image'] = list()
part_03 = list()
part_03.append(['证书类型', '证书编号', '发证日期', '截至日期'])
qh_tep = ['AAA级中国科技创新优秀企业', '高新技术企业', '科技型中小企业', '全国科技创新示范企业', 'AAA级中国自主创新产品']
qn_tep = ['GMP认证', '医疗器械质量管理体系认证', '中国质量认证中心_CQC自愿性产品认证', 'gmp认证', 'gsp认证', 'GSP认证',
'安全生产标准化三级企业', '安全生产标准化证书', '质量合格、国家标准合格产品', '质量管理体系认证证书',
'食品安全管理体系认证', '食品安全管理体系认证证书', 'CE认证', '日本PSE认证', 'CE认证证书']
qi_tep = ['CE认证', '日本PSE认证', 'CE认证证书']
qf_tep = ['中国著名品牌', '中国驰名品牌', '中国行业最具影响力品牌']
part_01['integration_deree'] = '较低'
for item in data['result']:
if item['certificateName'] in qh_tep:
part_01['Qualification'].append(item['certificateName'])
if item['certificateName'] == '两化融合管理体系评定证书':
part_01['integration_deree'] = '较高'
if item['certificateName'] in qn_tep:
part_02['Qualification_number'] += 1
if item['certificateName'] in qi_tep:
part_02['Qualification_international'].append(item['certificateName'])
if item['certificateName'] in qf_tep:
part_02['Qualification_image'].append(item['certificateName'])
insert_data = list()
insert_data.append(item['certificateName'])
insert_data.append(item['certNo'])
insert_data.append(item['startDate'])
insert_data.append(item['endDate'])
part_03.append(insert_data)
# 企业资质
if len(part_01['Qualification']) > 0:
part_01['Qualification'] = ''.join(part_01['Qualification'])
else:
part_01['Qualification'] = ''
# 国际同行产品质量认证
if len(part_02['Qualification_international']) > 0:
part_02['Qualification_international'] = ''.join(part_02['Qualification_international'])
part_02['Qualification_international'] = '尤其拥有{}等国际通行产品质量认证,对于开拓海外市场有积极意义'.format(part_02['Qualification_international'])
else:
part_02['Qualification_international'] = '但未拥有国际通行产品质量认证'
# 是否被评为中国品牌
if len(part_02['Qualification_image']) > 0:
part_02['Qualification_image'] = ''.join(part_02['Qualification_image'])
part_02['Qualification_image'] = '公司品牌知名度较高,被评为{},市场形象较好,有利于业务开展。'.format(part_02['Qualification_image'])
else:
part_02['Qualification_image'] = '公司品牌知名度较低,市场形象一般,不太利于业务开展。'
result.append(part_01)
result.append(part_02)
result.append(part_03)
return result
def financing_information(param):
"""
融资信息
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
融资信息数据
"""
data = param['融资历史']['融资历史']
result = list()
part_01 = dict()
part_02 = dict()
part_03 = dict()
part_04 = dict()
if len(data) == 0:
part_01['number'] = 0
part_01['Financing_round'] = 0
part_01['Financing_amount'] = 0
part_01['top_3_investor'] = 0
else:
part_01['number'] = data['total']
part_01['Financing_round'] = list()
part_01['Financing_amount'] = 0
part_01['top_3_investor'] = list()
for item in data['result']:
part_01['Financing_round'].append(item['round'])
if item['money'] == '未披露':
part_01['Financing_amount'] += 0
else:
part_01['Financing_amount'] += item['money']
part_01['top_3_investor'].append(item['investorName'])
part_01['Financing_round'] = ''.join(set(part_01['Financing_round']))
part_01['top_3_investor'] = ''.join(set(part_01['top_3_investor']))
part_02['fin_channel'] = '银行贷款'
part_03['Commercial_credit_level'] = '较好'
part_03['Bargaining_power'] = ''
part_03['Financing_scale'] = ''
part_03['Financing_amount'] = part_01['Financing_amount']
part_04 = list()
part_04.append(['日期', '融资金额', '融资轮次', '投资方'])
for item in data['result']:
insert_data = list()
insert_data.append(time_stamp(item['pubTime']))
insert_data.append(item['money'])
insert_data.append(item['round'])
insert_data.append(item['investorName'])
part_04.append(insert_data)
result.append(part_01)
result.append(part_02)
result.append(part_03)
result.append(part_04)
return result
def environmental_governance(param):
"""
环境治理
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
环境治理数据
"""
data_01 = param['评价结果']
data_02 = param['资质证书']['资质证书']
result = list()
part_01 = dict()
part_02 = dict()
part_03 = dict()
date = str(datetime.datetime.today().year) + ''
part_02['Qualification_number'] = 0
cp = ['排污许可证', '环保部_限制类固体废物进口', '排污登记信息', '环保部_国家重点监控企业名单', '环保部_自动类固体废物进口']
ep = ['低碳产品认证', '中国节能环保产品', '低碳产品认证-铝合金建筑型材', 'FSC认证', '环保产品认证', '环境标志产品', '环境管理体系认证',
'绿色产品(认证活动一)', '绿色食品生产资料--食品添加剂类', '节能产品认证(不含建筑节能)', '低碳产品认证-通用硅酸盐水泥',
'电子信息产品污染控制自愿性认证', '中国环保产品认证证书', '中国环保标志产品认证证书', '商品和服务在生命周期内的温室气体排放评价规范认证',
'中国绿色环保企业', '绿色食品生产资料--饲料及饲料添加剂类', '中国优秀节能减排绿色环保企业', '工业固废处置及资源化工程专业甲级证书',
'有机产品认证', '绿色产品(认证活动二)', '环保部_实施清洁生产审核并通过评估验收', '环境管理体系认证证书', '温室气体核查声明',
'环保部_环境保护科学技术奖获奖项目名单', '环保部_环境标志', '绿色食品生产资料--肥料类', '低碳产品认证-中小型三相异步电动机',
'节水产品认证', '中国环境标志产品认证证书', 'HSE管理体系评价证书']
score = round(data_01['经营评分']['环境'] / 10 * 100, 2)
if len(data_02) == 0:
part_01['certificate'] = '无资质'
else:
part_01['certificate'] = list()
for item in data_02['result']:
if item['certificateName'] in cp:
part_01['certificate'].append(item['certificateName'])
if item['certificateName'] in ep:
part_02['Qualification_number'] += 1
if len(part_01['certificate']) == 0:
part_01['certificate'] = '无资质'
else:
part_01['certificate'] = ''.join(part_01['certificate'])
# 段落一结论判断
if score < 50 or part_01['certificate'] == '无资质':
part_01[
'certificate'] = '公司绿色发展理念相对薄弱。公司绿色发展战略和绿色组织架构亦有待完善,生产过程对环境造成一定污染,' \
'尚未有污染缓解措施或污染缓解措施效果欠佳,环境问题或对公司正常经营造成负面影响。'
else:
part_01[
'certificate'] = '公司为环境友好型企业。公司较为重视环境保护,实行绿色低碳发展理念,包括制定绿色发展战略、完善绿色组织架构、' \
'保障产品安全、合理安排节能减排和污染处理措施、提高资源利用效率、制定污染缓解措施等应对环境事件。'
# 段落二结论判断
if part_02['Qualification_number'] > 0:
part_02['Qualification_number'] = '截至{year03}末,公司获得' \
'{Qualification_number}项环保领域相关认证资' \
'质。'.format(year03=date, Qualification_number=part_02['Qualification_number'])
else:
part_02['Qualification_number'] = '截至{year03}末,公司未获得环保领域相关认证资质。'.format(year03=date)
part_03['proportion_of_income'] = 0
# 段落三结论判断
if part_03['proportion_of_income'] > 50:
part_03['proportion_of_income'] = '{year03}年公司绿色业务收入占营业收入的比重较大,' \
'{proportion_of_income}' \
'%'.format(year03=date,proportion_of_income=part_03['proportion_of_income'])
elif part_03['proportion_of_income'] > 0:
part_03['proportion_of_income'] = '{year03}年公司绿色业务收入占营业收入的比重较小,' \
'{proportion_of_income}' \
'%'.format(year03=date, proportion_of_income=part_03['proportion_of_income'])
else:
part_03['proportion_of_income'] = '{year03}年公司无绿色业务收入。'.format(year03=date)
result.append(part_01)
result.append(part_02)
result.append(part_03)
return result
def social_responsibility(param):
"""
社会责任
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
社会责任数据
"""
data_01 = param['评价结果']
data_02 = param['资质证书']['资质证书']
sr = ['企业社会责任管理体系认证' '社会责任管理', '社会责任管理体系认证', '社会责任管理体系', '优秀供应商', '供应链安全管理体系认证证书',
'HACCP认证证书', 'BSCI认证']
result = list()
part_01 = dict()
qualification = list()
part_01['Qualification_number'] = 0
score = round(data_01['经营评分']['社会责任'] / 10 * 100, 2)
if len(data_02) == 0:
part_01['Qualification_number'] = 0
else:
for item in data_02['result']:
if item['certificateName'] in sr:
part_01['Qualification_number'] += 1
qualification.append(item['certificateName'])
qualification = ''.join(qualification)
if score > 50 and part_01['Qualification_number'] > 0:
part_01['Qualification_number'] = '公司积极履行社会责任,拥有{Qualification_number}项社会责任领域相关认证资质,' \
'包括{Qualification}。公司以公平、公正、自愿、市场化的原则开展业务,' \
'承担对于客户、员工、社区、供应链相关方的责任,企业形象较好,无社会负面事件,' \
'为公司业务拓展奠定较好基础。'.format(Qualification_number=part_01['Qualification_number'],
Qualification=qualification)
elif score > 50 and part_01['Qualification_number'] == 0:
part_01['Qualification_number'] = '公司积极履行社会责任,未获得社会责任领域相关认证资质。' \
'公司以公平、公正、自愿、市场化的原则开展业务,' \
'承担对于客户、员工、社区、供应链相关方的责任,企业形象较好,无社会负面事件,' \
'为公司业务拓展奠定较好基础。'
else:
part_01['Qualification_number'] = '公司社会责任履行能力有待进一步提升,公司客户满意率偏低,供应链管理能力较弱,' \
'对员工提供的福利未达到行业平均水平,对区域经济发展贡献力度不大,有一定社会负面事件。'
result.append(part_01)
return result
def corporate_governance(param):
"""
公司治理
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
公司治理数据
"""
data_01 = param['评价结果']
data_02 = param['风险数据']
result = list()
part_01 = dict()
score = round(data_01['经营评分']['公司治理'] / 10 * 100, 2)
risk = data_02['关联风险']['周边风险']['高风险']
if score > 50 and risk == 0:
part_01['governance_score'] = '公司治理水平较高。公司股权清晰,组织结构较完善,可满足业务发展需要;' \
'公司各类信息披露透明、公开、及时,信息披露质量较高。公司重视风险管理,' \
'包括信用风险在内的各类风险水平较低,未发生重大风险事件。'
elif score > 50 and risk > 0:
part_01['governance_score'] = '公司治理水平较高。公司股权清晰,组织结构较完善,可满足业务发展需要;' \
'公司各类信息披露透明、公开、及时,信息披露质量较高;但风险控制能力有待加强。'
else:
part_01['governance_score'] = '公司规模较小,组织架构尚不完善,股权结构有待进一步明晰,信息披露透明度和质量欠佳。' \
'风险控制能力有待加强。整体来看,公司治理水平有待进一步提升。'
result.append(part_01)
return result
def profitability(param):
"""
盈利能力
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
盈利能力数据
"""
data_01 = param['综合评价填报']
data_02 = param['评价结果']
data_03 = param['指标明细']
result = list()
part_01 = dict()
part_02 = dict()
# 收入规模
income = float(data_01['财务填报']['利润表'][0]['营业收入'])
if income > 400000000:
part_02['income_scale'] = '较大'
elif income > 20000000:
part_02['income_scale'] = '处于行业中等水平'
elif income > 3000000:
part_02['income_scale'] = '较小'
else:
part_02['income_scale'] = ''
# 产品技术含量
rona = data_02['财务评分']['盈利能力']['净资产收益率']
if rona >= 8:
part_02['technology_level'] = ''
elif rona >= 8 * 0.8:
part_02['technology_level'] = '较高'
elif rona >= 8 * 0.6:
part_02['technology_level'] = '处于行业平均水平'
elif rona >= 8 * 0.4:
part_02['technology_level'] = '较低'
else:
part_02['technology_level'] = ''
# 成本控制能力(期间费用率)
part_02['Cost_control_capability'] = '欠佳'
# 年度
part_02['date'] = data_01['财务填报']['利润表'][1]['报告期'][:4]
# 净资产收益率
part_02['return_on_net_assets_analysis'] = str(data_03[1]['净资产收益率'])
# 总资产报酬率
part_02['return_on_total_assets_analysis'] = str(data_03[1]['总资产报酬率'])
# 盈利能力
p_score = data_02['财务评分']['盈利能力']['净资产收益率'] + data_02['财务评分']['盈利能力']['总资产报酬率']
if p_score >= 16:
part_02['profitability_analysis'] = ''
elif p_score >= 16 * 0.8:
part_02['profitability_analysis'] = '较好'
elif p_score >= 16 * 0.8:
part_02['profitability_analysis'] = '有待提高'
elif p_score >= 16 * 0.8:
part_02['profitability_analysis'] = '较弱'
else:
part_02['profitability_analysis'] = ''
result.append(part_01)
result.append(part_02)
return result
def asset_quality(param):
"""
资产质量
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
资产质量数据
"""
data_01 = param['综合评价填报']
data_02 = param['评价结果']
data_03 = param['指标明细']
result = list()
part_01 = dict()
part_02 = dict()
part_03 = dict()
# 年度
part_03['date'] = data_01['财务填报']['利润表'][1]['报告期'][:4]
# 应收账款周转率
part_03['account_turnover_analysis'] = str(data_03[0]['应收账款周转率'])
# 存货周转率
part_03['inventory_turnover_analysis'] = str(data_03[0]['存货周转率'])
# 总资产周转率
part_03['total_assets_turnover_analysis'] = str(data_03[0]['总资产周转率'])
# 行业水平/资产质量
a_s = data_02['财务评分']['资产质量']['总资产周转率'] + data_02['财务评分']['资产质量']['应收账款周转率'] + data_02['财务评分']['资产质量']['存货周转率']
if a_s >= 18:
part_03['industry_level'] = ''
part_03['asset_quality'] = ''
elif a_s >= 18 * 0.8:
part_03['industry_level'] = '较高'
part_03['asset_quality'] = '较好'
elif a_s >= 18 * 0.6:
part_03['industry_level'] = '中等'
part_03['asset_quality'] = '有待改善'
elif a_s >= 18 * 0.4:
part_03['industry_level'] = '偏低'
part_03['asset_quality'] = '较差'
else:
part_03['industry_level'] = ''
part_03['asset_quality'] = ''
result.append(part_01)
result.append(part_02)
result.append(part_03)
return result
def debt_risk(param):
"""
债务风险
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
债务风险数据
"""
data_02 = param['评价结果']
data_03 = param['指标明细']
result = list()
part_01 = dict()
part_02 = dict()
d_s = data_02['财务评分']['债务风险']['资产负债率'] + data_02['财务评分']['债务风险']['已获利息倍数'] + data_02['财务评分']['债务风险']['速动比率']
if d_s >= 18:
part_02['debt_risk'] = ''
elif d_s >= 18 * 0.8:
part_02['debt_risk'] = '较大'
elif d_s >= 18 * 0.6:
part_02['debt_risk'] = '适中'
elif d_s >= 18 * 0.4:
part_02['debt_risk'] = '较小'
else:
part_02['debt_risk'] = ''
# 资产负债率区间
if len(data_03) >= 3:
rate = [data_03[0]['资产负债率'], data_03[1]['资产负债率'], data_03[2]['资产负债率']]
rate.sort()
part_02['min_asset_liability_ratio'] = str(rate[0])
part_02['max_asset_liability_ratio'] = str(rate[2])
else:
rate_01 = data_03[0]['资产负债率']
rate_02 = data_03[1]['资产负债率']
if rate_01 > rate_02:
part_02['max_asset_liability_ratio'] = str(rate_01)
part_02['min_asset_liability_ratio'] = str(rate_02)
else:
part_02['max_asset_liability_ratio'] = str(rate_02)
part_02['min_asset_liability_ratio'] = str(rate_01)
# 财务结构
alr = data_03[0]['资产负债率']
if alr < 0.4:
part_02['fin_structure_analysis'] = '稳健'
elif alr < 0.55:
part_02['fin_structure_analysis'] = '较稳健'
elif alr < 0.7:
part_02['fin_structure_analysis'] = '稳健性有待进一步加强'
else:
part_02['fin_structure_analysis'] = '欠稳健'
# 经营性现金流对利息的保障程度
ic_s = data_02['财务评分']['债务风险']['已获利息倍数']
if ic_s >= 5:
part_02['operating_cash_flow_to_debt'] = ''
elif ic_s >= 5 * 0.8:
part_02['operating_cash_flow_to_debt'] = '较强'
elif ic_s >= 5 * 0.6:
part_02['operating_cash_flow_to_debt'] = '尚可'
elif ic_s >= 5 * 0.4:
part_02['operating_cash_flow_to_debt'] = '较弱'
else:
part_02['operating_cash_flow_to_debt'] = ''
# 已获利息倍数
part_02['interest_cover'] = str(data_03[0]['已获利息倍数'])
# 资产流动性
qr_s = data_02['财务评分']['债务风险']['速动比率']
if qr_s >= 5:
part_02['Assets_liquidity'] = ''
elif qr_s >= 5 * 0.8:
part_02['Assets_liquidity'] = '较好'
elif qr_s >= 5 * 0.6:
part_02['Assets_liquidity'] = '一般'
elif qr_s >= 5 * 0.4:
part_02['Assets_liquidity'] = '较差'
else:
part_02['Assets_liquidity'] = ''
# 速动比率
part_02['quick_ratio'] = str(data_03[0]['速动比率'])
result.append(part_01)
result.append(part_02)
return result
def growth_ability(param):
"""
成长能力
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
成长能力数据
"""
data_02 = param['评价结果']
data_03 = param['指标明细']
result = list()
part_01 = dict()
part_02 = dict()
# 重视程度
ti_s = data_02['财务评分']['经营增长']['技术投入比率']
if ti_s >= 5 * 0.7:
part_02['degree_of_imprtance'] = '重视技术研发或先进工艺的开发'
elif ti_s >= 5 * 0.4:
part_02['degree_of_imprtance'] = '对技术研发或先进工艺的开发的重视程度一般'
else:
part_02['degree_of_imprtance'] = '不重视技术研发或先进工艺的开发'
# 技术投入比
part_02['technology_input_ratio'] = str(data_03[1]['技术投入比率'])
# 创新对公司贡献/整体成长能力
ga_s = data_02['财务评分']['经营增长']['营业增长率'] + data_02['财务评分']['经营增长']['总资产增长率'] + data_02['财务评分']['经营增长']['技术投入比率']
if ga_s >= 18:
part_02['contribution'] = ''
part_02['growth_ability'] = ''
elif ga_s >= 18 * 0.8:
part_02['contribution'] = '较大'
part_02['growth_ability'] = '较好'
elif ga_s >= 18 * 0.6:
part_02['contribution'] = '尚可'
part_02['growth_ability'] = '一般'
elif ga_s >= 18 * 0.4:
part_02['contribution'] = '较小'
part_02['growth_ability'] = '较差'
else:
part_02['contribution'] = ''
part_02['growth_ability'] = ''
# 营业收入增长率
part_02['growth_rate_of_operating_revenue'] = str(data_03[1]['营业增长率'])
# 总资产增长率
part_02['growth_rate_of_total_assets'] = str(data_03[1]['总资产增长率'])
result.append(part_01)
result.append(part_02)
return result
def compliance_risk(param):
"""
合规风险
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
合规风险数据
"""
data = param['风险数据']['合规风险']
result = list()
part_01 = dict()
yes_no = list()
for key, value in data.items():
if value > 0:
yes_no.append('')
else:
yes_no.append('')
part_01['yes_no_01'] = yes_no[0]
part_01['yes_no_02'] = yes_no[1]
part_01['yes_no_03'] = yes_no[2]
part_01['yes_no_04'] = yes_no[3]
part_01['yes_no_05'] = yes_no[4]
part_01['yes_no_06'] = yes_no[5]
part_01['yes_no_07'] = yes_no[6]
part_01['yes_no_08'] = yes_no[7]
if 0 not in yes_no:
part_01['risk_level'] = ''
else:
part_01['risk_level'] = ''
result.append(part_01)
return result
def operational_ris(param):
"""
经营风险
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
经营风险数据
"""
data = param['风险数据']['经营风险']
result = list()
part_01 = dict()
part_01['risk_num'] = 0
for key, value in data.items():
part_01['risk_num'] += value
if part_01['risk_num'] > 50:
part_01['risk_level'] = '较高'
elif part_01['risk_num'] > 30:
part_01['risk_level'] = '适中'
else:
part_01['risk_level'] = '较低'
part_01['risk_num'] = str(part_01['risk_num'])
result.append(part_01)
return result
def associated_risk(param):
"""
关联风险
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
关联风险数据
"""
data = param['周边风险']['周边风险']['list']
result = list()
part_01 = dict()
part_02 = dict()
part_01['risk_num'] = 0
extent = ["失信被执行人", "司法拍卖", "限制消费令", "强制清算", "涉金融黑名单", "破产案件", "欠税公告",
"环保处罚", "立案信息", "税收违法", "违规处理"]
part_01['include'] = '不包括'
for item in data:
if item['title'] in extent:
part_01['include'] = '包括'
part_01['risk_num'] += item['total']
if part_01['risk_num'] < 50 and part_01['include'] == '不包括':
part_01['will'] = '不会'
else:
part_01['will'] = ''
if part_01['risk_num'] > 50 or part_01['include'] == '包括':
part_01['risk_level'] = '较高'
elif 20 < part_01['risk_num'] < 50 and part_01['include'] == '不包括':
part_01['risk_level'] = '适中'
else:
part_01['risk_level'] = '较低'
part_01['risk_num'] = str(part_01['risk_num'])
result.append(part_01)
return result
def conclusion(param):
"""
结论
清洗数据库数据,根据需要返回
Parameters:
param: 数据库数据
Returns:
结论数据
"""
data_01 = param['评价结果']
result = list()
part_01 = dict()
part_02 = dict()
part_03 = dict()
part_01['describe'] = list()
# 环境部分得分
ep_s = data_01['经营评分']['环境']
if ep_s > 10 * 0.5:
part_01['describe'].append('公司为环境友好型企业')
else:
part_01['describe'].append('公司绿色发展理念相对薄弱')
# 社会责任部分得分
sr_s = data_01['经营评分']['社会责任']
if sr_s > 10 * 0.5:
part_01['describe'].append('积极履行社会责任')
else:
part_01['describe'].append('社会责任履行能力有待进一步提升')
# 公司治理部分得分
cg_s = data_01['经营评分']['公司治理']
if cg_s > 10 * 0.5:
part_01['describe'].append('内部治理水平较高')
else:
part_01['describe'].append('治理水平有待进一步提升')
part_01['describe'] = ''.join(part_01['describe'])
# 企业整体素质
eq_s = data_01['经营评分']['合计']
if eq_s >= 30:
part_02['enterprise_quality'] = ''
elif eq_s >= 30 * 0.8:
part_02['enterprise_quality'] = '较好'
elif eq_s >= 30 * 0.6:
part_02['enterprise_quality'] = '一般'
elif eq_s >= 30 * 0.4:
part_02['enterprise_quality'] = '较差'
else:
part_02['enterprise_quality'] = ''
# 公司盈利能力得分
p_s = data_01['财务评分']['盈利能力']['净资产收益率'] + data_01['财务评分']['盈利能力']['总资产报酬率']
if p_s >= 16:
part_02['Profitability'] = ''
elif p_s >= 16 * 0.8:
part_02['Profitability'] = '较强'
elif p_s >= 16 * 0.6:
part_02['Profitability'] = '尚可'
elif p_s >= 16 * 0.4:
part_02['Profitability'] = '较弱'
else:
part_02['Profitability'] = ''
# 资产质量得分
aq_s = data_01['财务评分']['资产质量']['总资产周转率'] + data_01['财务评分']['资产质量']['应收账款周转率'] + data_01['财务评分']['资产质量']['存货周转率']
if aq_s >= 18:
part_02['asset_quality'] = ''
elif aq_s >= 18 * 0.8:
part_02['asset_quality'] = '较好'
elif aq_s >= 18 * 0.6:
part_02['asset_quality'] = '一般'
elif aq_s >= 18 * 0.4:
part_02['asset_quality'] = '较差'
else:
part_02['asset_quality'] = ''
# 债务风险得分
dr_s = data_01['财务评分']['债务风险']['资产负债率'] + data_01['财务评分']['债务风险']['已获利息倍数'] + data_01['财务评分']['债务风险']['速动比率']
if dr_s >= 18:
part_02['debt_risk'] = ''
elif dr_s >= 18 * 0.8:
part_02['debt_risk'] = '较高'
elif dr_s >= 18 * 0.6:
part_02['debt_risk'] = '适中'
elif dr_s >= 18 * 0.4:
part_02['debt_risk'] = '较低'
else:
part_02['debt_risk'] = ''
# 成长空间得分
gs_s = data_01['财务评分']['经营增长']['营业增长率'] + data_01['财务评分']['经营增长']['总资产增长率'] + data_01['财务评分']['经营增长']['技术投入比率']
if gs_s >= 18:
part_02['growth_ability'] = ''
elif gs_s >= 18 * 0.8:
part_02['growth_ability'] = '较大'
elif gs_s >= 18 * 0.6:
part_02['growth_ability'] = '不大'
elif gs_s >= 18 * 0.4:
part_02['growth_ability'] = '较小'
else:
part_02['growth_ability'] = ''
# 企业风险得分
er_s = None
part_03['company'] = data_01['企业名称']
part_03['credit_rank'] = data_01['信用等级']
result.append(part_01)
result.append(part_02)
result.append(part_03)
return result
def appendix_one(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(str(value))
insert_list.append(str(data_01['资产负债表'][1][key]))
insert_list.append(str(data_01['资产负债表'][2][key]))
result.append(insert_list)
for key, value in data_01['利润表'][0].items():
if key != '报告期':
insert_list = list()
insert_list.append(key)
insert_list.append(str(value))
insert_list.append(str(data_01['利润表'][1][key]))
insert_list.append(str(data_01['利润表'][2][key]))
result.append(insert_list)
for key, value in data_01['补充数据表'][0].items():
if key != '报告期':
insert_list = list()
insert_list.append(key)
insert_list.append(str(value))
insert_list.append(str(data_01['补充数据表'][1][key]))
insert_list.append(str(data_01['补充数据表'][2][key]))
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(str(v))
insert_list.append(str(data_02[1][k]))
insert_list.append(str(data_02[2][k]))
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 save_data(param1, param2):
"""
保存清洗后报告数据
Parameters:
param1: 评价ID
param2: 报告数据
Returns:
result: 保存结果
"""
res = conserve_data(db='评价', col='报告数据', cid=param1, insert_data=param2)
return res