feat: 增加能耗统计记录表

This commit is contained in:
caoqianming 2023-07-10 13:45:22 +08:00
parent a49fc7abe9
commit caaeb32817
4 changed files with 46 additions and 9 deletions

View File

@ -1,5 +1,5 @@
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from apps.enm.models import MpointStat from apps.enm.models import MpointStat, EnStat
class MpointStatFilter(filters.FilterSet): class MpointStatFilter(filters.FilterSet):
has_create_by = filters.BooleanFilter(method='filter_has_create_by') has_create_by = filters.BooleanFilter(method='filter_has_create_by')
@ -17,7 +17,9 @@ class MpointStatFilter(filters.FilterSet):
"year": ["exact"], "year": ["exact"],
"day_s": ["exact"], "day_s": ["exact"],
"month_s": ["exact"], "month_s": ["exact"],
"year_s": ["exact"] "year_s": ["exact"],
"create_by": ["exact"],
"type": ["exact"]
} }
def filter_has_create_by(self, queryset, name, value): def filter_has_create_by(self, queryset, name, value):
@ -25,4 +27,18 @@ class MpointStatFilter(filters.FilterSet):
queryset = queryset.exclude(create_by=None) queryset = queryset.exclude(create_by=None)
else: else:
queryset = queryset.filter(create_by=None) queryset = queryset.filter(create_by=None)
return queryset return queryset
class EnStatFilter(filters.FilterSet):
class Meta:
model = EnStat
fields = {
"mgroup": ["exact"],
"mgroup__belong_dept": ["exact"],
"type": ["exact"],
"sflog": ["exact"],
"day_s": ["exact"],
"month_s": ["exact"],
"year_s": ["exact"]
}

View File

@ -1,5 +1,5 @@
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from apps.enm.models import Mpoint, MpLog, MpointStat from apps.enm.models import Mpoint, MpLog, MpointStat, EnStat
from apps.utils.constants import EXCLUDE_FIELDS from apps.utils.constants import EXCLUDE_FIELDS
from rest_framework import serializers from rest_framework import serializers
from apps.mtm.models import Mgroup from apps.mtm.models import Mgroup
@ -68,4 +68,11 @@ class MpointStatSerializer(CustomModelSerializer):
# if not self.check_required_keys(attrs, keys[ind+1:]): # if not self.check_required_keys(attrs, keys[ind+1:]):
# raise ParseError('缺少数据') # raise ParseError('缺少数据')
# attrs['type'] = key # attrs['type'] = key
return super().validate(attrs) return super().validate(attrs)
class EnStatSerializer(CustomModelSerializer):
mgroup_name = serializers.CharField(source='mgroup.name', read_only=True)
class Meta:
model = EnStat
fields = '__all__'

View File

@ -1,6 +1,6 @@
from django.urls import path, include from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from apps.enm.views import (MpointViewSet, MpLogViewSet, MpointStatViewSet) from apps.enm.views import (MpointViewSet, MpLogViewSet, MpointStatViewSet, EnStatViewSet)
API_BASE_URL = 'api/enm/' API_BASE_URL = 'api/enm/'
HTML_BASE_URL = 'enm/' HTML_BASE_URL = 'enm/'
@ -9,6 +9,7 @@ router = DefaultRouter()
router.register('mpoint', MpointViewSet, basename='mpoint') router.register('mpoint', MpointViewSet, basename='mpoint')
router.register('mplog', MpLogViewSet, basename='mplog') router.register('mplog', MpLogViewSet, basename='mplog')
router.register('mpointstat', MpointStatViewSet, basename='mpointstat') router.register('mpointstat', MpointStatViewSet, basename='mpointstat')
router.register('enstat', EnStatViewSet, basename='enstat')
urlpatterns = [ urlpatterns = [
path(API_BASE_URL, include(router.urls)), path(API_BASE_URL, include(router.urls)),
] ]

View File

@ -1,10 +1,10 @@
from django.shortcuts import render from django.shortcuts import render
from apps.enm.models import Mpoint, MpLog, MpointStat from apps.enm.models import Mpoint, MpLog, MpointStat, EnStat
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) from apps.enm.serializers import (MpointSerializer, MpLogSerializer, MpointStatSerializer, EnStatSerializer)
from apps.enm.filters import MpointStatFilter from apps.enm.filters import MpointStatFilter, EnStatFilter
from apps.enm.tasks import cal_mpointstat_manual from apps.enm.tasks import cal_mpointstat_manual
@ -54,3 +54,16 @@ class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, ListModelMi
mpoint, year_s, month_s, day_s = instance.mpoint, instance.year_s, instance.month_s, instance.day_s mpoint, year_s, month_s, day_s = instance.mpoint, instance.year_s, instance.month_s, instance.day_s
instance.delete() instance.delete()
cal_mpointstat_manual(mpoint.id, year_s, month_s, day_s) cal_mpointstat_manual(mpoint.id, year_s, month_s, day_s)
class EnStatViewSet(ListModelMixin, CustomGenericViewSet):
"""
list:能耗统计记录
能耗统计记录
"""
perms_map = {'get': '*'}
queryset = EnStat.objects.all()
serializer_class = EnStatSerializer
select_related_fields = ['mgroup']
filterset_class = EnStatFilter