Ver Fonte

优化查询消息推送列表

zhangdongming há 1 ano atrás
pai
commit
ccd64441b1
1 ficheiros alterados com 19 adições e 5 exclusões
  1. 19 5
      Service/EquipmentInfoService.py

+ 19 - 5
Service/EquipmentInfoService.py

@@ -7,6 +7,7 @@
 @Software: PyCharm
 """
 import itertools
+from Ansjer.config import LOGGER
 from django.db.models import Value, CharField, Q
 
 from Model.models import EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5, \
@@ -453,7 +454,8 @@ class EquipmentInfoService:
                 equipment_info_21, equipment_info_22, equipment_info_23, equipment_info_24, equipment_info_25,
                 equipment_info_26, equipment_info_27, equipment_info_28, equipment_info_29, equipment_info_30,
                 equipment_info_31, equipment_info_32, equipment_info_33, equipment_info_34, equipment_info_35,
-                equipment_info_36, equipment_info_37, equipment_info_38, equipment_info_39, equipment_info_40
+                equipment_info_36, equipment_info_37, equipment_info_38, equipment_info_39, equipment_info_40,
+                all=True
             )
 
             count = equipment_info_union.count()
@@ -554,10 +556,21 @@ class EquipmentInfoService:
         @param kwargs:
         @return: count
         """
-        count = 0
-        for equipment_info_model in EQUIPMENT_INFO_MODEL_LIST:
-            count += equipment_info_model.objects.filter(**kwargs).count()
-        return count
+        try:
+            combined_queryset = None
+
+            for equipment_info_model in EQUIPMENT_INFO_MODEL_LIST:
+                queryset = equipment_info_model.objects.filter(**kwargs).values('id')
+
+                if combined_queryset is None:
+                    combined_queryset = queryset
+                else:
+                    combined_queryset = combined_queryset.union(queryset, all=True)
+
+            count = combined_queryset.count() if combined_queryset is not None else 0
+            return count
+        except Exception as e:
+            LOGGER.error(f'获取未读消息异常:{repr(e)}')
 
     @classmethod
     def get_equipment_info(cls, **kwargs):
@@ -575,3 +588,4 @@ class EquipmentInfoService:
         equipment_info_union = cls.get_equipment_info_union_page(equipment_info_union, 1, 10)
         count = equipment_info_union.count()
         return equipment_info_union, count
+