feat: 增加recal接口

This commit is contained in:
caoqianming 2023-08-28 09:42:27 +08:00
parent c0dd70982a
commit f5f0675f91
2 changed files with 21 additions and 2 deletions

View File

@ -140,4 +140,9 @@ class EnStat2Serializer(CustomModelSerializer):
ret_one_val = ret[key] ret_one_val = ret[key]
if isinstance(ret_one_val, float): if isinstance(ret_one_val, float):
ret[key] = "{:.2f}".format(round(ret_one_val, 2)) ret[key] = "{:.2f}".format(round(ret_one_val, 2))
return ret return ret
class ReCalSerializer(serializers.Serializer):
start_time = serializers.DateTimeField(label="开始时间")
end_time = serializers.DateTimeField(label="结束时间")

View File

@ -3,10 +3,12 @@ from apps.enm.models import Mpoint, MpLog, MpointStat, EnStat, EnStat2
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
from rest_framework.mixins import ListModelMixin from rest_framework.mixins import ListModelMixin
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin 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.filters import MpointStatFilter, EnStatFilter
from apps.enm.tasks import cal_mpointstat_manual from apps.enm.tasks import cal_mpointstat_manual
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.decorators import action
from apps.enm.tasks import cal_mpointstats_duration
class MpointViewSet(CustomModelViewSet): class MpointViewSet(CustomModelViewSet):
""" """
@ -55,6 +57,18 @@ class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, ListModelMi
instance.delete() instance.delete()
cal_mpointstat_manual.delay(mpoint.id, sflog.id, mgroup.id, None, None, None, None, year_s, month_s, day_s) 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): class EnStatViewSet(ListModelMixin, CustomGenericViewSet):
""" """