diff --git a/company/company_db.py b/company/company_db.py index 573fc48..d09284f 100644 --- a/company/company_db.py +++ b/company/company_db.py @@ -1,10 +1,10 @@ import pymongo -MG_USER = "root" -MG_PWD = "sromitdTW569kC#M" -MG_HOST = "116.63.130.34" -MG_PORT = "27018" -CLIENT = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format(MG_USER, MG_PWD, MG_HOST, MG_PORT)) +DB_HOST = "116.63.130.34" +DB_PASS = "UTlC9cCoglD1cI1*" +DB_USER = "root" +DB_PORT = "27021" +CLIENT = pymongo.MongoClient('mongodb://{}:{}@{}:{}'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT)) def FIND_DATA_IN_COMPANY(param1, param2): @@ -51,3 +51,38 @@ def FIND_DATA_IN_MACRO_INDUSTRY_ANALYSIS(industry): return record[0] else: return False + + +def FIND_SINGLE_DATA_BY_REQ(param1, param2, param3, param4): + """ + 查询符合条件的第一条数据 + Parameters: + param1: str 数据库 + param2: str 数据表 + param3: dict 查询条件 + param4: list 查询字段 + Returns: + record: 查询结果为空,返回False; 查询结果正常,返回查询结果的第一条数据; + """ + collection = CLIENT[param1][param2] + columns = {**{'_id': False}, **dict(zip(param4, [1] * len(param4)))} + record = list(collection.find(param3, columns)) + return False if record == [] else record[0] + + +def FIND_SINGLE_DATA_BY_REQ_WITH_SORT(param1, param2, param3, param4, param5): + """ + 查询符合条件的第一条数据 + Parameters: + param1: str 数据库 + param2: str 数据表 + param3: dict 查询条件 + param4: list 查询字段 + param5: dict 排序条件 例如 {"name": 1} 表示按照name字段正序返回 + Returns: + record: 查询结果为空,返回False; 查询结果正常,返回查询结果的第一条数据; + """ + collection = CLIENT[param1][param2] + columns = {**{'_id': False}, **dict(zip(param4, [1] * len(param4)))} + record = list(collection.find(param3, columns).sort(list(param5.keys())[0], list(param5.values())[0]).limit(1)) + return False if record == [] else record[0] diff --git a/company/company_impl.py b/company/company_impl.py index dec290b..0bb99f0 100644 --- a/company/company_impl.py +++ b/company/company_impl.py @@ -2,8 +2,9 @@ import json import pandas as pd -from company.company_db import FIND_DATA_IN_COMPANY, FIND_DATA_IN_MACRO_INDUSTRY_ANALYSIS -from company.company_utils import sub_dict, judge_industry +from company.company_db import FIND_DATA_IN_COMPANY, FIND_DATA_IN_MACRO_INDUSTRY_ANALYSIS, \ + FIND_SINGLE_DATA_BY_REQ_WITH_SORT, FIND_SINGLE_DATA_BY_REQ +from company.company_utils import judge_industry def find_company_data_scripts(table, cid): @@ -11,20 +12,23 @@ def find_company_data_scripts(table, cid): def get_head_info_impl(cid): - data = FIND_DATA_IN_COMPANY('综合评价分析', {"企业ID": cid}) - if data: - return sub_dict(data[0], ['企业名称', '综合信用等级']) - else: - company = FIND_DATA_IN_COMPANY('公司基本信息', {"企业ID": cid})[0] - result = { - "企业名称": company['企业名称'], - "综合信用等级": { - "评价时间": "N/A", - "信用等级": "N/A", - "信用评分": "N/A" - }, - } - return result + # company_info: 企业信息 + company_info = FIND_SINGLE_DATA_BY_REQ("应用端", "企业用户", {"企业ID": cid}, ["企业名称", "已认证"]) + + # cc_rating: 最近一期综信评价结果 + cc_rating = FIND_SINGLE_DATA_BY_REQ_WITH_SORT("综信评价数据", "评价结果", {"企业ID": cid}, ["信用评分", "信用等级", "评价时间"], {"评价年度": -1}) + # esg_rating: 最近一期ESG评价结果 + esg_rating = FIND_SINGLE_DATA_BY_REQ_WITH_SORT("ESG评价数据", "评价结果", {"企业ID": cid}, ["ESG得分", "评价等级", "评价时间"], {"评价年度": -1}) + + # head_info: 公司主要头部信息 + head_info = { + "企业名称": company_info['企业名称'], + "企业认证": "已认证" if company_info['已认证'] == "是" else "未认证", + "综合信用评价": cc_rating if cc_rating else {"信用等级": "N/A", "信用评分": "N/A", "评价时间": "N/A"}, + "ESG评价": esg_rating if esg_rating else {"信用等级": "N/A", "信用评分": "N/A", "评价时间": "N/A"} + } + + return head_info def find_financial_index_detail_scripts(table, cid):