from Utils.ObjUtil import SpecObject from Utils.ValidateUtil import ValidateAttr, Validate class SearchCompanyApi(SpecObject): """企业查询请求接口""" class SearchBody(SpecObject): """""" cid = ValidateAttr(field='cid', type=str) name = ValidateAttr(field='name', type=str) industry = ValidateAttr(field='industry', type=str) credit_level = ValidateAttr(field='credit_level', type=list, in_list=["AAA", "AA+", "AA", "AA-", "A+", "A", "A-", "BBB+", "BBB", "BBB-", "BB+", "BB", "BB-", "B+", "B", "B-", "CCC+", "CCC", "CCC-", "CC+", "CC", "CC-", "C+", "C", "C-"]) esg_level = ValidateAttr(field='esg_level', type=list, in_list=["A", "B", "C", "D", "E"]) fields_map = { "cid": "企业ID", "name": "企业名称", "industry": "一级行业", "credit_level": "综信评价", "esg_level": "ESG评价" } def make_search_body(self): """""" search_keys = list(self.__dict__.keys()) body = dict() if "cid" in search_keys: body['企业ID'] = self.cid if "name" in search_keys: body['企业名称'] = {"$regex": self.name} if "industry" in search_keys: body['一级行业'] = {"$in": self.industry} if "credit_level" in search_keys: body['综信评价结果.信用等级'] = {"$in": self.credit_level} if "esg_level" in search_keys: body['ESG评价结果.评价等级'] = {"$in": self.esg_level} return body class SortBody(SpecObject): """""" field = ValidateAttr(field='field', type=str) sort = ValidateAttr(field='sort', in_list=["asc", "desc"]) fields_map = { "field": "排序字段", "sort": "排序方式" } def make_sort_body(self): """""" if self.__dict__ != {}: columns_map = { "企业ID": "企业ID", "企业名称": "企业名称", "一级行业": "一级行业", "信用等级": "综信评价结果.信用等级", "ESG等级": "ESG评价结果.评价等级" } asc_or_desc = 1 if self.sort == "asc" else -1 sort_column = columns_map[self.field] body = {sort_column: asc_or_desc} else: body = {"更新时间.工商信息": -1} return body search = ValidateAttr(field='search', type=SearchBody) sort = ValidateAttr(field='sort', type=SortBody) page_size = ValidateAttr(field='page_size', type=int) page_no = ValidateAttr(field='page_no', type=int) fields_map = { "search": "搜索体", "sort": "排序", "page_size": "显示数量", "page_no": "页码" } def condition_search(self): """条件查询""" class SearchCompanyResult(SpecObject): """企业查询返回结果""" cid = ValidateAttr(field='cid', type=str) name = ValidateAttr(field='name', type=str, default=None) industry = ValidateAttr(field='industry', type=str, default=None) credit_level = ValidateAttr(field='credit_level', type=str, default=None) esg_level = ValidateAttr(field='esg_level', type=str, default=None) fields_map = { "cid": "企业ID", "name": "企业名称", "industry": "一级行业", "credit_level": "信用等级", "esg_level": "ESG等级" } class CompanyIndexApi(SpecObject): """企业主页接口""" class HeadInfo(SpecObject): """头部信息""" name = ValidateAttr(field='name', type=str) cid = ValidateAttr(field='cid', type=str) email = ValidateAttr(field='email', type=str) industry = ValidateAttr(field='industry', type=str) fields_map = { "name": "企业名称", "cid": "企业ID", "email": "账户邮箱", "industry": "所属行业", } class UpdateTime(SpecObject): """更新时间""" table_map = { "工商信息": "基本工商信息", "经营风险": "经营风险分析", "财务分析": "财务要素分析", "综合信用分析": "综合信用分析", "ESG评价分析": "ESG评价分析" } cid = ValidateAttr(field='cid', type=str, length=8) table = ValidateAttr(field='table', type=str, in_list=list(table_map.keys())) update_time = ValidateAttr(field='update_time', type=list) fields_map = { "cid": "企业ID", "table": "table", "update_time": "update_time" } class BasicInfo(SpecObject): class BusinessInfo(SpecObject): """基本工商信息""" status = ValidateAttr(field="status", type=str, default=None) legal_person = ValidateAttr(field="legal_person", type=str, default=None) company_type = ValidateAttr(field="company_type", type=str, default=None) taxpayer_id = ValidateAttr(field="taxpayer_id", type=str, default=None) business_scope = ValidateAttr(field="business_scope", type=str, default=None) registered_capital = ValidateAttr(field="registered_capital", type=str, default=None) paid_capital = ValidateAttr(field="paid_capital", type=str, default=None) registered_address = ValidateAttr(field="registered_address", type=str, default=None) registration_authority = ValidateAttr(field="registration_authority", type=str, default=None) industry = ValidateAttr(field="industry", type=str, default=None) staff_size = ValidateAttr(field="staff_size", type=str, default=None) people_insured_num = ValidateAttr(field="people_insured_num", type=int, default=None) micro_company = ValidateAttr(field="micro_company", type=str, in_list=["是", "否"], default=None) fields_map = { "status": "企业状态", "legal_person": "法定代表人", "company_type": "企业类型", "taxpayer_id": "纳税人识别号", "business_scope": "经营范围", "registered_capital": "注册资本", "paid_capital": "实缴资本", "registered_address": "注册地址", "registration_authority": "登记机关", "industry": "行业", "staff_size": "人员规模", "people_insured_num": "参保人数", "micro_company": "小微企业" } class ShareHolder(SpecObject): """股东信息""" name = ValidateAttr(field='name', type=str) share_holder_type = ValidateAttr(field='share_holder_type', type=str, default=None) share_holding_ratio = ValidateAttr(field="share_holding_ratio", type=str, default=None) subscription_amount = ValidateAttr(field="subscription_amount", type=str, default=None) subscription_date = ValidateAttr(field="subscription_date", type=str, default=None) paid_amount = ValidateAttr(field="paid_amount", type=list, default=[]) payment_method = ValidateAttr(field="payment_method", type=list, default=[]) payment_time = ValidateAttr(field="payment_time", type=list, default=[]) fields_map = { "name": "股东", "share_holder_type": "股东类型", "share_holding_ratio": "持股比例", "subscription_amount": "认缴金额", "subscription_date": "认缴日期", "paid_amount": "实缴金额", "payment_method": "实缴方式", "payment_time": "实缴时间" } class MainMember(SpecObject): """主要成员""" name = ValidateAttr(field="name", type=str) job_title = ValidateAttr(field="job_title", type=list, default=None) fields_map = { "name": "姓名", "job_title": "职务" } cid = ValidateAttr(field='cid', type=str, length=8) update_time = ValidateAttr(field='update_time', func=Validate.time_format) business_info = ValidateAttr(field="business_info", type=BusinessInfo) share_holder = ValidateAttr(field='share_holder', instance_list=ShareHolder) main_member = ValidateAttr(field='main_member', instance_list=MainMember) fields_map = { "cid": "企业ID", "update_time": "更新时间", "business_info": "工商信息", "share_holder": "股东信息", "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): """头部信息""" def get_update_time(self): """更新时间""" def get_basic_info(self): """工商信息""" def get_financial_data(self): """财务数据""" def get_operating_risk(self): """经营风险""" def get_financial_analysis(self): """财务分析""" def get_cc_rating(self): """综合信用分析""" def get_esg_rating(self): """ESG评价分析"""