财务数据
This commit is contained in:
parent
3494d0afc0
commit
1b1ddda833
|
@ -72,7 +72,7 @@ class CompanyIndexApiImpl(CompanyIndexApi):
|
|||
head_info = CompanyIndexApi.HeadInfo()
|
||||
update_time = CompanyIndexApi.UpdateTime()
|
||||
basic_info = CompanyIndexApi.BasicInfo()
|
||||
financial_data = CompanyIndexApi
|
||||
financial_data = CompanyIndexApi.FinancialData()
|
||||
operating_risk = CompanyIndexApi
|
||||
financial_analysis = CompanyIndexApi
|
||||
cc_rating = CompanyIndexApi
|
||||
|
@ -131,3 +131,21 @@ class CompanyIndexApiImpl(CompanyIndexApi):
|
|||
self.basic_info.business_info = self.dict_to_set(instance=self.basic_info.BusinessInfo, data=result['工商信息'])
|
||||
self.basic_info.share_holder = self.instance_list_to_set(instance_list_type=self.basic_info.ShareHolder, data=result['股东信息'])
|
||||
self.basic_info.main_member = self.instance_list_to_set(instance_list_type=self.basic_info.MainMember, data=result['主要成员'])
|
||||
|
||||
def get_financial_data(self):
|
||||
"""获取财务数据"""
|
||||
result = self.db.find_single_data(
|
||||
"企业数据",
|
||||
"基本财务数据",
|
||||
{"企业ID": self.financial_data.cid, "报告期": self.financial_data.report_date},
|
||||
["报告期", "资产负债表", "利润表", "补充数据表", "财务指标"]
|
||||
)
|
||||
|
||||
if not result:
|
||||
result = {'报告期': None, "资产负债表": {}, "利润表": {}, "补充数据表": {}, "财务指标": {}}
|
||||
|
||||
self.financial_data.report_date = result['报告期']
|
||||
self.financial_data.balance_sheet = self.dict_to_set(instance=self.financial_data.BalanceSheet, data=result['资产负债表'])
|
||||
self.financial_data.profit_sheet = self.dict_to_set(instance=self.financial_data.ProfitSheet, data=result['利润表'])
|
||||
self.financial_data.appendix_data = self.dict_to_set(instance=self.financial_data.AppendixDataSheet, data=result['补充数据表'])
|
||||
self.financial_data.financial_index = self.dict_to_set(instance=self.financial_data.FinancialIndex, data=result['财务指标'])
|
||||
|
|
|
@ -224,6 +224,105 @@ class CompanyIndexApi(SpecObject):
|
|||
"main_member": "主要成员"
|
||||
}
|
||||
|
||||
class FinancialData(SpecObject):
|
||||
"""财务数据"""
|
||||
|
||||
class BalanceSheet(SpecObject):
|
||||
"""资产负债表"""
|
||||
accounts_receivable = ValidateAttr(field='accounts_receivable', type=[int, float])
|
||||
stock = ValidateAttr(field='stock', type=[int, float])
|
||||
total_current_assets = ValidateAttr(field='total_current_assets', type=[int, float])
|
||||
total_assets = ValidateAttr(field='total_assets', type=[int, float])
|
||||
short_loan = ValidateAttr(field='short_loan', type=[int, float])
|
||||
one_year_liabilities = ValidateAttr(field='one_year_liabilities', type=[int, float])
|
||||
total_current_liabilities = ValidateAttr(field='total_current_liabilities', type=[int, float])
|
||||
long_term_loan = ValidateAttr(field='long_term_loan', type=[int, float])
|
||||
total_liabilities = ValidateAttr(field='total_liabilities', type=[int, float])
|
||||
total_owners_equity = ValidateAttr(field='total_owners_equity', type=[int, float])
|
||||
|
||||
fields_map = {
|
||||
'accounts_receivable': '应收账款',
|
||||
'stock': '存货',
|
||||
'total_current_assets': '流动资产合计',
|
||||
'total_assets': '资产总计',
|
||||
'short_loan': '短期借款',
|
||||
'one_year_liabilities': '一年内到期非流动负债',
|
||||
'total_current_liabilities': '流动负债合计',
|
||||
'long_term_loan': '长期借款',
|
||||
'total_liabilities': '负债合计',
|
||||
'total_owners_equity': '所有者权益合计'
|
||||
}
|
||||
|
||||
class ProfitSheet(SpecObject):
|
||||
"""利润表"""
|
||||
operating_income = ValidateAttr(field='operating_income', type=[int, float])
|
||||
operating_cost = ValidateAttr(field='operating_cost', type=[int, float])
|
||||
total_profit = ValidateAttr(field='total_profit', type=[int, float])
|
||||
net_profit = ValidateAttr(field='net_profit', type=[int, float])
|
||||
|
||||
fields_map = {
|
||||
'operating_income': '营业收入',
|
||||
'operating_cost': '营业成本',
|
||||
'total_profit': '利润总额',
|
||||
'net_profit': '净利润'
|
||||
}
|
||||
|
||||
class AppendixDataSheet(SpecObject):
|
||||
"""补充数据表"""
|
||||
rd_expenses = ValidateAttr(field='rd_expenses', type=[int, float])
|
||||
interest_disbursement = ValidateAttr(field='interest_disbursement', type=[int, float])
|
||||
interest_expense = ValidateAttr(field='interest_expense', type=[int, float])
|
||||
|
||||
fields_map = {
|
||||
'rd_expenses': '研发费用',
|
||||
'interest_disbursement': '计入财务费的利息支出',
|
||||
'interest_expense': '资本化利息支出'
|
||||
}
|
||||
|
||||
class FinancialIndex(SpecObject):
|
||||
"""财务指标"""
|
||||
roe = ValidateAttr(field="roe", type=[int, float])
|
||||
inventory_turnover = ValidateAttr(field="inventory_turnover", type=[int, float])
|
||||
interest_multiple = ValidateAttr(field="interest_multiple", type=[int, float])
|
||||
accounts_receivable_turnover = ValidateAttr(field="accounts_receivable_turnover", type=[int, float])
|
||||
total_asset_turnover = ValidateAttr(field="total_asset_turnover", type=[int, float])
|
||||
total_asset_growth_rate = ValidateAttr(field="total_asset_growth_rate", type=[int, float])
|
||||
roa = ValidateAttr(field="roa", type=[int, float])
|
||||
technology_investment_ratio = ValidateAttr(field="technology_investment_ratio", type=[int, float])
|
||||
operating_growth_rate = ValidateAttr(field="operating_growth_rate", type=[int, float])
|
||||
assets_and_liabilities = ValidateAttr(field="assets_and_liabilities", type=[int, float])
|
||||
quick_ratio = ValidateAttr(field="quick_ratio", type=[int, float])
|
||||
|
||||
fields_map = {
|
||||
"roe": "净资产收益率",
|
||||
"inventory_turnover": "存货周转率",
|
||||
"interest_multiple": "已获利息倍数",
|
||||
"accounts_receivable_turnover": "应收账款周转率",
|
||||
"total_asset_turnover": "总资产周转率",
|
||||
"total_asset_growth_rate": "总资产增长率",
|
||||
"roa": "总资产报酬率",
|
||||
"technology_investment_ratio": "技术投入比率",
|
||||
"operating_growth_rate": "营业增长率",
|
||||
"assets_and_liabilities": "资产负债率",
|
||||
"quick_ratio": "速动比率"
|
||||
}
|
||||
|
||||
cid = ValidateAttr(field='cid', type=str, length=8)
|
||||
report_date = ValidateAttr(field='report_date', func=Validate.date_format, default='')
|
||||
balance_sheet = ValidateAttr(field="balance_sheet", type=BalanceSheet)
|
||||
profit_sheet = ValidateAttr(field="profit_sheet", type=ProfitSheet)
|
||||
appendix_data = ValidateAttr(field="appendix_data", type=AppendixDataSheet)
|
||||
financial_index = ValidateAttr(field="financial_index", type=FinancialIndex)
|
||||
|
||||
fields_map = {
|
||||
"cid": "企业ID",
|
||||
"report_date": "报告期",
|
||||
"balance_sheet": "资产负债表",
|
||||
"profit_sheet": "利润表",
|
||||
"appendix_data": "补充数据表",
|
||||
"financial_index": "财务指标"
|
||||
}
|
||||
|
||||
def get_head_info(self):
|
||||
"""头部信息"""
|
||||
|
||||
|
|
|
@ -100,6 +100,22 @@ def basic_info_route(**kwargs):
|
|||
return {"info": e.failed_info}, e.status_code
|
||||
|
||||
|
||||
@company_route.route('/financial_data', methods=['POST'])
|
||||
@verify_token
|
||||
def financial_data_route(**kwargs):
|
||||
""""""
|
||||
try:
|
||||
req = request.json
|
||||
impl = CompanyIndexApiImpl()
|
||||
impl.financial_data.cid = req['cid']
|
||||
impl.financial_data.report_date = req['report_date']
|
||||
impl.get_financial_data()
|
||||
result = impl.financial_data.dict_to_show(columns=["报告期", "资产负债表", "利润表", "补充数据表", "财务指标"])
|
||||
return result, 200
|
||||
except ReturnConditionCheckFailed as e:
|
||||
return {"info": e.failed_info}, e.status_code
|
||||
|
||||
|
||||
@company_route.route('/index', methods=['POST'])
|
||||
@verify_token
|
||||
def index_route(**kwargs):
|
||||
|
|
|
@ -20,6 +20,13 @@ class Validate(object):
|
|||
case = (len(param) >= 8) and (re.match(regex, param) is not None)
|
||||
return True if case else False
|
||||
|
||||
@staticmethod
|
||||
def date_format(param):
|
||||
"""yyyy-mm-dd"""
|
||||
regex = "\d{4}-\d{1,2}-\d{1,2}"
|
||||
case = re.match(regex, param) is not None
|
||||
return True if case else False
|
||||
|
||||
@staticmethod
|
||||
def time_format(param):
|
||||
"""yyyy-mm-dd hh:mm:ss"""
|
||||
|
@ -58,8 +65,12 @@ class ValidateAttr(object):
|
|||
|
||||
if 'type' in self.kwargs:
|
||||
"""检查实例的属性类型"""
|
||||
if not isinstance(value, self.kwargs['type']):
|
||||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||||
if type(self.kwargs['type']) is list:
|
||||
if type(value) not in self.kwargs['type']:
|
||||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||||
else:
|
||||
if not isinstance(value, self.kwargs['type']):
|
||||
raise ReturnConditionCheckFailed(self.error_info, self.error_code)
|
||||
|
||||
if 'length' in self.kwargs:
|
||||
"""检查实例的属性值长度(一般是str类型)"""
|
||||
|
|
Loading…
Reference in New Issue