diff --git a/apps/enm/filters.py b/apps/enm/filters.py index fee40d88..df1fa7c8 100644 --- a/apps/enm/filters.py +++ b/apps/enm/filters.py @@ -48,7 +48,7 @@ class MpointStatFilter(filters.FilterSet): query = self.data start_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S") start_year, start_month, start_day, start_hour = start_time.year, start_time.month, start_time.day, start_time.hour - if query["type"] in ["hour_s"]: + if query["type"] in ["hour_s", "hour"]: queryset = queryset.filter( Q(year__gt=start_year) | Q(year=start_year, month__gt=start_month) @@ -61,13 +61,19 @@ class MpointStatFilter(filters.FilterSet): queryset = queryset.filter(Q(year_s__gt=start_year) | Q(year_s=start_year, month_s__gte=start_month)) elif query["type"] in ["year_s"]: queryset = queryset.filter(Q(year_s__gte=start_year)) + elif query["type"] in ["day"]: + queryset = queryset.filter(Q(year__gt=start_year) | Q(year=start_year, month__gt=start_month) | Q(year=start_year, month=start_month, day__gte=start_day)) + elif query["type"] in ["month"]: + queryset = queryset.filter(Q(year__gt=start_year) | Q(year=start_year, month__gte=start_month)) + elif query["type"] in ["year"]: + queryset = queryset.filter(Q(year__gte=start_year)) return queryset def filter_end_time(self, queryset, name, value): query = self.data end_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S") end_year, end_month, end_day, end_hour = end_time.year, end_time.month, end_time.day, end_time.hour - if query["type"] in ["hour_s"]: + if query["type"] in ["hour_s", "hour"]: queryset = queryset.filter( Q(year__lt=end_year) | Q(year=end_year, month__lt=end_month) @@ -80,6 +86,12 @@ class MpointStatFilter(filters.FilterSet): queryset = queryset.filter(Q(year_s__lt=end_year) | Q(year_s=end_year, month_s__lte=end_month)) elif query["type"] in ["year_s"]: queryset = queryset.filter(Q(year_s__lte=end_year)) + elif query["type"] in ["day"]: + queryset = queryset.filter(Q(year__lt=end_year) | Q(year=end_year, month__lt=end_month) | Q(year=end_year, month=end_month, day__lte=end_day)) + elif query["type"] in ["month"]: + queryset = queryset.filter(Q(year__lt=end_year) | Q(year=end_year, month__lte=end_month)) + elif query["type"] in ["year"]: + queryset = queryset.filter(Q(year__lte=end_year)) return queryset diff --git a/apps/enm/views.py b/apps/enm/views.py index b670dce7..19d01ee9 100644 --- a/apps/enm/views.py +++ b/apps/enm/views.py @@ -160,6 +160,7 @@ class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, CustomListM select_related_fields = ["mpoint", "mpoint__ep_monitored", "mpoint__ep_belong", "mgroup", "mgroup__belong_dept"] filterset_class = MpointStatFilter ordering_fields = ['mpoint__report_sortstr', 'year', 'month', 'day', 'hour', 'year_s', 'month_s', 'day_s', 'mgroup__sort', 'create_time'] + ordering = ["mpoint__report_sortstr", "-year", "-month", "-day", "-hour", "-year_s", "-month_s", "-day_s", "mgroup__sort", "-create_time"] def perform_create(self, serializer): ins = serializer.save()