From f5f0675f91b9fded69423ce387729c8918436832 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 28 Aug 2023 09:42:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0recal=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/enm/serializers.py | 7 ++++++- apps/enm/views.py | 16 +++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/apps/enm/serializers.py b/apps/enm/serializers.py index e544480d..4d85754d 100644 --- a/apps/enm/serializers.py +++ b/apps/enm/serializers.py @@ -140,4 +140,9 @@ class EnStat2Serializer(CustomModelSerializer): ret_one_val = ret[key] if isinstance(ret_one_val, float): ret[key] = "{:.2f}".format(round(ret_one_val, 2)) - return ret \ No newline at end of file + return ret + + +class ReCalSerializer(serializers.Serializer): + start_time = serializers.DateTimeField(label="开始时间") + end_time = serializers.DateTimeField(label="结束时间") \ No newline at end of file diff --git a/apps/enm/views.py b/apps/enm/views.py index 66252596..396981dd 100644 --- a/apps/enm/views.py +++ b/apps/enm/views.py @@ -3,10 +3,12 @@ from apps.enm.models import Mpoint, MpLog, MpointStat, EnStat, EnStat2 from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet from rest_framework.mixins import ListModelMixin from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin -from apps.enm.serializers import (MpointSerializer, MpLogSerializer, MpointStatSerializer, EnStatSerializer, EnStat2Serializer) +from apps.enm.serializers import (MpointSerializer, MpLogSerializer, MpointStatSerializer, EnStatSerializer, EnStat2Serializer, ReCalSerializer) from apps.enm.filters import MpointStatFilter, EnStatFilter from apps.enm.tasks import cal_mpointstat_manual from rest_framework.response import Response +from rest_framework.decorators import action +from apps.enm.tasks import cal_mpointstats_duration class MpointViewSet(CustomModelViewSet): """ @@ -55,6 +57,18 @@ class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, ListModelMi instance.delete() cal_mpointstat_manual.delay(mpoint.id, sflog.id, mgroup.id, None, None, None, None, year_s, month_s, day_s) + @action(methods=['post'], detail=False, perms_map={'post': 'mpointstat.create'}, serializer_class=ReCalSerializer) + def recal(self, request, *args, **kwargs): + """重新运行某段时间的enm计算 + + 重新运行某段时间的enm计算 + """ + sr = ReCalSerializer(data=request.data) + sr.is_valid(raise_exception=True) + vdata = sr.validated_data + task = cal_mpointstats_duration.delay(vdata['start_time'], vdata['end_time']) + return Response({'task_id': task.task_id}) + class EnStatViewSet(ListModelMixin, CustomGenericViewSet): """