guarantee-admin-api-v0.2/Modules/DashBoard/DashBoardImpl.py

200 lines
5.7 KiB
Python

import time
from DBHelper.MongoHelperInstance import DB_GUA
from Utils.CommonUtil import trans_fields_name
class DashBoardImpl(object):
@staticmethod
def static_all_country(**kwargs):
items = DB_GUA.find_data_with_aggregate(
"评级数据",
"评级记录",
[
{'$match': {'评级状态': "完成"}},
{'$group': {'_id': "$所在省份", 'count': {'$sum': 1}}}
]
)
result = list()
for item in items:
result.append({"省份": item['_id'], "数量": item["count"]})
return result
@staticmethod
def static_by_province(**kwargs):
province = kwargs["province"] + ""
page_size = kwargs["page_size"]
page_no = kwargs["page_no"]
total = DB_GUA.find_all_data_with_count(
"评级数据",
"评级记录",
{"所在省份": province, "评级状态": "完成"},
)
items = DB_GUA.find_data_by_page_with_sort(
"评级数据",
"评级记录",
{"所在省份": province, "评级状态": "完成"},
["企业名称", "企业ID", "所在城市"],
{"评级时间": -1},
page_size,
page_no
)
for item in items:
trans_fields_name(item, ["企业ID", "企业名称", "所在城市"], ["cid", "company", "city"])
result = {
"name": province,
"total": total,
"data": items
}
return result
@staticmethod
def static_by_city(**kwargs):
city = kwargs["city"]
page_size = kwargs["page_size"]
page_no = kwargs["page_no"]
total = DB_GUA.find_all_data_with_count(
"评级数据",
"评级记录",
{"所在城市": city, "评级状态": "完成"},
)
items = DB_GUA.find_data_by_page_with_sort(
"评级数据",
"评级记录",
{"所在城市": city, "评级状态": "完成"},
["企业名称"],
{"评级时间": -1},
page_size,
page_no
)
for item in items:
trans_fields_name(item, ["企业名称"], ["company"])
result = {
"name": city,
"total": total,
"data": items
}
return result
@staticmethod
def rating_frequency_statistics(**kwargs):
# 默认查询起始日期是30天以前
start = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time() - 60 * 60 * 24 * 365))
records = DB_GUA.find_data_with_aggregate(
"评级数据",
"评级记录",
[
{"$match": {"评级状态": "完成", "评级时间": {"$gte": start}}},
{"$group": {"_id": "$评级时间", "count": {"$sum": 1}}},
{"$sort": {"_id": 1}}
]
)
records = [{'_id': item['_id'][:10], 'count': item['count']} for item in records]
records_dict = dict()
for record in records:
if record['_id'] in records_dict:
records_dict[record['_id']] += record['count']
else:
records_dict[record['_id']] = record['count']
# 聚类统计用的_id字段更名为date
result = dict()
result['日期'] = list()
result['次数'] = list()
for key, value in records_dict.items():
result['日期'].append(key)
result['次数'].append(value)
return result
@staticmethod
def rank_levels_distribute(**kwargs):
items = DB_GUA.find_data_with_aggregate(
"评级数据",
"评级记录",
[
{'$match': {'评级状态': "完成"}},
{'$group': {'_id': "$信用级别", 'count': {'$sum': 1}}}
]
)
result = list()
for item in items:
result.append({item['_id']: item["count"]})
return result
@staticmethod
def latest_rating_result(**kwargs):
page_size = kwargs["page_size"]
page_no = kwargs["page_no"]
items = DB_GUA.find_data_by_page_with_sort(
"评级数据",
"评级记录",
{"评级状态": "完成"},
["企业名称", "信用级别", "所在省份", "所在城市", "评级时间"],
{"评级时间": -1},
page_size,
page_no
)
for item in items:
item["评级时间"] = item["评级时间"][:10]
trans_fields_name(
item,
["企业名称", "信用级别", "所在省份", "所在城市", "评级时间"],
["公司名称", "级别", "省份", "地级市", "日期"]
)
return items
@staticmethod
def result_distribute_detail(**kwargs):
level = kwargs['level']
page_size = kwargs["page_size"]
page_no = kwargs["page_no"]
total = DB_GUA.find_all_data_with_count(
'评级数据',
'评级记录',
{'评级状态': '完成', '信用级别': level}
)
records = DB_GUA.find_data_by_page_with_sort(
"评级数据",
"评级记录",
{"评级状态": "完成", "信用级别": level},
["企业名称", "企业ID"],
{"评级时间": -1},
page_size,
page_no
)
for record in records:
trans_fields_name(record, ["企业ID", "企业名称"], ["cid", "company"])
result = {
"level": level,
"total": total,
"records": records
}
return result