tfse-admin-api-v0.2/Board/board_impl.py

146 lines
5.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
import re
import time
import json
import pandas as pd
from Board.board_db import FIND_DATA_COUNT, FIND_DATA, UPSERT_DATA, FIND_DATA_FILTER, FIND_DATA_FILTER_SORT_LIMIT, \
REMOVE_COLLECTION, INSERT_DATA_MANY, INSERT_DATA
from DBHelper.MongoHelper import MongoHelper
def get_monitor_data_impl():
db = MongoHelper("tfse_v0.21")
monitor_data = dict()
def log_data_impl():
monitor_data['异常日志'] = 0
def feedback_data_impl():
monitor_data['留言反馈'] = 0
def services_data_impl():
monitor_data['服务次数'] = db.find_all_data_with_count(
"企业数据",
"评价记录",
{"进行状态": "完成"}
)
def verified_company_impl():
monitor_data['认证企业'] = db.find_all_data_with_count(
"应用端",
"企业用户",
{"已认证": ""}
)
log_data_impl()
feedback_data_impl()
services_data_impl()
verified_company_impl()
return monitor_data
def get_rating_static_impl():
db = MongoHelper("tfse_v0.21")
# 日期正则表达式 20xx-xx-xx格式
# data_regex = "((((19|20)\d{2})-(0?(1|[3-9])|1[012])-(0?[1-9]|[12]\d|30))|(((19|20)\d{2})-(0?[13578]|1[02])-31)|(((19|20)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))-0?2-29))$"
# 日期匹配结果
# match_result = re.match(data_regex, start)
# 若没有匹配到需求格式日期则默认查询起始日期是30天以前
# if not match_result:
# start = time.strftime("%Y-%m-%d", time.localtime(time.time() - 60*60*24*30))
# 默认查询起始日期是30天以前
start = time.strftime("%Y-%m-%d", time.localtime(time.time() - 60*60*24*30))
records = db.find_data_with_aggregate(
"企业数据",
"评价记录",
[
{"$match": {"进行状态": "完成", "评价完成日期": {"$gte": start}}},
{"$group": {"_id": "$评价完成日期", "count": {"$sum": 1}}},
{"$sort": {"_id": 1}}
]
)
# 聚类统计用的_id字段更名为date
for data in records:
data['date'] = data.pop('_id')
return records
def static_dashboard_data_impl():
def monitor_data():
"""
监测数据
"""
data = dict()
data['认证企业'] = FIND_DATA_COUNT("TFSE", "用户", "用户信息", {"已认证": ""})
data['服务次数'] = FIND_DATA_COUNT("TFSE", "评价", "评价记录", {"进行状态": "完成"})
data['留言反馈'] = 0
data['异常日志'] = 0
REMOVE_COLLECTION('ADMIN', '看板', '监测数据')
INSERT_DATA("ADMIN", "看板", "监测数据", data)
def services_static():
"""
服务次数
delta_seconds 统计服务次数的时间范围
start_date_time_stamp 统计起始时间的时间戳
start_date 统计起始日期
"""
delta_seconds = 60*60*24*365
start_date_time_stamp = time.time() - delta_seconds
start_date = time.strftime("%Y-%m-%d", time.localtime(start_date_time_stamp))
records = FIND_DATA("TFSE", "评价", "评价记录", {"进行状态": "完成", "评价时间": {"$gt": start_date}})
df_rating_times = pd.DataFrame(pd.DataFrame(records)[['评价时间']].value_counts()).sort_index()
times_statics_by_date = dict(zip([tuple_date[0] for tuple_date in df_rating_times.index.values.tolist()], df_rating_times[0].tolist()))
for item in times_statics_by_date.items():
data = dict()
data['日期'] = item[0]
data['服务次数'] = item[1]
UPSERT_DATA("ADMIN", "看板", "服务统计", {"日期": item[0]}, data)
def industry_distribute():
"""
行业分布
"""
with open(os.path.abspath(os.path.dirname(__file__)+'/static/tyc_industry_II_to_I.json'), encoding='utf8') as f:
industry_refers = json.load(f)
records = FIND_DATA_FILTER("TFSE", "企业", "公司基本信息", {}, {"工商信息.行业": 1})
df_industry = pd.DataFrame([record['工商信息'] for record in records])
df_industry['行业'] = df_industry['行业'].apply(lambda x: industry_refers[x])
df_industry_count = df_industry['行业'].value_counts()
dict_industry = dict(zip(df_industry_count.index.tolist(), df_industry_count.values.tolist()))
for item in dict_industry.items():
data = dict()
data['行业名称'] = item[0]
data['公司数量'] = item[1]
UPSERT_DATA("ADMIN", "看板", "行业分布", {"行业名称": item[0]}, data)
def new_company_info():
"""
新增企业信息
"""
records = FIND_DATA_FILTER_SORT_LIMIT("TFSE", "用户", "用户信息", {"已认证": ""}, {"企业ID": 1, "企业名称": 1, "注册时间": 1}, [("注册时间", -1)], 10)
REMOVE_COLLECTION('ADMIN', '看板', '新增企业信息')
INSERT_DATA_MANY('ADMIN', '看板', '新增企业信息', records)
def main_process():
monitor_data()
services_static()
industry_distribute()
new_company_info()
return 0
return main_process()