import json import requests from DBHelper.MongoHelper import MongoHelper from Manage.Ratings.Objects.CreditObject import CreditRatingResult, OperatingScore, FinanceScore, RiskScore from Manage.Ratings.Objects.EsgObject import EsgRatingResult, SocialScore, EnvironmentalScore, GovernanceScore from Manage.Ratings.Objects.RatingSearch import SearchRatingApi, SearchRatingResult RATING = ["企业ID", "评价ID", "企业名称", "评价项目", "评价方式", "进行状态", "评价结果", "评价完成日期", "报告fid", "证书fid"] class SearchRatingApiImpl(SearchRatingApi): """评价查询请求接口""" db = MongoHelper("tfse_v0.21") def conditions_search(self): """根据条件查询""" search_body = self.search.make_search_body() sort = self.sort.make_sort_body() page_size = 10 if self.page_size > 10 else self.page_size page_no = self.page_no total = self.db.find_all_data_with_count( "企业数据", "评价记录", search_body ) records = self.db.find_data_by_page_with_sort( "企业数据", "评价记录", search_body, RATING, sort, page_size, page_no ) table_data = list() if records: for record in records: company = SearchRatingResult() company.cid = record['企业ID'] company.rid = record['评价ID'] company.name = record['企业名称'] company.project = record['评价项目'] company.method = record['评价方式'] company.status = record['进行状态'] company.result = record['评价结果'] company.completion_date = record['评价完成日期'] company.report_fid = record['报告fid'] company.certificate_fid = record['证书fid'] data = company.dict_to_show(columns=RATING) table_data.append(data) result = { "records": table_data, "total": total } return result def rating_type(self): """评价类型""" search_body = self.dict_to_show()['搜索体'] records = self.db.find_single_data( '企业数据', '评价记录', search_body, ['评价项目'] ) return records def result_search(self): """评价结果查询""" search_body = self.dict_to_show()['搜索体'] records = self.rating_type() def credit_result(): """综信评价结果""" result = self.db.find_single_data( '综信评价数据', '评价结果', search_body, ['企业ID', '评价ID', '企业名称', '评价年度', '评价方式', '评价时间', '信用等级', '信用评分', '经营评分', '财务评分', '风险评分'] ) rating_result = CreditRatingResult() rating_result.cid = result['企业ID'] rating_result.rid = result['评价ID'] rating_result.name = result['企业名称'] rating_result.year = result['评价年度'] rating_result.score = result['信用评分'] rating_result.level = result['信用等级'] rating_result.method = result['评价方式'] rating_result.rating_date = result['评价时间'] def operating(): """经营评分""" operate = OperatingScore() operate.environment = result['经营评分']['环境'] operate.social = result['经营评分']['社会责任'] operate.governance = result['经营评分']['公司治理'] operate.total = result['经营评分']['合计'] rating_result.operating_score = operate def finance(): """财务评分""" finance_score = FinanceScore() def profit_about(): """盈利能力""" profit = finance_score.Profitability() profit.roa = result['财务评分']['盈利能力']['净资产收益率'] profit.roe = result['财务评分']['盈利能力']['总资产报酬率'] profit.total = result['财务评分']['盈利能力']['合计'] return profit def aseet_about(): """资产质量""" asset = finance_score.AssetQuality() asset.total_asset_turnover = result['财务评分']['资产质量']['总资产周转率'] asset.inventory_turnover = result['财务评分']['资产质量']['存货周转率'] asset.accounts_receivable_turnover = result['财务评分']['资产质量']['应收账款周转率'] asset.total = result['财务评分']['资产质量']['合计'] return asset def debt_about(): """债务风险""" debt = finance_score.DebtRisk() debt.assets_liabilities = result['财务评分']['债务风险']['资产负债率'] debt.earned_interest_multiple = result['财务评分']['债务风险']['已获利息倍数'] debt.quick_ratio = result['财务评分']['债务风险']['速动比率'] debt.total = result['财务评分']['债务风险']['合计'] return debt def business_about(): """经营增长""" business = finance_score.BusinessGrowth() business.operating_growth_rate = result['财务评分']['经营增长']['营业增长率'] business.total_asset_growth_rate = result['财务评分']['经营增长']['总资产增长率'] business.technology_investment_ratio = result['财务评分']['经营增长']['技术投入比率'] business.total = result['财务评分']['经营增长']['合计'] return business finance_score.profitability = profit_about() finance_score.asset_quality = aseet_about() finance_score.debt_risk = debt_about() finance_score.business_growth = business_about() finance_score.total = result['财务评分']['合计'] rating_result.finance_score = finance_score def risk(): """风险评分""" risk_score = RiskScore() risk_score.total = 0 def management(): """经营风险""" business = risk_score.BusinessRisk() business.case_filing_information = result['风险评分']['经营风险']['立案信息'] business.court_announcement = result['风险评分']['经营风险']['开庭公告'] business.executed = result['风险评分']['经营风险']['被执行人'] business.court_notice = result['风险评分']['经营风险']['法院公告'] business.litigation = result['风险评分']['经营风险']['诉讼'] business.service_announcement = result['风险评分']['经营风险']['送达公告'] business.equity_pledge = result['风险评分']['经营风险']['股权出质'] business.legal_entity_change = result['风险评分']['经营风险']['法人变更'] business.members_change = result['风险评分']['经营风险']['主要成员变更'] business.total = result['风险评分']['经营风险']['合计'] risk_score.total += result['风险评分']['经营风险']['合计'] return business def peripheral(): """关联风险""" associated = risk_score.AssociatedRisk() peripheral_ = associated.PeripheralRisk() peripheral_.high_risk = result['风险评分']['关联风险']['周边风险']['高风险'] peripheral_.warning = result['风险评分']['关联风险']['周边风险']['警示'] peripheral_.total = result['风险评分']['关联风险']['周边风险']['合计'] associated.peripheral_risk = peripheral_ associated.total = result['风险评分']['关联风险']['合计'] risk_score.total += result['风险评分']['关联风险']['合计'] return associated risk_score.compliance_risk = result['风险评分']['合规风险'] risk_score.business_risk = management() risk_score.associated_risk = peripheral() risk_score.total += risk_score.compliance_risk self.risk_score = risk_score def __main__(): operating() finance() risk() data = rating_result.dict_to_show() return data return __main__() def esg_result(): """esg评价结果""" result = self.db.find_single_data( 'ESG评价数据', '评价结果', search_body, ['企业ID', '评价ID', '企业名称', '评价年度', '评价时间', '评价等级', 'ESG得分', '环境得分', '社会得分', '公司治理得分'] ) rating_result = EsgRatingResult() rating_result.cid = result['企业ID'] rating_result.rid = result['评价ID'] rating_result.name = result['企业名称'] rating_result.year = result['评价年度'] rating_result.esg_score = result['ESG得分'] rating_result.level = result['评价等级'] rating_result.rating_date = result['评价时间'] def environment(): """环境得分""" score = EnvironmentalScore() score.carbon_dioxide = result['环境得分']['单位收入二氧化碳排放'] score.energy_consumption = result['环境得分']['单位收入的能耗'] score.water_consumption = result['环境得分']['单位收入的耗水'] score.income_ratio = result['环境得分']['绿色业务收入占比(%)'] score.greenhouse_gas = result['环境得分']['公司是否有温室气体减排目标'] score.energy_saving = result['环境得分']['企业是否有节能目标'] score.water_saving = result['环境得分']['企业是否有节约用水目标'] score.green_business = result['环境得分']['是否有绿色业务'] score.punish = result['环境得分']['近三年是否被环境或水务等监管部门处罚'] score.negative_effects = result['环境得分']['国家双碳目标对企业业务是否有不利影响'] score.beneficial_influence = result['环境得分']['国家双碳目标对企业业务是否有有利影响'] score.clean_energy = result['环境得分']['企业是否使用风电、光电、水电等清洁能源,是否使用清洁交通工具'] score.total = result['环境得分']['合计'] rating_result.environmental_score = score def social(): """社会得分""" score = SocialScore() score.resign = result['社会得分']['离职人数占比'] score.salary_increase = result['社会得分']['人均薪酬涨幅'] score.work_length = result['社会得分']['劳动合同中的工作时长(周)'] score.labor_disputes = result['社会得分']['劳动纠纷'] score.security_incident = result['社会得分']['安全事故'] score.provide_training = result['社会得分']['提供培训'] score.social_security = result['社会得分']['社保缴纳是否符合当地标准'] score.provident_fund = result['社会得分']['公积金缴纳是否符合当地标准'] score.physical_examination = result['社会得分']['是否提供员工体检'] score.paid_leave = result['社会得分']['是否提供带薪假期'] score.supplier = result['社会得分']['公司从前三大供货商拿货占比'] score.customer_sales = result['社会得分']['公司前3大客户销量占比'] score.repair_ratio = result['社会得分']['公司返修、退回、投诉产品比例(%)'] score.poverty_alleviation = result['社会得分']['扶贫+捐赠规模(万元)'] score.judicial_risk = result['社会得分']['司法风险'] score.total = result['社会得分']['合计'] rating_result.social_score = score def governance(): """治理得分""" score = GovernanceScore() score.enterprise_nature = result['公司治理得分']['企业性质'] score.directors_board = result['公司治理得分']['公司是否设有董事会'] score.supervisory_board = result['公司治理得分']['公司是否设有监事会'] score.experience_year = result['公司治理得分']['董监高平均拥有的行业经验年数'] score.turnover_rate = result['公司治理得分']['董监高近三年离职率'] score.information_disclosure = result['公司治理得分']['公司近三年信息披露及时、可靠、完备、审计质量'] score.meetings_number = result['公司治理得分']['公司董事会近三年年均开会次数'] score.roe = result['公司治理得分']['净资产收益率'] score.audit_report = result['公司治理得分']['公司是否有审计报告'] score.total = result['公司治理得分']['合计'] rating_result.governance_score = score def __main__(): environment() social() governance() data = rating_result.dict_to_show() return data return __main__() if records['评价项目'] == '综合信用评价': res = credit_result() else: res = esg_result() return res def process_search(self): """评价流程""" search_body = self.dict_to_show()['搜索体'] records = self.rating_type() def credit_process(): """综信评价流程""" process = self.db.find_single_data( '综信评价数据', '评价流程', search_body, ['评价流程'] ) return process def esg_process(): """esg评价流程""" process = self.db.find_single_data( 'ESG评价数据', '评价流程', search_body, ['评价流程'] ) return process if records['评价项目'] == '综合信用评价': res = credit_process() else: res = esg_process() return res def detail_search(self): """填报数据""" search_body = self.dict_to_show()['搜索体'] records = self.rating_type() def credit_detail(): """综信填报数据""" detail = self.db.find_single_data( '综信评价数据', '填报数据', search_body, ['企业ID', '企业名称', '评价年度', '行业选择', '经营问卷', '财务填报'] ) return detail def esg_detail(): """esg填报数据""" detail = self.db.find_single_data( 'ESG评价数据', '填报数据', search_body, ['企业ID', '企业名称', '评价年度', '所属行业', '环境问卷', '社会问卷', '治理问卷'] ) return detail if records['评价项目'] == '综合信用评价': res = credit_detail() else: res = esg_detail() return res def risk_search(self): """风险数据""" search_body = self.dict_to_show()['搜索体'] records = self.rating_type() def credit_risk(): """综信风险数据""" detail = self.db.find_single_data( '综信评价数据', '风险数据', search_body, ['企业ID', '关联风险', '合规风险', '经营风险'] ) return detail def esg_risk(): """esg风险数据""" detail = self.db.find_single_data( 'ESG评价数据', '风险数据', search_body, ['企业ID', '更新日期', '严重违法', '失信人', '法律诉讼', '税收违法', '经营异常', '行政处罚', '被执行人'] ) return detail if records['评价项目'] == '综合信用评价': res = credit_risk() else: res = esg_risk() return res def financial_search(self): """财指结果""" search_body = self.dict_to_show()['搜索体'] financial = self.db.find_all_data( '综信评价数据', '财指结果', search_body, ['企业ID', '年报期', '企业名称', '净资产收益率', '存货周转率', '已获利息倍数', '应收账款周转率', '总资产周转率', '总资产增长率', '总资产报酬率', '技术投入比率', '营业增长率', '资产负债率', '速动比率'] ) return financial def report_search(self): """报告数据""" search_body = self.dict_to_show()['搜索体'] records = self.rating_type() def credit_report(): """综信风险数据""" report_data = self.db.find_single_data( '综信评价数据', '报告数据', search_body, ['企业ID', '企业名称', '评价年度', '行业选择', '生成日期', '报告内容'] ) return report_data def esg_report(): """esg风险数据""" report_data = self.db.find_single_data( 'ESG评价数据', '报告数据', search_body, ['企业ID', '企业名称', '评价年度', '生成日期', '报告内容'] ) return report_data if records['评价项目'] == '综合信用评价': res = credit_report() else: res = esg_report() return res def report_revise(self, text_model): """报告修改""" search_body = self.dict_to_show()['搜索体'] records = self.rating_type() def revise_credit_report(): """综信报告修改""" def edit(): """更新报告数据""" insert_data = dict() insert_data['报告内容'] = text_model self.db.update_single_data( '综信评价数据', '报告数据', search_body, insert_data ) return True def delete(): """删除报告相关数据""" record = self.db.find_single_data( '企业数据', '评价记录', search_body, ['报告fid'] ) if not record: return False else: fid = record['报告fid'] # self.db.delete_file( # '文件', # '综信报告', # fid # ) self.db.update_single_data( '企业数据', '评价记录', search_body, {'报告fid': None} ) return True def create(): """生成报告""" report_data = self.db.find_single_data( '综信评价数据', '报告数据', search_body, ['评价ID', '企业ID', '企业名称', '报告内容', '生成日期', '行业选择', '评价年度'] ) report_text = dict() report_text['text_model'] = report_data def generate_report(): """ 调用报告生成接口 Parameters: - Returns: result: type 生成结果 """ url = 'http://api.fecribd.com/tfse_rating/report/generate_pdf_report' token = 'X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5' headers = {'token': token, 'Content-Type': 'application/json;charset=UTF-8'} res_ = requests.post(url, headers=headers, data=json.dumps(report_text)) return res_ r = generate_report() result = r.json() if result['info'] == '生成报告成功': self.db.update_single_data('企业数据', '评价记录', search_body, {"报告fid": result['result']['FileID']}) result['result']['FileID'] = '/file/get_company_report?file_id={}'.format( result['result']['FileID']) self.db.update_single_data('企业数据', '综合信用分析', search_body, {"信用分析.查看报告": result['result']['FileID']}) return result step_1 = edit() if step_1: step_2 = delete() if step_2: step_3 = create() return step_3 else: return {"info": "删除失败"} else: return {"info": "此公司不存在报告数据"} def revise_esg_report(): """esg报告修改""" return True if records['评价项目'] == '综合信用评价': res = revise_credit_report() else: res = revise_esg_report() return res def comprehensive_credit_search(self): """综合信用分析""" search_body = self.dict_to_show()['搜索体'] data = self.db.find_single_data( '企业数据', '综合信用分析', search_body, ['企业ID', '企业名称', '更新时间', '综合信用表现', '信用分析', '指标表格', '历史级别'] ) return data def business_risk_search(self): """经营风险分析""" search_body = self.dict_to_show()['搜索体'] data = self.db.find_single_data( '企业数据', '经营风险分析', search_body, ['企业ID', '更新时间', '风险分数', '风险级别', '风险数量', '列入失信名单', '合规风险', '经营风险', '周边风险', '变更记录'] ) return data def financial_elements_search(self): """财务要素分析""" search_body = self.dict_to_show()['搜索体'] data = self.db.find_single_data( '企业数据', '财务要素分析', search_body, ['企业ID', '更新时间', '财报期', '指标详情', '财务得分年度比较', '财务得分同行比较', '财务得分较去年变化', '财务得分较同行差异'] ) return data def esg_evaluation_search(self): """esg评价分析""" search_body = self.dict_to_show()['搜索体'] data = self.db.find_single_data( '企业数据', 'ESG评价分析', search_body, ['企业ID', '更新日期', 'ESG评级', '维度得分情况'] ) return data if __name__ == '__main__': insert = dict() insert['企业ID'] = 'rh3XINDu' insert['评价ID'] = 'wEtHEscX' insert['评价流程'] = list() step_01 = {"数据准备": ['填报数据', '风险数据']} step_02 = {"模型打分": ['评价结果']} step_03 = {"文档生成": ['报告数据', '综信报告', '综信证书']} step_04 = {"数据清洗": ['ESG评价分析']} insert['评价流程'].append(step_01) insert['评价流程'].append(step_02) insert['评价流程'].append(step_03) insert['评价流程'].append(step_04) db = MongoHelper("tfse_v0.21") db.upsert_single_data( 'ESG评价数据', '评价流程', {'评价ID': 'wEtHEscX'}, insert )