diff --git a/company/CompanyIndex.py b/company/CompanyIndex.py index e626b6f..32efa02 100644 --- a/company/CompanyIndex.py +++ b/company/CompanyIndex.py @@ -1,4 +1,4 @@ -from company.scripts import find_company_data_scripts +from company.scripts import find_company_data_scripts, find_financial_index_detail_scripts class CompanyIndex: @@ -15,3 +15,9 @@ class CompanyIndex: else: return "无数据", {} + def get_index_detail_obj(self): + result = find_financial_index_detail_scripts(self.table, self.cid) + if result: + return '查询成功', result + else: + return '无数据', {} diff --git a/company/routes.py b/company/routes.py index 233fa42..2b973ea 100644 --- a/company/routes.py +++ b/company/routes.py @@ -19,5 +19,8 @@ def company_page(**kwargs): company_index = CompanyIndex() company_index.cid = kwargs['cid'] company_index.table = request.json['table'] - info, result = company_index.get_company_data_obj() + if company_index.table != '指标明细': + info, result = company_index.get_company_data_obj() + else: + info, result = company_index.get_index_detail_obj() return {"info": info, "result": result} diff --git a/company/scripts.py b/company/scripts.py index b8c4aa7..a49a5a4 100644 --- a/company/scripts.py +++ b/company/scripts.py @@ -1,5 +1,44 @@ +import json +import pandas as pd + from company.db import find_data_in_company def find_company_data_scripts(table, cid): return find_data_in_company(table, {"企业ID": cid}) + + +def find_financial_index_detail_scripts(table, cid): + df = pd.DataFrame(find_data_in_company(table, {"企业ID": cid})).sort_values('年报期', ascending=False) + 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()) diff --git a/requirements.txt b/requirements.txt index 89a114d..85eadba 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,4 +8,5 @@ pymongo~=3.11.0 PyYAML~=5.4.1 requests~=2.25.1 rsa~=4.7.2 -pycryptodome \ No newline at end of file +pycryptodome +pandas~=1.3.5 \ No newline at end of file