Merge branch 'wsc' into 'master'
Wsc See merge request pengsen/etl_tfse!4
This commit is contained in:
commit
435436cddc
|
@ -49,3 +49,15 @@ def verify_token(func):
|
||||||
return {"info": "请求异常"}, 401
|
return {"info": "请求异常"}, 401
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
return internal
|
return internal
|
||||||
|
|
||||||
|
|
||||||
|
def sub_dict(param1, param2):
|
||||||
|
"""
|
||||||
|
获取字典的子集
|
||||||
|
Parameters:
|
||||||
|
param1: 原字典
|
||||||
|
param2: 子集字段
|
||||||
|
Returns:
|
||||||
|
子集
|
||||||
|
"""
|
||||||
|
return dict((key, value) for key, value in param1.items() if key in param2)
|
||||||
|
|
|
@ -20,6 +20,22 @@ def find_data_in_tyc(param1, param2, param3):
|
||||||
return record
|
return record
|
||||||
|
|
||||||
|
|
||||||
|
def find_data_in_tfse(param1, param2, param3):
|
||||||
|
"""
|
||||||
|
根据企业ID查询企业信息
|
||||||
|
Parameters:
|
||||||
|
param1: string 数据库 db
|
||||||
|
param2: string 数据集 collection
|
||||||
|
param3: dict 查询条件 例如 {"企业名称": "xxx有限公司"}
|
||||||
|
Returns:
|
||||||
|
record: 查询结果
|
||||||
|
"""
|
||||||
|
collection = client_tfse[param1][param2]
|
||||||
|
data = collection.find(param3, {'_id': False})
|
||||||
|
record = list(data)
|
||||||
|
return record
|
||||||
|
|
||||||
|
|
||||||
def insert_data_to_tfse(param1, param2, param3):
|
def insert_data_to_tfse(param1, param2, param3):
|
||||||
"""
|
"""
|
||||||
插入数据
|
插入数据
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
|
import copy
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from common.scripts import file_path, read_json_file
|
import pandas as pd
|
||||||
from company.db import find_data_in_tyc, insert_data_to_tfse
|
|
||||||
|
from common.scripts import file_path, read_json_file, sub_dict
|
||||||
|
from company.db import find_data_in_tyc, insert_data_to_tfse, find_data_in_tfse
|
||||||
|
|
||||||
|
|
||||||
def drag_company_data_request(company_name):
|
def drag_company_data_request(company_name):
|
||||||
|
@ -34,7 +37,7 @@ def basic_info_etl(cid, company_name):
|
||||||
Returns:
|
Returns:
|
||||||
-
|
-
|
||||||
"""
|
"""
|
||||||
data = read_json_file(file_path('/company/template/基本信息.json'))
|
data = read_json_file(file_path('/company/static/template/基本信息.json'))
|
||||||
basic_info = find_data_in_tyc('公司背景', '基本信息', {"企业名称": company_name})
|
basic_info = find_data_in_tyc('公司背景', '基本信息', {"企业名称": company_name})
|
||||||
holder_info = find_data_in_tyc('公司背景', '企业股东', {"企业名称": company_name})
|
holder_info = find_data_in_tyc('公司背景', '企业股东', {"企业名称": company_name})
|
||||||
member_info = find_data_in_tyc('公司背景', '主要人员', {"企业名称": company_name})
|
member_info = find_data_in_tyc('公司背景', '主要人员', {"企业名称": company_name})
|
||||||
|
@ -97,12 +100,94 @@ def basic_info_etl(cid, company_name):
|
||||||
insert_data_to_tfse('企业', '公司基本信息', data)
|
insert_data_to_tfse('企业', '公司基本信息', data)
|
||||||
|
|
||||||
|
|
||||||
def general_rating_etl(cid):
|
def general_rating_etl(rid, cid):
|
||||||
"""
|
"""
|
||||||
执行综合信用评价信息数据清洗程序
|
执行综合信用评价信息数据清洗程序
|
||||||
Parameters:
|
Parameters:
|
||||||
|
rid: str 评价ID
|
||||||
cid: str 企业ID
|
cid: str 企业ID
|
||||||
Returns:
|
Returns:
|
||||||
res: desc
|
res: desc
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Parameters
|
||||||
|
rating_result = find_data_in_tfse('评价', '评价结果', {"评价ID": rid})[0]
|
||||||
|
rating_record = find_data_in_tfse('评价', '评价结果', {"企业ID": cid})
|
||||||
|
|
||||||
|
df_records = pd.DataFrame(rating_record).sort_values('评价时间', ascending=False)
|
||||||
|
|
||||||
|
# Returns
|
||||||
|
result = dict()
|
||||||
|
|
||||||
|
# 根据rid 查询评价日期、信用等级、信用分数
|
||||||
|
result['企业ID'] = rating_result['企业ID']
|
||||||
|
result['企业名称'] = rating_result['企业名称']
|
||||||
|
result['更新时间'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
|
||||||
|
|
||||||
|
# 综合信用等级数据
|
||||||
|
result_general = result['综合信用等级'] = dict()
|
||||||
|
result_general['评价时间'] = rating_result['评价时间']
|
||||||
|
result_general['信用等级'] = rating_result['信用等级']
|
||||||
|
result_general['信用评分'] = rating_result['信用评分']
|
||||||
|
|
||||||
|
# 评级历史数据
|
||||||
|
df_records['变化趋势'] = (df_records['信用评分'] - df_records['信用评分'].shift(-1)).apply(lambda x: '下降' if x < 0 else ('上升' if x > 0 else ('维持' if x == 0 else '-')))
|
||||||
|
result['历史级别'] = list(json.loads(df_records[['信用等级', "信用评分", '评价时间', "评价方式", "变化趋势"]].T.to_json()).values())
|
||||||
|
|
||||||
|
# 生成雷达图数据
|
||||||
|
rating_score = list()
|
||||||
|
rating_score.append(rating_result['经营评分']["环境"])
|
||||||
|
rating_score.append(rating_result['经营评分']["社会责任"])
|
||||||
|
rating_score.append(rating_result['经营评分']["公司治理"])
|
||||||
|
rating_score.append(rating_result['财务评分']["盈利能力"]['合计'])
|
||||||
|
rating_score.append(rating_result['财务评分']["资产质量"]['合计'])
|
||||||
|
rating_score.append(rating_result['财务评分']["债务风险"]['合计'])
|
||||||
|
rating_score.append(rating_result['财务评分']["经营增长"]['合计'])
|
||||||
|
rating_score.append(43 - rating_result['风险评分']["合规风险"])
|
||||||
|
rating_score.append(10 - rating_result['风险评分']["经营风险"]['合计'])
|
||||||
|
rating_score.append(10 - rating_result['风险评分']["关联风险"]['合计'])
|
||||||
|
|
||||||
|
score_max = [10, 10, 10, 16, 18, 18, 18, 43, 10, 10]
|
||||||
|
|
||||||
|
result['综合信用表现'] = dict()
|
||||||
|
result['综合信用表现']['指标雷达'] = dict()
|
||||||
|
result['综合信用表现']['指标雷达']['指标得分'] = rating_score
|
||||||
|
result['综合信用表现']['指标雷达']['最大分数'] = score_max
|
||||||
|
|
||||||
|
# 生成指标表格数据
|
||||||
|
result['指标表格'] = dict()
|
||||||
|
|
||||||
|
result['指标表格']['财务指标'] = dict()
|
||||||
|
result['指标表格']['风险指标'] = dict()
|
||||||
|
|
||||||
|
df_operate = pd.DataFrame({'实际值': sub_dict(rating_result['经营评分'], ['环境', '社会责任', '公司治理']), '最大值': {'环境': 10, '社会责任': 10, '公司治理': 10}})
|
||||||
|
result['指标表格']['经营指标'] = json.loads((df_operate['实际值'] / df_operate['最大值']).apply(lambda x: '优' if x >= 1 else ('良' if x >= 0.75 else ('中' if x >= 0.5 else ('低' if x >= 0.25 else '差')))).to_json())
|
||||||
|
|
||||||
|
financial = dict()
|
||||||
|
financial['盈利能力'] = rating_result['财务评分']['盈利能力']['合计']
|
||||||
|
financial['资产质量'] = rating_result['财务评分']['资产质量']['合计']
|
||||||
|
financial['债务风险'] = rating_result['财务评分']['债务风险']['合计']
|
||||||
|
financial['经营增长'] = rating_result['财务评分']['经营增长']['合计']
|
||||||
|
df_financial = pd.DataFrame({'实际值': financial, '最大值': {"盈利能力": 16, "资产质量": 18, "债务风险": 18, "经营增长": 18}})
|
||||||
|
result['指标表格']['财务指标'] = json.loads((df_financial['实际值'] / df_financial['最大值']).apply(lambda x: '优' if x >= 1 else ('良' if x >= 0.75 else ('中' if x >= 0.5 else ('低' if x >= 0.25 else '差')))).to_json())
|
||||||
|
|
||||||
|
risks = dict()
|
||||||
|
risks['合规风险'] = 43 - rating_result['风险评分']['合规风险']
|
||||||
|
risks['经营风险'] = 10 - rating_result['风险评分']['经营风险']['合计']
|
||||||
|
risks['关联风险'] = 10 - rating_result['风险评分']['关联风险']['合计']
|
||||||
|
df_risks = pd.DataFrame({'实际值': risks, '最大值': {"合规风险": 43, "经营风险": 10, "关联风险": 10}})
|
||||||
|
result['指标表格']['风险指标'] = json.loads((df_risks['实际值'] / df_risks['最大值']).apply(lambda x: '优' if x >= 1 else ('良' if x >= 0.75 else ('中' if x >= 0.5 else ('低' if x >= 0.25 else '差')))).to_json())
|
||||||
|
|
||||||
|
# 生成信用分析数据
|
||||||
|
result['信用分析'] = dict()
|
||||||
|
result['信用分析']['经营分析'] = '经营分析是利用会计核算、统计核算、业务以及其他方面提供的数据信息,采用一定分析方法,依靠计算技术,来分析经济活动的过程及其结果,从而加强对企业运行情况的把握,监控运行过程的问题,发现商业机会以及提炼经营管理知识,以便充分挖掘人力、物力、财力潜力,合理安排生产经营活动,提高经济效益的一门经营管理科学和活动。 经营分析活动看成是管理活动的一个部分,管理目标、管理的内容决定了经营分析的内容。 或者说,没有明确的战略和战术层面的管理目标,没有明确的达成管理目标的思路,经营分析就会失去其核心意义。 经营分析系统是以业务运营支撑系统中其他系统的数据为基础,构建统一的企业级数据仓库。'
|
||||||
|
result['信用分析']['财务分析'] = '财务分析是以会计核算和报表资料及其他相关资料为依据,采用一系列专门的分析技术和方法,对企业等经济组织过去和现在有关筹资活动、投资活动、经营活动、分配活动的盈利能力、营运能力、偿债能力和增长能力状况等进行分析与评价的经济管理活动。'
|
||||||
|
result['信用分析']['风险分析'] = '风险分析有狭义和广义两种,狭义的风险分析是指通过定量分析的方法给出完成任务所需的费用、进度、性能三个随机变量的可实现值的概率分布。 而广义的风险分析则是一种识别和测算风险,开发、选择和管理方案来解决这些风险的有组织的手段。 它包括风险识别、风险评估和风险管理三方面的内容。 本文中论及风险分析时,都采用后一种定义。'
|
||||||
|
result['信用分析']['评价意见'] = '评价意见是指在掌握大量数据资料的基础上,对经过筛选后的少数方案再具体化,通过进一步的调查、研究和评价,最后选出最令人满意的方案,其评价结论是方案审批的依据。'
|
||||||
|
result['信用分析']['查看报告'] = 'http://139.9.249.34:51010/app/file/get_company_report?file_id=61bc4c4733120000ce000695'
|
||||||
|
|
||||||
|
insert_data_to_tfse('企业', '综合评价分析', result)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
general_rating_etl("kSVoCeJ1", "cqqHE80f")
|
||||||
|
|
|
@ -4,3 +4,4 @@ gunicorn
|
||||||
gevent
|
gevent
|
||||||
pymongo~=3.11.0
|
pymongo~=3.11.0
|
||||||
requests~=2.25.1
|
requests~=2.25.1
|
||||||
|
pandas~=1.3.5
|
Loading…
Reference in New Issue