|
@@ -7,9 +7,10 @@
|
|
|
@Software: PyCharm
|
|
|
"""
|
|
|
import datetime
|
|
|
+import itertools
|
|
|
import logging
|
|
|
import time
|
|
|
-import itertools
|
|
|
+
|
|
|
from django.db.models import Value, CharField
|
|
|
|
|
|
from Model.models import EquipmentInfoMonday, EquipmentInfoTuesday, EquipmentInfoWednesday, EquipmentInfoThursday, \
|
|
@@ -162,19 +163,15 @@ class EquipmentInfoService:
|
|
|
# 获取七天前时间戳
|
|
|
seven_days_before_time = LocalDateTimeUtil.get_before_days_timestamp(now_time, 7)
|
|
|
# 默认查询当前表event_time大于七天前时间
|
|
|
+ qs = qs.filter(event_time__gt=seven_days_before_time)
|
|
|
if user_id:
|
|
|
qs = qs.filter(device_user_id=user_id)
|
|
|
if event_type:
|
|
|
# 多类型查询
|
|
|
- if ',' in event_type:
|
|
|
- eventTypeList = cls.get_comb_event_type(event_type)
|
|
|
- qs = qs.filter(event_type__in=eventTypeList)
|
|
|
- else:
|
|
|
- qs = qs.filter(event_type=event_type)
|
|
|
+ eventTypeList = cls.get_comb_event_type(event_type)
|
|
|
+ qs = qs.filter(event_type__in=eventTypeList)
|
|
|
if start_time and end_time:
|
|
|
- qs = qs.filter(event_time__range=(int(start_time), int(end_time)))
|
|
|
- else:
|
|
|
- qs = qs.filter(event_time__range=(seven_days_before_time, now_time))
|
|
|
+ qs = qs.filter(event_time__range=(start_time, end_time))
|
|
|
if uid_list:
|
|
|
uid_list = uid_list.split(',')
|
|
|
qs = qs.filter(device_uid__in=uid_list)
|
|
@@ -229,21 +226,26 @@ class EquipmentInfoService:
|
|
|
@param event_type: 消息类型
|
|
|
@return: event_type_list 消息类型数组
|
|
|
"""
|
|
|
- event_type_list = event_type.split(',')
|
|
|
- event_type_list = [int(i.strip()) for i in event_type_list]
|
|
|
+ if ',' in event_type:
|
|
|
+ event_type_list = event_type.split(',')
|
|
|
+ event_type_list = [int(i.strip()) for i in event_type_list]
|
|
|
+ else:
|
|
|
+ event_type_list = [int(event_type)]
|
|
|
ai_event_type_list = []
|
|
|
- for key, val in enumerate(event_type_list):
|
|
|
+ normal_event_type_list = []
|
|
|
+ for val in event_type_list:
|
|
|
if val <= 4: # 分离出ai类型,以便后续组合ai标签,目前只存在4个ai类型1,2,3,4
|
|
|
ai_event_type_list.append(val)
|
|
|
- del (event_type_list[key])
|
|
|
+ else:
|
|
|
+ normal_event_type_list.append(val)
|
|
|
if len(ai_event_type_list) < 1:
|
|
|
- return event_type_list
|
|
|
+ return normal_event_type_list
|
|
|
ai_event_type_list.sort()
|
|
|
- type = [1, 2, 3, 4] # AI目前所有的标签,1人,2车,3宠物,4包裹,后续有新类型需要这里加, 后续会优化,存在表里,包裹存对应的aws标签
|
|
|
+ ai_type = [1, 2, 3, 4] # AI目前所有的标签,1人,2车,3宠物,4包裹,后续有新类型需要这里加, 后续会优化,存在表里,包裹存对应的aws标签
|
|
|
comb_ai_event_type = []
|
|
|
seen = set()
|
|
|
- for i in range(1, len(type) + 1): # 计算所有组合,如[1, 2, 3, 4], 4取1,4取2,4取3,4取4
|
|
|
- for s in itertools.combinations(type, i):
|
|
|
+ for i in range(1, len(ai_type) + 1): # 计算所有组合,如[1, 2, 3, 4], 4取1,4取2,4取3,4取4
|
|
|
+ for s in itertools.combinations(ai_type, i):
|
|
|
if s not in seen: # 去除重复项, 如a=[1,2,3,4,4],会有两个[1,2,3,4,4],[1,2,3,4,4]的组合
|
|
|
seen.add(s)
|
|
|
s_list = list(s)
|
|
@@ -256,8 +258,8 @@ class EquipmentInfoService:
|
|
|
for val in comb_ai_event_type: # 组合ai类型组合,如[[2,3],[1,3]] -> [23, 13]
|
|
|
val = ''.join(val)
|
|
|
regroup_list.append(int(val))
|
|
|
- event_type_list = regroup_list + event_type_list # 加上普通移动消息类型
|
|
|
- return event_type_list
|
|
|
+ group_list = regroup_list + normal_event_type_list # 加上普通移动消息类型
|
|
|
+ return group_list
|
|
|
|
|
|
@classmethod
|
|
|
def get_all_comb_event_type(cls):
|
|
@@ -265,10 +267,10 @@ class EquipmentInfoService:
|
|
|
计算ai消息类型全组合
|
|
|
@return: event_type_list ai所有消息类型数组
|
|
|
"""
|
|
|
- type = [1, 2, 3, 4] # AI目前所有的标签,1人,2车,3宠物,4包裹,后续有新类型需要这里加, 后续会优化,存在表里,包裹存对应的aws标签
|
|
|
+ ai_type = [1, 2, 3, 4] # AI目前所有的标签,1人,2车,3宠物,4包裹,后续有新类型需要这里加, 后续会优化,存在表里,包裹存对应的aws标签
|
|
|
comb_ai_event_type = []
|
|
|
- for i in range(1, len(type) + 1): # 计算所有组合,如[1, 2, 3, 4], 4取1,4取2,4取3,4取4
|
|
|
- for s in itertools.combinations(type, i):
|
|
|
+ for i in range(1, len(ai_type) + 1): # 计算所有组合,如[1, 2, 3, 4], 4取1,4取2,4取3,4取4
|
|
|
+ for s in itertools.combinations(ai_type, i):
|
|
|
s_list = list(s)
|
|
|
s_list = [str(v) for v in s_list]
|
|
|
comb_ai_event_type.append(s_list)
|