diff --git a/app/urls.py b/app/urls.py index 4c910a8..65cc07f 100644 --- a/app/urls.py +++ b/app/urls.py @@ -29,6 +29,7 @@ urlpatterns = [ path('warning_statistics/', views.WarningStatisticsModelViewSet.as_view({'post': 'create', "get": "list"})), path('get_warning_names/', views.WarningStatisticsModelViewSet.as_view({"get": "get_warning_names"})), + path('get_warning_types/', views.WarningStatisticsModelViewSet.as_view({"get": "get_warning_types"})), path('compute_config/', views.ComputeConfigModelViewSet.as_view({'post': 'create', "get": "list"})), path('files/', views.FilesModelViewSet.as_view({'post': 'create', "get": "list", "delete": "destroy"})), diff --git a/app/views.py b/app/views.py index 10b8367..cc34c76 100644 --- a/app/views.py +++ b/app/views.py @@ -1,3 +1,4 @@ +import datetime import json import logging import random @@ -1015,7 +1016,7 @@ class WarningStatisticsModelViewSet(ModelViewSet): device_suid = data.get("device_suid") warning_type = data.get("warning_type") start_trigger_time = data.get("start_time") - end_trigger_time = data.get("end_time") + # end_trigger_time = data.get("end_time") if warning_level: self.queryset = self.queryset.filter(warning_level=warning_level) @@ -1045,7 +1046,16 @@ class WarningStatisticsModelViewSet(ModelViewSet): self.queryset = self.queryset.filter(warning_type=warning_type) if start_trigger_time: - self.queryset = self.queryset.filter(trigger_time__in=[start_trigger_time, end_trigger_time]) + + try: + start_datetime = datetime.datetime.strptime(start_trigger_time, "%Y-%m-%d") + except Exception as e: + logger.error(f"查询告警时间格式报错{e},参数为:{start_trigger_time}") + return Response({"data": None, "msg": "时间格式不正确", "success": False, "status": 400}) + + end_datetime = start_datetime + datetime.timedelta(days=1) + + self.queryset = self.queryset.filter(trigger_time__range=[start_datetime, end_datetime]) if not (obj_id or obj_suid): return Response({ @@ -1074,10 +1084,20 @@ class WarningStatisticsModelViewSet(ModelViewSet): }) def get_warning_names(self, request, *args, **kwargs): - warning_names = self.queryset.values("warning_name").distinct() + warning_names = self.queryset.values_list("warning_name", flat=True).order_by("warning_name").distinct() + + return Response({ + "data": warning_names, + "msg": None, + "success": True, + "status": 200 + }) + + def get_warning_types(self, request, *args, **kwargs): + warning_types = self.queryset.values_list('warning_type', flat=True).order_by("warning_type").distinct() return Response({ - "data": [tmp.get("warning_name") for tmp in warning_names], + "data": warning_types, "msg": None, "success": True, "status": 200