diff --git a/CompanyData/CompanyDataImpl.py b/CompanyData/CompanyDataImpl.py index 4e6ad20..28fd955 100644 --- a/CompanyData/CompanyDataImpl.py +++ b/CompanyData/CompanyDataImpl.py @@ -416,11 +416,38 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis): '速动比率', '营业增长率', '总资产增长率', '技术投入比率'] periods = list( pd.DataFrame(rating_input['财务填报']['资产负债表']).sort_values('报告期', ascending=False)['报告期'][0:2].values) - df_recent_2year = pd.DataFrame(self.db.find_single_data('综信评价数据', '财指结果', {'企业ID': rating_result['企业ID']}, - search)).sort_values('年报期', ascending=False)[0:2] + df_recent_2year = pd.DataFrame(self.db.find_all_data('综信评价数据', '财指结果', {'企业ID': rating_result['企业ID']}, + search)).sort_values('年报期', ascending=False)[0:2] df_this = df_recent_2year[0:1] df_last = df_recent_2year[1:2] + data_last = list(json.loads(df_last[['净资产收益率', '存货周转率', '已获利息倍数', '应收账款周转率', '总资产周转率', '总资产增长率', '总资产报酬率', + '技术投入比率', '营业增长率', '资产负债率', '速动比率']].T.to_json()).values()) + url = "http://api.fecribd.com/tfse_rating/rating/financial_score" + headers = {'token': "X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5", "content-type": "application/json"} + data = {"财务指标": data_last, "所属行业": industry} + score_last_origin = json.loads(requests.post(url=url, headers=headers, data=json.dumps(data)).text)[ + 'result'] + score_avg = { + "盈利能力": 8, + "资产质量": 9, + "债务风险": 9, + "经营增长": 9 + } + score_actl = { + "盈利能力": rating_result['财务评分']['盈利能力']['合计'], + "资产质量": rating_result['财务评分']['资产质量']['合计'], + "债务风险": rating_result['财务评分']['债务风险']['合计'], + "经营增长": rating_result['财务评分']['经营增长']['合计'] + } + score_last = { + "盈利能力": score_last_origin['盈利能力']['合计'], + "资产质量": score_last_origin['资产质量']['合计'], + "债务风险": score_last_origin['债务风险']['合计'], + "经营增长": score_last_origin['经营增长']['合计'] + } + df = pd.DataFrame({'今年值': score_actl, '去年值': score_last, "平均值": score_avg}) + def result_head(): """基本信息""" self.cid = rating_result['企业ID'] @@ -461,7 +488,96 @@ class FinancialAnalysisImpl(FinancialElementsAnalysis): def compare_to_year(): """财务得分年度比较""" + self.compare_to_years = list() + def score_actl_script(): + """今年财务得分""" + compare = self.CompareToYears() + score_index = compare.FinancialScoreIndex() + score_index.profitability = rating_result['财务评分']['盈利能力']['合计'] + score_index.asset_quality = rating_result['财务评分']['资产质量']['合计'] + score_index.debt_risk = rating_result['财务评分']['债务风险']['合计'] + score_index.business_growth = rating_result['财务评分']['经营增长']['合计'] + compare.year = df_this['年报期'][0] + compare.index = score_index.dict_to_save() + self.compare_to_years.append(compare.dict_to_save()) + + def score_last_script(): + """去年财务得分""" + compare = self.CompareToYears() + score_index = compare.FinancialScoreIndex() + score_index.profitability = score_last_origin['盈利能力']['合计'] + score_index.asset_quality = score_last_origin['资产质量']['合计'] + score_index.debt_risk = score_last_origin['债务风险']['合计'] + score_index.business_growth = score_last_origin['经营增长']['合计'] + compare.year = df_last['年报期'][1] + compare.index = score_index.dict_to_save() + self.compare_to_years.append(compare.dict_to_save()) + + score_actl_script() + score_last_script() + + def compare_to_industry(): + """财务得分同行比较""" + compare_industry = self.CompareToIndustry() + + def company_level(): + """公司水平""" + company = compare_industry.CompanyScore() + company.profitability = rating_result['财务评分']['盈利能力']['合计'] + company.asset_quality = rating_result['财务评分']['资产质量']['合计'] + company.debt_risk = rating_result['财务评分']['债务风险']['合计'] + company.business_growth = rating_result['财务评分']['经营增长']['合计'] + compare_industry.company_score = company + + def average_level(): + """平均水平""" + average = compare_industry.AverageScore() + average.profitability = 8 + average.asset_quality = 9 + average.debt_risk = 9 + average.business_growth = 9 + compare_industry.average_score = average + + company_level() + average_level() + + def delta_to_year(): + """财务得分较去年变化""" + delat_data = json.loads((df['今年值']/df['去年值']-1).apply(lambda x: '{}%'.format(round(x*100, 2))).T.to_json()) + delat = self.DeltaToYears() + delat.profitability = delat_data['盈利能力'] + delat.asset_quality = delat_data['资产质量'] + delat.debt_risk = delat_data['债务风险'] + delat.business_growth = delat_data['经营增长'] + self.delta_to_years = delat + + def delta_to_industry(): + """财务扽分交同行差异""" + delat_data = json.loads((df['今年值']/df['平均值']-1).apply(lambda x: '{}%'.format(round(x * 100, 2))).T.to_json()) + delat = self.DeltaToIndustry() + delat.profitability = delat_data['盈利能力'] + delat.asset_quality = delat_data['资产质量'] + delat.debt_risk = delat_data['债务风险'] + delat.business_growth = delat_data['经营增长'] + self.delta_to_industry = delat + + def _main_(): + result_head() + index_detail() + compare_to_year() + compare_to_industry() + delta_to_year() + delta_to_industry() + result = self.dict_to_save() + self.db.upsert_single_data( + '企业数据', + '财务要素分析', + {"评价ID": self.rid}, + result + ) + + _main_() class BusinessAnalysisImpl(BusinessElementsAnalysis): diff --git a/CompanyData/CompanyDataObj.py b/CompanyData/CompanyDataObj.py index 55bc6f8..c6fc0c1 100644 --- a/CompanyData/CompanyDataObj.py +++ b/CompanyData/CompanyDataObj.py @@ -381,7 +381,7 @@ class FinancialElementsAnalysis(SpecObject): class CompareToYears(SpecObject): """财务得分年度比较""" - class FinancialAnalysisIndex(SpecObject): + class FinancialScoreIndex(SpecObject): """指标""" profitability = ValidateAttr(field='profitability', type=(int, float)) asset_quality = ValidateAttr(field='asset_quality', type=(int, float)) @@ -396,7 +396,7 @@ class FinancialElementsAnalysis(SpecObject): } year = ValidateAttr(field='year', type=str, func=Validate.date_format) - index = ValidateAttr(field='index', instance_list=FinancialAnalysisIndex) + index = ValidateAttr(field='index', type=FinancialScoreIndex) fields_map = { "year": "年度", @@ -486,7 +486,7 @@ class FinancialElementsAnalysis(SpecObject): update_time = ValidateAttr(field='update_time', func=Validate.time_format) rid = ValidateAttr(field='rid', type=str, length=8) report_date = ValidateAttr(field='report_date', type=str, func=Validate.date_format) - compare_to_years = ValidateAttr(field='compare_to_years', length=2, type=CompareToYears) + compare_to_years = ValidateAttr(field='compare_to_years', length=2, instance_list=CompareToYears) compare_to_industry = ValidateAttr(field='compare_to_industry', type=CompareToIndustry) delta_to_years = ValidateAttr(field='delta_to_years', type=DeltaToYears) delta_to_industry = ValidateAttr(field='delta_to_industry', type=DeltaToIndustry) diff --git a/CompanyData/CompanyDataRoutes.py b/CompanyData/CompanyDataRoutes.py index fa04790..22ad9c4 100644 --- a/CompanyData/CompanyDataRoutes.py +++ b/CompanyData/CompanyDataRoutes.py @@ -44,12 +44,13 @@ def general_rating(): - """ try: - credit_analysis = CreditAnalysisImpl() - credit_analysis.rid = request.json['rid'] - credit_analysis.cc_rating_etl() + # credit_analysis = CreditAnalysisImpl() + # credit_analysis.rid = request.json['rid'] + # credit_analysis.cc_rating_etl() financial_analysis = FinancialAnalysisImpl() + financial_analysis.rid = request.json['rid'] financial_analysis.financial_analysis_etl() - company_index.risk_analysis_etl() + # company_index.risk_analysis_etl() return {"info": "数据准备完成"}, 200 except ReturnConditionCheckFailed as e: e.log_error()