1556 lines
60 KiB
Python
1556 lines
60 KiB
Python
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
|