tfse-app-api-v0.2/company/company_impl.py

116 lines
3.3 KiB
Python
Raw Normal View History

2021-12-24 15:24:26 +08:00
import json
import pandas as pd
2022-01-27 17:01:38 +08:00
from company.company_db import FIND_DATA_IN_COMPANY, FIND_DATA_IN_MACRO_INDUSTRY_ANALYSIS, \
FIND_SINGLE_DATA_BY_REQ_WITH_SORT, FIND_SINGLE_DATA_BY_REQ
from company.company_utils import judge_industry
2021-12-13 16:04:10 +08:00
2021-12-21 11:06:58 +08:00
def find_company_data_scripts(table, cid):
2022-01-26 17:34:59 +08:00
return FIND_DATA_IN_COMPANY(table, {"企业ID": cid})
2021-12-24 15:24:26 +08:00
2022-01-27 17:01:38 +08:00
def get_head_info_impl(cid):
# company_info: 企业信息
company_info = FIND_SINGLE_DATA_BY_REQ("应用端", "企业用户", {"企业ID": cid}, ["企业名称", "已认证"])
# cc_rating: 最近一期综信评价结果
cc_rating = FIND_SINGLE_DATA_BY_REQ_WITH_SORT("综信评价数据", "评价结果", {"企业ID": cid}, ["信用评分", "信用等级", "评价时间"], {"评价年度": -1})
# esg_rating: 最近一期ESG评价结果
esg_rating = FIND_SINGLE_DATA_BY_REQ_WITH_SORT("ESG评价数据", "评价结果", {"企业ID": cid}, ["ESG得分", "评价等级", "评价时间"], {"评价年度": -1})
# head_info: 公司主要头部信息
head_info = {
"企业名称": company_info['企业名称'],
"企业认证": "已认证" if company_info['已认证'] == "" else "未认证",
"综合信用评价": cc_rating if cc_rating else {"信用等级": "N/A", "信用评分": "N/A", "评价时间": "N/A"},
"ESG评价": esg_rating if esg_rating else {"信用等级": "N/A", "信用评分": "N/A", "评价时间": "N/A"}
}
return head_info
2021-12-27 16:30:57 +08:00
2021-12-24 15:24:26 +08:00
def find_financial_index_detail_scripts(table, cid):
2021-12-28 16:23:33 +08:00
2022-01-26 17:34:59 +08:00
index_detail = FIND_DATA_IN_COMPANY(table, {"企业ID": cid})
2021-12-28 16:23:33 +08:00
if not index_detail:
return False
2021-12-30 11:19:26 +08:00
df = pd.DataFrame(index_detail).sort_values('年报期', ascending=False)
2021-12-24 15:24:26 +08:00
cols = [
'年报期',
'净资产收益率',
'总资产报酬率',
'总资产周转率',
'应收账款周转率',
'存货周转率',
'资产负债率',
'已获利息倍数',
'速动比率',
'营业增长率',
'总资产增长率',
'技术投入比率'
]
unit_cols = [
'净资产收益率',
'总资产报酬率',
'总资产周转率',
'存货周转率',
'资产负债率',
'速动比率',
'营业增长率',
'总资产增长率',
'技术投入比率'
]
def percent_unit(param):
return param.map(lambda x: '{}%'.format(x) if (param.name in unit_cols and not pd.isna(x)) else x)
df_result = df[cols].apply(lambda x: percent_unit(x))
return list(json.loads(df_result.T.to_json()).values())
2022-02-09 17:34:42 +08:00
2022-02-14 17:28:52 +08:00
def industry_analysis_impl(cid):
"""
行业宏观分析数据
Parameters:
cid: str 企业ID
Returns:
Case Success:
data: dict 行业宏观分析数据
Case Fail:
data: dict 空字典
"""
industry = judge_industry(cid)
if industry is False:
return {}
data = FIND_DATA_IN_MACRO_INDUSTRY_ANALYSIS(industry)
if data is False:
return {}
return data
2022-02-24 16:15:04 +08:00
def esg_analysis_impl(cid):
"""
ESG要素分析数据
Parameters:
cid: str 企业ID
Returns:
Case Success:
data: dict ESG分析数据
Case Fail:
data: dict 空字典
"""
data = FIND_DATA_IN_COMPANY('ESG要素分析',{"企业ID": cid})
if data is False:
return {}
return data