200 lines
5.7 KiB
Python
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
|