Преглед изворни кода

APP消息列表优化标签筛选

zhangdongming пре 2 година
родитељ
комит
957b581051
1 измењених фајлова са 22 додато и 3 уклоњено
  1. 22 3
      Service/EquipmentInfoService.py

+ 22 - 3
Service/EquipmentInfoService.py

@@ -11,7 +11,7 @@ import itertools
 import logging
 import logging
 import time
 import time
 
 
-from django.db.models import Value, CharField
+from django.db.models import Value, CharField, Q
 
 
 from Model.models import EquipmentInfoMonday, EquipmentInfoTuesday, EquipmentInfoWednesday, EquipmentInfoThursday, \
 from Model.models import EquipmentInfoMonday, EquipmentInfoTuesday, EquipmentInfoWednesday, EquipmentInfoThursday, \
     EquipmentInfoFriday, EquipmentInfoSaturday, EquipmentInfoSunday
     EquipmentInfoFriday, EquipmentInfoSaturday, EquipmentInfoSunday
@@ -169,9 +169,10 @@ class EquipmentInfoService:
         if event_type:
         if event_type:
             # 多类型查询
             # 多类型查询
             eventTypeList = cls.get_comb_event_type(event_type)
             eventTypeList = cls.get_comb_event_type(event_type)
-            eventTypeList += cls.get_combo_type_bins(event_type)
+            # eventTypeList += cls.get_combo_type_bins(event_type)
             eventTypeList = list(set(eventTypeList))
             eventTypeList = list(set(eventTypeList))
-            qs = qs.filter(event_type__in=eventTypeList)
+            tags = cls.get_event_tag(event_type)
+            qs = qs.filter(Q(event_type__in=eventTypeList) | Q(event_tag__regex=tags))
         if start_time and end_time:
         if start_time and end_time:
             qs = qs.filter(event_time__range=(start_time, end_time))
             qs = qs.filter(event_time__range=(start_time, end_time))
         else:
         else:
@@ -424,3 +425,21 @@ class EquipmentInfoService:
         except Exception as e:
         except Exception as e:
             print('推送错误异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             print('推送错误异常,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return res_list
             return res_list
+
+    @staticmethod
+    def get_event_tag(event_type):
+        """
+        获取标签用于筛选推送消息
+        """
+        if ',' in event_type:
+            tags = ''
+            res_list = event_type.split(',')
+            tag_size = len(res_list)
+            for i, item in enumerate(res_list):
+                tags += ',' + str(item) + ','
+                if i < (tag_size - 1):
+                    tags += '|'
+            return tags
+
+        else:
+            return ',' + str(event_type) + ','