diff --git a/rating/ReportEtl.py b/rating/ReportEtl.py index 4e02251..675085e 100644 --- a/rating/ReportEtl.py +++ b/rating/ReportEtl.py @@ -38,7 +38,7 @@ class CleanModel: data['进出口权'] = import_export(self.data) data['知识产权'] = intellectual_property(self.data) data['资质荣誉'] = qualification_honor(self.data) - data['融资信息'] = financing_information(self.data) + # data['融资信息'] = financing_information(self.data) return data def esg_evaluate(self): diff --git a/rating/scripts/report.py b/rating/scripts/report.py index 56bb761..9cacdb7 100644 --- a/rating/scripts/report.py +++ b/rating/scripts/report.py @@ -27,7 +27,7 @@ def get_tfse_data(param): # 基本信息 cbd = find_tyc_db(db='公司背景', col='基本信息', query={'企业名称': company})[0] # 企业股东 - cs = 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] # 进出口信用 @@ -37,11 +37,13 @@ def get_tfse_data(param): # 软件著作权 sc = find_tyc_db(db='知识产权', col='软件著作权', query={'企业名称': company})[0] # 资质证书 - qh = find_tyc_db(db='经营状况', col='资质证书', query={'企业名称': '四川麦克福瑞制药有限公司'})[0] + qh = find_tyc_db(db='经营状况', col='资质证书', query={'企业名称': company})[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 @@ -54,6 +56,7 @@ def get_tfse_data(param): report_data['资质证书'] = qh report_data['融资历史'] = fh report_data['风险数据'] = rd + report_data['周边风险'] = pr return report_data @@ -90,33 +93,33 @@ def financial_data(param): 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.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(value) - insert_list.append(data_01['利润表'][1][key]) - insert_list.append(data_01['利润表'][2][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 != '年报期': + if k != '企业名称' and k != '年报期' and k != '企业ID': 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.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(v) - insert_list.append('') - insert_list.append('') + insert_list.append(str(v)) + insert_list.append(str(data_02[1][k])) + insert_list.append('-') result.append(insert_list) return result @@ -170,7 +173,7 @@ def evaluation_view(param1, param2): else: result['esg_desc'] = esg_desc_03 # 盈利能力 - profitability_score = float(data_03['财务评分']['净资产收益率']) + float(data_03['财务评分']['总资产报酬率']) + profitability_score = float(data_03['财务评分']['盈利能力']['净资产收益率']) + float(data_03['财务评分']['盈利能力']['总资产报酬率']) if profitability_score >= 16: result['profitability'] = '好' elif profitability_score >= 16 * 0.8: @@ -182,8 +185,8 @@ def evaluation_view(param1, param2): else: result['profitability'] = '差' # 资产运营效率 - operation_score = float(data_03['财务评分']['总资产周转率']) + float(data_03['财务评分']['应收账款周转率']) + float( - data_03['财务评分']['存货周转率']) + operation_score = float(data_03['财务评分']['资产质量']['总资产周转率']) + float(data_03['财务评分']['资产质量']['应收账款周转率']) + float( + data_03['财务评分']['资产质量']['存货周转率']) if operation_score >= 18: result['operational_efficiency'] = '高' elif operation_score >= 18 * 0.8: @@ -195,8 +198,8 @@ def evaluation_view(param1, param2): else: result['operational_efficiency'] = '低' # 债务风险得分 - debt_risk_score = float(data_03['财务评分']['资产负债率']) + float(data_03['财务评分']['已获利息倍数']) + float( - data_03['财务评分']['速动比率']) + debt_risk_score = float(data_03['财务评分']['债务风险']['资产负债率']) + float(data_03['财务评分']['债务风险']['已获利息倍数']) + float( + data_03['财务评分']['债务风险']['速动比率']) if debt_risk_score >= 18: result['debt_risk'] = '大' elif debt_risk_score >= 18 * 0.8: @@ -208,8 +211,8 @@ def evaluation_view(param1, param2): else: result['debt_risk'] = '小' # 经营增长状况得分 - growth_ability_score = float(data_03['财务评分']['营业增长率']) + float(data_03['财务评分']['总资产增长率']) + float( - data_03['财务评分']['技术投入比率']) + growth_ability_score = float(data_03['财务评分']['经营增长']['营业增长率']) + float(data_03['财务评分']['经营增长']['总资产增长率']) + float( + data_03['财务评分']['经营增长']['技术投入比率']) if growth_ability_score >= 18: result['growth_ability'] = '强' elif growth_ability_score >= 18 * 0.8: @@ -236,10 +239,29 @@ def evaluation_view(param1, param2): 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 = dict() - result['attention_01'] = '' - result['attention_02'] = '' - result['attention_03'] = '' + result['attention_01'] = res[0][0] + result['attention_02'] = res[1][0] + result['attention_03'] = res[2][0] return result @@ -326,6 +348,41 @@ def calculate_growth_rate(param1, param2): 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): """ 股东实力 @@ -335,7 +392,57 @@ def shareholder_strength(param): Returns: 股东实力数据 """ - return 'ok' + data_01 = param['企业股东']['企业股东'] + result = dict() + result['part_01'] = dict() + if data_01['result'][0]['type'] == 1: + shareholder = data_01['result'][0]['name'] + # 大股东名称 + result['part_01']['company'] = shareholder + # 股东-基本信息 + data_02 = shareholder_strength_data(shareholder)['基本信息']['基本信息'] + # 股东-企业股东 + data_03 = shareholder_strength_data(shareholder)['企业股东']['企业股东'] + result['part_01']['found_date'] = time_stamp(data_02['estiblishTime']) + result['part_01']['registered_capital'] = data_02['regCapital'] + result['part_01']['registered_capital'] = data_02['actualCapital'] + result['part_01']['share_holders'] = data_03['result'][0]['name'] + result['part_01']['share_rates'] = data_03['result'][0]['capital'][0]['percent'] + result['part_01']['business_scope'] = data_02['businessScope'] + result['part_02'] = dict() + esatablish = datetime.datetime.today().year - int(result['part_01']['found_date'][:4]) + if esatablish >= 5: + result['part_02']['establish_time'] = '较长' + else: + result['part_02']['establish_time'] = '较短' + regcapital = float(data_02['regCapital'].replace('万人民币', '')) + if regcapital >= 30000: + result['part_02']['capital_strength'] = '强' + result['part_02']['support_strength'] = '有望在业务和资金方面给予公司一定支持' + elif regcapital >= 10000: + result['part_02']['capital_strength'] = '较强' + result['part_02']['support_strength'] = '有望在业务和资金方面给予公司一定支持' + elif regcapital >= 3000: + result['part_02']['capital_strength'] = '尚可' + result['part_02']['support_strength'] = '对公司的支持力度或较弱' + elif regcapital >= 1000: + result['part_02']['capital_strength'] = '较弱' + result['part_02']['support_strength'] = '对公司的支持力度或较弱' + else: + result['part_02']['capital_strength'] = '弱' + result['part_02']['support_strength'] = '对公司的支持力度或较弱' + else: + result['part_01']['name'] = data_01['result'][0]['name'] + result['part_01']['enterprise_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: + result['part_01']['enterprise_amount'] += 1 + + return result def outbound_investment(param): @@ -676,9 +783,9 @@ def qualification_honor(param): insert_data.append(item['startDate']) insert_data.append(item['endDate']) result['part_03'].append(insert_data) - result['part_01']['Qualification'] = '、'.join(result['part_01']['Qualification']) - result['part_02']['Qualification_international'] = '、'.join(result['part_02']['Qualification_international']) - result['part_02']['Qualification_image'] = '、'.join(result['part_02']['Qualification_image']) + result['part_01']['Qualification'] = '、'.join(result['part_01']['Qualification']) + result['part_02']['Qualification_international'] = '、'.join(result['part_02']['Qualification_international']) + result['part_02']['Qualification_image'] = '、'.join(result['part_02']['Qualification_image']) return result @@ -850,7 +957,7 @@ def profitability(param): else: result['part_02']['income_scale'] = '小' # 产品技术含量 - rona = data_02['财务评分']['净资产收益率'] + rona = data_02['财务评分']['盈利能力']['净资产收益率'] if rona >= 8: result['part_02']['technology_level'] = '高' elif rona >= 8 * 0.8: @@ -870,7 +977,7 @@ def profitability(param): # 总资产报酬率 result['part_02']['return_on_total_assets_analysis'] = str(data_03[1]['总资产报酬率']) # 盈利能力 - p_score = data_02['财务评分']['净资产收益率'] + data_02['财务评分']['总资产报酬率'] + p_score = data_02['财务评分']['盈利能力']['净资产收益率'] + data_02['财务评分']['盈利能力']['总资产报酬率'] if p_score >= 16: result['part_02']['profitability_analysis'] = '好' elif p_score >= 16 * 0.8: @@ -907,7 +1014,7 @@ def asset_quality(param): # 总资产周转率 result['part_03']['total_assets_turnover_analysis'] = str(data_03[0]['总资产周转率']) # 行业水平/资产质量 - a_s = data_02['财务评分']['总资产周转率'] + data_02['财务评分']['应收账款周转率'] + data_02['财务评分']['存货周转率'] + a_s = data_02['财务评分']['资产质量']['总资产周转率'] + data_02['财务评分']['资产质量']['应收账款周转率'] + data_02['财务评分']['资产质量']['存货周转率'] if a_s >= 18: result['part_03']['industry_level'] = '高' result['part_03']['asset_quality'] = '好' @@ -939,7 +1046,7 @@ def debt_risk(param): data_03 = param['指标明细'] result = dict() result['part_02'] = dict() - d_s = data_02['财务评分']['资产负债率'] + data_02['财务评分']['已获利息倍数'] + data_02['财务评分']['速动比率'] + d_s = data_02['财务评分']['债务风险']['资产负债率'] + data_02['财务评分']['债务风险']['已获利息倍数'] + data_02['财务评分']['债务风险']['速动比率'] if d_s >= 18: result['part_02']['debt_risk'] = '大' elif d_s >= 18 * 0.8: @@ -976,7 +1083,7 @@ def debt_risk(param): else: result['part_02']['fin_structure_analysis'] = '欠稳健' # 经营性现金流对利息的保障程度 - ic_s = data_02['财务评分']['已获利息倍数'] + ic_s = data_02['财务评分']['债务风险']['已获利息倍数'] if ic_s >= 5: result['part_02']['operating_cash_flow_to_debt'] = '强' elif ic_s >= 5 * 0.8: @@ -990,7 +1097,7 @@ def debt_risk(param): # 已获利息倍数 result['part_02']['interest_cover'] = data_03[0]['已获利息倍数'] # 资产流动性 - qr_s = data_02['财务评分']['速动比率'] + qr_s = data_02['财务评分']['债务风险']['速动比率'] if qr_s >= 5: result['part_02']['Assets_liquidity'] = '好' elif qr_s >= 5 * 0.8: @@ -1021,7 +1128,7 @@ def growth_ability(param): result = dict() result['part_02'] = dict() # 重视程度 - ti_s = data_02['财务评分']['技术投入比率'] + ti_s = data_02['财务评分']['经营增长']['技术投入比率'] if ti_s >= 5 * 0.7: result['part_02']['degree_of_imprtance'] = '重视技术研发或先进工艺的开发' elif ti_s >= 5 * 0.4: @@ -1031,7 +1138,7 @@ def growth_ability(param): # 技术投入比 result['part_02']['technology_input_ratio'] = data_03[1]['技术投入比率'] # 创新对公司贡献/整体成长能力 - ga_s = data_02['财务评分']['营业增长率'] + data_02['财务评分']['总资产增长率'] + data_02['财务评分']['技术投入比率'] + ga_s = data_02['财务评分']['经营增长']['营业增长率'] + data_02['财务评分']['经营增长']['总资产增长率'] + data_02['财务评分']['经营增长']['技术投入比率'] if ga_s >= 18: result['part_02']['contribution'] = '大' result['part_02']['growth_ability'] = '好' @@ -1111,7 +1218,19 @@ def associated_risk(param): Returns: 关联风险数据 """ + data = param['周边风险']['周边风险']['list'] result = dict() + result['risk_num'] = 0 + extent = ["失信被执行人", "司法拍卖", "限制消费令", "强制清算", "涉金融黑名单", "破产案件", "严重违法", "经营异常", "欠税公告", + "环保处罚", "立案信息", "税收违法", "违规处理"] + for item in data: + if item['title'] in extent: + result['include'] = '包括' + else: + result['include'] = '不包括' + result['risk_num'] += item['total'] + if result['risk_num'] > 50: + result['include'] = '包括' return result @@ -1162,7 +1281,7 @@ def conclusion(param): else: result['part_02']['enterprise_quality'] = '差' # 公司盈利能力得分 - p_s = data_01['财务评分']['净资产收益率'] + data_01['财务评分']['总资产报酬率'] + p_s = data_01['财务评分']['盈利能力']['净资产收益率'] + data_01['财务评分']['盈利能力']['总资产报酬率'] if p_s >= 16: result['part_02']['Profitability'] = '强' elif p_s >= 16 * 0.8: @@ -1174,7 +1293,7 @@ def conclusion(param): else: result['part_02']['Profitability'] = '弱' # 资产质量得分 - aq_s = data_01['财务评分']['总资产周转率'] + data_01['财务评分']['应收账款周转率'] + data_01['财务评分']['存货周转率'] + aq_s = data_01['财务评分']['资产质量']['总资产周转率'] + data_01['财务评分']['资产质量']['应收账款周转率'] + data_01['财务评分']['资产质量']['存货周转率'] if aq_s >= 18: result['part_02']['asset_quality'] = '好' elif aq_s >= 18 * 0.8: @@ -1186,7 +1305,7 @@ def conclusion(param): else: result['part_02']['asset_quality'] = '差' # 债务风险得分 - dr_s = data_01['财务评分']['资产负债率'] + data_01['财务评分']['已获利息倍数'] + data_01['财务评分']['速动比率'] + dr_s = data_01['财务评分']['债务风险']['资产负债率'] + data_01['财务评分']['债务风险']['已获利息倍数'] + data_01['财务评分']['债务风险']['速动比率'] if dr_s >= 18: result['part_02']['debt_risk'] = '高' elif dr_s >= 18 * 0.8: @@ -1198,7 +1317,7 @@ def conclusion(param): else: result['part_02']['debt_risk'] = '低' # 成长空间得分 - gs_s = data_01['财务评分']['营业增长率'] + data_01['财务评分']['总资产增长率'] + data_01['财务评分']['技术投入比率'] + gs_s = data_01['财务评分']['经营增长']['营业增长率'] + data_01['财务评分']['经营增长']['总资产增长率'] + data_01['财务评分']['经营增长']['技术投入比率'] if gs_s >= 18: result['part_02']['growth_ability'] = '大' elif gs_s >= 18 * 0.8: