ソースを参照

修改AI查询Service

zhangdongming 2 年 前
コミット
8da7dfccba
1 ファイル変更24 行追加22 行削除
  1. 24 22
      Service/EquipmentInfoService.py

+ 24 - 22
Service/EquipmentInfoService.py

@@ -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)