Commit fd3450a0 authored by lcn's avatar lcn

修改安电管理版

parent 91a67783
...@@ -474,3 +474,6 @@ ELECTRIC_PARAM_MAP = { ...@@ -474,3 +474,6 @@ ELECTRIC_PARAM_MAP = {
"unbalanceU", # 三相电压不平衡度 "unbalanceU", # 三相电压不平衡度
"overPR" "overPR"
} }
CST = "Asia/Shanghai"
\ No newline at end of file
...@@ -145,7 +145,7 @@ async def list_alarm_zdu_service(cid, point_list, page_num, page_size, start, ...@@ -145,7 +145,7 @@ async def list_alarm_zdu_service(cid, point_list, page_num, page_size, start,
results = await list_alarm_zdu_dao_new15(cid, point_list, start, end, results = await list_alarm_zdu_dao_new15(cid, point_list, start, end,
importance, event_type) importance, event_type)
real_total = len(results) real_total = len(results)
results = results[(page_num-1)*page_size, page_num*page_size] results = results[(page_num - 1) * page_size, page_num * page_size]
# 2. 获取工厂, 报警type对应的描述信息 # 2. 获取工厂, 报警type对应的描述信息
event_dic = await company_extend_dao(cid) event_dic = await company_extend_dao(cid)
event_dic_map = {event["key"]: event for event in event_dic} event_dic_map = {event["key"]: event for event in event_dic}
...@@ -253,7 +253,10 @@ async def list_alarm_service_new15(cid, point_id, start, end, importance, ...@@ -253,7 +253,10 @@ async def list_alarm_service_new15(cid, point_id, start, end, importance,
if point_id: if point_id:
li.append(f"pid={point_id}") li.append(f"pid={point_id}")
else: else:
li.append(f"cid={cid}") if not isinstance(cid, list):
cid = [cid]
cid_where = str(tuple(cid)).replace(",)", ")")
li.append(f"cid in {cid_where}")
if start and end: if start and end:
li.append(f"event_datetime BETWEEN '{start}' and '{end}'") li.append(f"event_datetime BETWEEN '{start}' and '{end}'")
if importance: if importance:
...@@ -270,7 +273,7 @@ async def list_alarm_service_new15(cid, point_id, start, end, importance, ...@@ -270,7 +273,7 @@ async def list_alarm_service_new15(cid, point_id, start, end, importance,
li.append(f"event_type in {str(tuple(alarm_type)).strip(',')}") li.append(f"event_type in {str(tuple(alarm_type)).strip(',')}")
mid_sql = " and ".join(li) mid_sql = " and ".join(li)
total = await get_total_list_alarm_dao(mid_sql) total = await get_total_list_alarm_dao(mid_sql)
mid_sql2 = " and ".join(["point_1min_event."+i for i in li]) mid_sql2 = " and ".join(["point_1min_event." + i for i in li])
datas = await get_list_alarm_dao(mid_sql2, page_size, page_num) datas = await get_list_alarm_dao(mid_sql2, page_size, page_num)
rows = [] rows = []
for data in datas: for data in datas:
...@@ -279,7 +282,10 @@ async def list_alarm_service_new15(cid, point_id, start, end, importance, ...@@ -279,7 +282,10 @@ async def list_alarm_service_new15(cid, point_id, start, end, importance,
type_str = constants.EVENT_TYPE_MAP.get(event_type) type_str = constants.EVENT_TYPE_MAP.get(event_type)
location_id = data.get("lid") location_id = data.get("lid")
es_id = data.get("id") es_id = data.get("id")
if location_id and (event_type in constants.TEMP_SCOPE_URL_TYPE): if point_id and data.get("event_mode") == "scope":
url = "/scope_details?doc_id=%s" % es_id
redirect_type = "scope"
elif location_id and type in constants.TEMP_SCOPE_URL_TYPE:
url = "/temp_trend?doc_id=%s" % es_id url = "/temp_trend?doc_id=%s" % es_id
redirect_type = "temp_trend" redirect_type = "temp_trend"
else: else:
......
...@@ -18,6 +18,7 @@ from unify_api.modules.alarm_manager.service.list_alarm_service import \ ...@@ -18,6 +18,7 @@ from unify_api.modules.alarm_manager.service.list_alarm_service import \
wx_list_alarm_zdu_service, list_alarm_service_new15 wx_list_alarm_zdu_service, list_alarm_service_new15
from unify_api.modules.common.procedures.cids import get_cid_info, get_cids, \ from unify_api.modules.common.procedures.cids import get_cid_info, get_cids, \
get_proxy_cids get_proxy_cids
from unify_api.modules.users.procedures.jwt_user import jwt_user
from unify_api.utils import time_format from unify_api.utils import time_format
from unify_api import constants from unify_api import constants
from pot_libs.common.components.query import PageRequest, Equal, Range, Filter, \ from pot_libs.common.components.query import PageRequest, Equal, Range, Filter, \
...@@ -55,7 +56,31 @@ async def post_list_alarm(req, body: PageRequest) -> ListAlarmResponse: ...@@ -55,7 +56,31 @@ async def post_list_alarm(req, body: PageRequest) -> ListAlarmResponse:
alarm_type = in_group.group alarm_type = in_group.group
elif in_group.field == 'importance': elif in_group.field == 'importance':
importance = in_group.group importance = in_group.group
return await list_alarm_service_new15(cid, point_id, start, end, cids = []
if req.json.get("product") == Product.AndianUManage.value:
proxy_id = req.json.get("proxy_id")
product = req.json.get("product")
user_id = jwt_user(req)
req_cids = req.json.get("cids")
# cids = await get_cids(user_id, product)
proxy_cids = await get_proxy_cids(user_id, product, proxy_id)
cids = list(set(req_cids) & set(proxy_cids))
if req.json.get("product") in [Product.RecognitionElectric.value,
Product.IntelligentU.value]:
if not cid:
product = req.json.get("product")
user_id = jwt_user(req)
cids = await get_cids(user_id, product)
else:
cids = [cid]
if not cids and cid:
cids = [cid]
if not cids:
raise BusinessException(message=f"你没有工厂权限")
return await list_alarm_service_new15(cids, point_id, start, end,
importance, page_size, page_num, importance, page_size, page_num,
alarm_type) alarm_type)
...@@ -127,7 +152,8 @@ async def post_list_alarm_bak(req, body: PageRequest) -> ListAlarmResponse: ...@@ -127,7 +152,8 @@ async def post_list_alarm_bak(req, body: PageRequest) -> ListAlarmResponse:
) )
query_body = EsQuery().query(page_request) query_body = EsQuery().query(page_request)
if not query_body.get("query"): if not query_body.get("query"):
query = {"bool": {"must_not": [{"terms": {"mode.keyword": ["scope"]}}]}} query = {
"bool": {"must_not": [{"terms": {"mode.keyword": ["scope"]}}]}}
query_body["query"] = query query_body["query"] = query
else: else:
must_not = [{"terms": {"mode.keyword": ["scope"]}}] must_not = [{"terms": {"mode.keyword": ["scope"]}}]
...@@ -206,7 +232,6 @@ async def post_new_list_alarm(req, body: NlaReq) -> ListAlarmResponse: ...@@ -206,7 +232,6 @@ async def post_new_list_alarm(req, body: NlaReq) -> ListAlarmResponse:
product) product)
@summary("小程序消息列表") @summary("小程序消息列表")
async def post_wx_list_alarm(req, body: WlaReq) -> ListAlarmResponse: async def post_wx_list_alarm(req, body: WlaReq) -> ListAlarmResponse:
# 1. 获取参数 # 1. 获取参数
......
...@@ -56,13 +56,14 @@ async def get_points(company_ids): ...@@ -56,13 +56,14 @@ async def get_points(company_ids):
async def get_points_new15(cids): async def get_points_new15(cids):
sql = "SELECT p.pid,p.cid,p.inlid FROM `point` p INNER JOIN monitor m " \ sql = "SELECT p.pid,p.cid,p.inlid,vc,ctnum " \
"on m.mtid=p.mtid where p.cid in %s and m.demolished=0;" "FROM `point` p INNER JOIN " \
"monitor m on m.mtid=p.mtid where p.cid in %s and m.demolished=0;"
async with MysqlUtil() as conn: async with MysqlUtil() as conn:
points = await conn.fetchall(sql, args=(cids,)) points = await conn.fetchall(sql, args=(cids,))
company_point_map = defaultdict(dict) company_point_map = defaultdict(dict)
for point in points: for point in points:
company_point_map[point["cid"]][point["pid"]] = points company_point_map[point["cid"]][point["pid"]] = point
return company_point_map return company_point_map
......
...@@ -175,61 +175,19 @@ async def alarm_summary(company_ids, start, end, date_type): ...@@ -175,61 +175,19 @@ async def alarm_summary(company_ids, start, end, date_type):
:param date_type: :param date_type:
:return: :return:
""" """
start_dt = datetime.strptime(start, "%Y-%m-%d %H:%M:%S") sql = f"""
end_dt = datetime.strptime(end, "%Y-%m-%d %H:%M:%S") select cid,count(*) count from point_1min_event
es_start_str = datetime(year=start_dt.year, month=start_dt.month, where cid in %s and event_mode = 'alarm' and event_datetime >= %s
day=start_dt.day).strftime( and event_datetime <= %s
"%Y-%m-%dT%H:%M:%S+08:00" group by cid
) """
es_end_str = end_dt.strftime("%Y-%m-%dT%H:%M:%S+08:00") log.info("alarm_summary sql={}".format(sql))
if date_type == "day": async with MysqlUtil() as conn:
_format = "yyyy-MM-dd HH:mm:ss" datas = await conn.fetchall(sql, args=(company_ids, start, end))
_min = start_dt.strftime("%Y-%m-%d %H:%M:%S") print(f"datas = {datas}")
_max = end_dt.strftime("%Y-%m-%d %H:%M:%S")
else:
# date_type == "month"
_format = "yyyy-MM-dd"
_min = start_dt.strftime("%Y-%m-%d")
_max = end_dt.strftime("%Y-%m-%d")
filter_list = [
{"range": {"datetime": {"gte": es_start_str, "lte": es_end_str, }}},
{"term": {"mode": "alarm"}},
]
filter_list.append({"terms": {"cid": company_ids}})
query_body = {
"query": {"bool": {"filter": filter_list}},
"size": 0,
"aggs": {
"cid_aggs": {
"terms": {"field": "cid", "size": 10000},
"aggs": {
"date_alarms": {
"date_histogram": {
"field": "datetime",
"order": {"_key": "desc"},
"min_doc_count": 1,
"interval": "day",
"format": "yyyy-MM-dd",
"time_zone": "+08:00",
}
}
},
}
},
}
log.info("alarm_summary query_body={}".format(query_body))
async with EsUtil() as es:
es_result = await es.search_origin(body=query_body,
index=constants.POINT_1MIN_EVENT)
print(f"es_result = {es_result}")
buckets = es_result["aggregations"]["cid_aggs"]["buckets"] or []
total_alarm_cnt, alarm_company_cnt = sum( total_alarm_cnt, alarm_company_cnt = sum(
[i["doc_count"] for i in buckets]), len(buckets) [i["count"] for i in datas]), len(datas)
cid_alarmcnt_list = [i["doc_count"] for i in buckets] cid_alarmcnt_list = [i["count"] for i in datas]
safe_run_map = await proxy_safe_run_info(company_ids, start_time_str=start, safe_run_map = await proxy_safe_run_info(company_ids, start_time_str=start,
end_time_str=end) end_time_str=end)
......
...@@ -48,6 +48,7 @@ from unify_api.modules.home_page.service.count_info_service import \ ...@@ -48,6 +48,7 @@ from unify_api.modules.home_page.service.count_info_service import \
safe_run_sdu, safe_run_sdu_new15 safe_run_sdu, safe_run_sdu_new15
from unify_api.modules.elec_charge.components.elec_charge_cps import \ from unify_api.modules.elec_charge.components.elec_charge_cps import \
ProductProxyReq ProductProxyReq
from unify_api.modules.users.procedures.jwt_user import jwt_user
@summary("代理版首页统计信息-安电U") @summary("代理版首页统计信息-安电U")
...@@ -55,7 +56,7 @@ async def post_count_info_proxy(req) -> CountInfoProxyResp: ...@@ -55,7 +56,7 @@ async def post_count_info_proxy(req) -> CountInfoProxyResp:
# 1. 获取cid_list # 1. 获取cid_list
host = req.host host = req.host
product = PRODUCT.get(host) product = PRODUCT.get(host)
user_id = req.ctx.user_id user_id = jwt_user(req)
proxy_id = req.json.get("proxy_id") proxy_id = req.json.get("proxy_id")
# cid_list = await get_cids(user_id, product) # cid_list = await get_cids(user_id, product)
cid_list = await get_proxy_cids(user_id, product, proxy_id) cid_list = await get_proxy_cids(user_id, product, proxy_id)
...@@ -105,7 +106,7 @@ async def post_security_level_count( ...@@ -105,7 +106,7 @@ async def post_security_level_count(
async def post_alarm_percentage_count( async def post_alarm_percentage_count(
request, body: ProxySecurityLevelCntReq request, body: ProxySecurityLevelCntReq
) -> ProxyAlarmPercentageCntResp: ) -> ProxyAlarmPercentageCntResp:
user_id = request.ctx.user_id user_id = jwt_user(request)
product = body.product product = body.product
req_cid = body.cid req_cid = body.cid
if not req_cid: if not req_cid:
...@@ -137,7 +138,7 @@ async def post_alarm_percentage_count( ...@@ -137,7 +138,7 @@ async def post_alarm_percentage_count(
@summary("代理版本首页地图数据") @summary("代理版本首页地图数据")
async def post_proxy_map_info(request, async def post_proxy_map_info(request,
body: ProxySecurityLevelCntReq) -> ProxyIndexMapResp: body: ProxySecurityLevelCntReq) -> ProxyIndexMapResp:
user_id = request.ctx.user_id user_id = jwt_user(request)
product = body.product product = body.product
req_cid = body.cid req_cid = body.cid
if not req_cid: if not req_cid:
......
...@@ -23,6 +23,7 @@ from unify_api.modules.home_page.components.security_info_cps import ( ...@@ -23,6 +23,7 @@ from unify_api.modules.home_page.components.security_info_cps import (
from unify_api.modules.home_page.procedures.security_info_pds import ( from unify_api.modules.home_page.procedures.security_info_pds import (
alarm_summary, alarm_count_info_new15, alarm_summary, alarm_count_info_new15,
) )
from unify_api.modules.users.procedures.jwt_user import jwt_user
@summary("获取首页今日或者近30天安全报警统计信息") @summary("获取首页今日或者近30天安全报警统计信息")
...@@ -164,7 +165,7 @@ async def post_alarm_summary(request, body: SecurityCommonReq) -> AlarmSummaryRe ...@@ -164,7 +165,7 @@ async def post_alarm_summary(request, body: SecurityCommonReq) -> AlarmSummaryRe
if not req_cids: if not req_cids:
raise BusinessException(message=f"暂无工厂") raise BusinessException(message=f"暂无工厂")
if product == Product.AndianUManage.value: if product == Product.AndianUManage.value:
user_id = request.ctx.user_id user_id = jwt_user(request)
# cids = await get_cids(user_id, product) # cids = await get_cids(user_id, product)
proxy_id = body.proxy_id proxy_id = body.proxy_id
cids = await get_proxy_cids(user_id, product, proxy_id) cids = await get_proxy_cids(user_id, product, proxy_id)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment