feat: mpointstat filterset 支持hour,day,month,year

This commit is contained in:
caoqianming 2024-11-12 15:26:02 +08:00
parent 6698e38d32
commit c1d140a082
2 changed files with 15 additions and 2 deletions

View File

@ -48,7 +48,7 @@ class MpointStatFilter(filters.FilterSet):
query = self.data query = self.data
start_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S") 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 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( queryset = queryset.filter(
Q(year__gt=start_year) Q(year__gt=start_year)
| Q(year=start_year, month__gt=start_month) | 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)) 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"]: elif query["type"] in ["year_s"]:
queryset = queryset.filter(Q(year_s__gte=start_year)) 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 return queryset
def filter_end_time(self, queryset, name, value): def filter_end_time(self, queryset, name, value):
query = self.data query = self.data
end_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S") 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 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( queryset = queryset.filter(
Q(year__lt=end_year) Q(year__lt=end_year)
| Q(year=end_year, month__lt=end_month) | 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)) 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"]: elif query["type"] in ["year_s"]:
queryset = queryset.filter(Q(year_s__lte=end_year)) 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 return queryset

View File

@ -160,6 +160,7 @@ class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, CustomListM
select_related_fields = ["mpoint", "mpoint__ep_monitored", "mpoint__ep_belong", "mgroup", "mgroup__belong_dept"] select_related_fields = ["mpoint", "mpoint__ep_monitored", "mpoint__ep_belong", "mgroup", "mgroup__belong_dept"]
filterset_class = MpointStatFilter filterset_class = MpointStatFilter
ordering_fields = ['mpoint__report_sortstr', 'year', 'month', 'day', 'hour', 'year_s', 'month_s', 'day_s', 'mgroup__sort', 'create_time'] 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): def perform_create(self, serializer):
ins = serializer.save() ins = serializer.save()