企业查询
This commit is contained in:
parent
0a2aceb960
commit
03ba0ecca3
|
@ -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)
|
||||
|
||||
|
|
|
@ -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等级"
|
||||
}
|
||||
|
|
|
@ -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'])
|
||||
|
|
Loading…
Reference in New Issue