企业查询

This commit is contained in:
王思川 2022-04-14 03:12:36 +08:00
parent 0a2aceb960
commit 03ba0ecca3
3 changed files with 99 additions and 87 deletions

View File

@ -1,57 +1,18 @@
from DBHelper.MongoHelper import MongoHelper
from Manage.Company.CompanyObj import SearchCompany
from Manage.Company.CompanyObj import SearchCompanyBody, SearchCompanyResult
class SearchCompanyImpl(SearchCompany):
class SearchCompanyBodyImpl(SearchCompanyBody):
""""""
db = MongoHelper("tfse_v0.21")
def conditions_search(self):
""""""
def make_search_body(param):
search_keys = list(param.keys())
body = dict()
if "企业ID" in search_keys:
body['企业ID'] = param['企业ID']
if "企业名称" in search_keys:
body['企业名称'] = {"$regex": param['企业名称']}
if "一级行业" in search_keys:
body['一级行业'] = {"$in": param['一级行业']}
if "信用等级" in search_keys:
body['综信评价结果.信用等级'] = {"$in": param['信用等级']}
if "ESG等级" in search_keys:
body['ESG评价结果.评价等级'] = {"$in": param['ESG等级']}
return body
# 顺序条件构造方法
def make_sort_body(param):
if param != {}:
columns_map = {
"企业ID": "企业ID",
"企业名称": "企业名称",
"一级行业": "一级行业",
"信用等级": "综信评价结果.信用等级",
"ESG等级": "ESG评价结果.评价等级"
}
asc_or_desc = 1 if list(param.values())[0] == "asc" else -1
sort_column = columns_map[list(param.keys())[0]]
body = {sort_column: asc_or_desc}
else:
body = {"更新时间.工商信息": -1}
return body
search_body = make_search_body(self.search)
sort = make_sort_body(self.sort)
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 = int(self.page_no)
page_no = self.page_no
total = self.db.find_all_data_with_count(
"企业数据",
@ -72,24 +33,26 @@ class SearchCompanyImpl(SearchCompany):
table_data = list()
if records:
for record in records:
company = Company()
company = SearchCompanyResult()
company.cid = record['企业ID']
company.name = record['企业名称']
company.industry_l1 = record['一级行业']
company.industry = record['一级行业']
if record['综信评价结果'] != {}:
company.cc_rating_result = record['综信评价结果']['信用等级']
else:
company.cc_rating_result = None
# if record.__contains__('综信评价结果'):
try:
company.credit_level = record['综信评价结果']['信用等级']
# else:
except KeyError:
company.credit_level = None
if record['ESG评价结果'] != {}:
company.esg_rating_result = record['ESG评价结果']['评价等级']
else:
company.esg_rating_result = None
# if record.__contains__('ESG评价结果'):
try:
company.esg_level = record['ESG评价结果']['评价等级']
# else:
except KeyError:
company.esg_level = None
data = company.dict_to_show(columns=["企业ID", "企业名称", "一级行业", "综信评价结果", "ESG评价结果"])
data['信用等级'] = data.pop('综信评价结果')
data['ESG等级'] = data.pop('ESG评价结果')
data = company.dict_to_show(columns=["企业ID", "企业名称", "一级行业", "信用等级", "ESG等级"])
table_data.append(data)

View File

@ -10,7 +10,7 @@ class SearchCompanyBody(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', in_list=["AAA", "AA+", "AA", "AA-", "BBB+", "BBB", "BBB-", "BB+", "BB", "BB-", "B+", "B", "B-", "CCC+", "CCC", "CCC-", "CC+", "CC", "CC-", "C+", "C", "C-"])
credit_level = ValidateAttr(field='credit_level', 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', in_list=["A", "B", "C", "D", "E"])
fields_map = {
@ -45,11 +45,34 @@ class SearchCompanyBody(SpecObject):
class SortBody(SpecObject):
""""""
field = ValidateAttr()
sort = ValidateAttr()
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=dict)
sort = ValidateAttr(field='sort', type=SortBody)
page_size = ValidateAttr(field='page_size', type=int)
page_no = ValidateAttr(field='page_no', type=int)
@ -60,19 +83,22 @@ class SearchCompanyBody(SpecObject):
"page_no": "页码"
}
def condition_search(self):
"""条件查询"""
class SearchCompanyResult(SpecObject):
""""""
cid = ValidateAttr()
name = ValidateAttr()
industry = ValidateAttr()
credit_level = ValidateAttr()
esg_level = ValidateAttr()
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评价"
"credit_level": "信用等级",
"esg_level": "ESG等级"
}

View File

@ -1,6 +1,7 @@
from flask import Blueprint, request
from Manage.Company.CompanyImpl import SearchCompanyImpl
from Manage.Company.CompanyImpl import SearchCompanyBodyImpl
from Utils.ErrorUtil import ReturnConditionCheckFailed
from user.user_auth import verify_token
company_route = Blueprint('company', __name__)
@ -9,24 +10,46 @@ company_route = Blueprint('company', __name__)
@company_route.route('/search', methods=['POST'])
@verify_token
def search_company(**kwargs):
"""
企业搜索
Parameters:
-
Returns:
info: 返回信息
result: 返回数据
"""
req = request.json
search_impl = SearchCompanyImpl(
req['search'],
req['sort'],
req['page_size'],
req['page_no']
)
search_impl.check_obj()
result = search_impl.conditions_search()
return {"info": '查询结果', "result": result}, 200
"""企业搜索"""
try:
req = request.json
search_body_impl = SearchCompanyBodyImpl()
search_body = SearchCompanyBodyImpl().SearchBody()
sort_body = SearchCompanyBodyImpl().SortBody()
search = req['search'] if req.__contains__('search') else {}
sort = req['sort'] if req.__contains__('sort') else {}
if search.__contains__('企业ID'):
search_body.cid = search['企业ID']
if search.__contains__('企业名称'):
search_body.name = search['企业名称']
if search.__contains__('一级行业'):
search_body.industry = search['一级行业']
if search.__contains__('综信评价'):
search_body.credit_level = search['综信评价']
if search.__contains__('ESG评价'):
search_body.esg_level = search['ESG评价']
if sort != {}:
sort_body.field = list(sort.keys())[0]
sort_body.sort = list(sort.values())[0]
search_body_impl.search = search_body
search_body_impl.sort = sort_body
search_body_impl.page_size = req['page_size']
search_body_impl.page_no = req['page_no']
result = search_body_impl.conditions_search()
return {"info": '查询结果', "result": result}, 200
except ReturnConditionCheckFailed as e:
return {"info": e.failed_info}, e.status_code
@company_route.route('/index', methods=['POST'])