feat: mplog视图层转mplogx

This commit is contained in:
caoqianming 2024-04-11 10:58:33 +08:00
parent 1139bb6119
commit 0fdb230822
3 changed files with 61 additions and 23 deletions

View File

@ -1,9 +1,10 @@
from apps.utils.serializers import CustomModelSerializer
from apps.enm.models import Mpoint, MpLog, MpointStat, EnStat, EnStat2
from apps.enm.models import Mpoint, MpointStat, EnStat, EnStat2, MpLogx
from apps.utils.constants import EXCLUDE_FIELDS
from rest_framework import serializers
from apps.mtm.models import Mgroup
from rest_framework.exceptions import ParseError
from django.core.cache import cache
class MpointSerializer(CustomModelSerializer):
@ -15,11 +16,16 @@ class MpointSerializer(CustomModelSerializer):
ep_belong_name = serializers.CharField(source='ep_belong.name', read_only=True)
material_name = serializers.CharField(source='material.name', read_only=True)
formula = serializers.CharField(allow_blank=True, required=False)
last_data = serializers.SerializerMethodField()
class Meta:
model = Mpoint
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['belong_dept', 'cate']
def get_last_data(self, obj):
last_data = cache.get(f'mpoint_{obj.code}', None)
return {'last_val': last_data.get('last_val', None) if last_data else None, 'last_timex': last_data.get('last_timex', None) if last_data else None}
def validate(self, attrs):
if 'material' in attrs and attrs['material']:
attrs['cate'] = 'material'
@ -40,15 +46,20 @@ class MpointSerializer(CustomModelSerializer):
return attrs
class MpLogSerializer(CustomModelSerializer):
mpoint_name = serializers.CharField(source='mpoint.name', read_only=True)
class Meta:
model = MpLog
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['mpoint_name']
# class MpLogSerializer(CustomModelSerializer):
# mpoint_name = serializers.CharField(source='mpoint.name', read_only=True)
# class Meta:
# model = MpLog
# fields = '__all__'
# read_only_fields = EXCLUDE_FIELDS + ['mpoint_name']
class MpLogxSerializer(CustomModelSerializer):
"""Serializer for EnvData model"""
class Meta:
model = MpLogx
fields = "__all__"
class MpointStatSerializer(CustomModelSerializer):

View File

@ -1,13 +1,13 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from apps.enm.views import (MpointViewSet, MpLogViewSet, MpointStatViewSet, EnStatViewSet, EnStat2ViewSet)
from apps.enm.views import (MpointViewSet, MpLogxViewSet, MpointStatViewSet, EnStatViewSet, EnStat2ViewSet)
API_BASE_URL = 'api/enm/'
HTML_BASE_URL = 'enm/'
router = DefaultRouter()
router.register('mpoint', MpointViewSet, basename='mpoint')
router.register('mplog', MpLogViewSet, basename='mplog')
router.register('mplogx', MpLogxViewSet, basename='mplogx')
router.register('mpointstat', MpointStatViewSet, basename='mpointstat')
router.register('enstat', EnStatViewSet, basename='enstat')
router.register('enstat2', EnStat2ViewSet, basename='enstat2')

View File

@ -1,17 +1,18 @@
from django.shortcuts import render
from django.conf import settings
from apps.enm.models import Mpoint, MpLog, MpointStat, EnStat, EnStat2
from apps.enm.models import Mpoint, MpointStat, EnStat, EnStat2, MpLogx
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, ReCalSerializer)
from apps.enm.serializers import (MpointSerializer, MpLogxSerializer, MpointStatSerializer, EnStatSerializer, EnStat2Serializer, ReCalSerializer)
from apps.enm.filters import MpointStatFilter, EnStatFilter, EnStat2Filter
from apps.enm.tasks import cal_mpointstat_manual
from rest_framework.response import Response
from rest_framework.serializers import Serializer
from rest_framework.decorators import action
from apps.enm.tasks import cal_mpointstats_duration
from apps.enm.services import king_sync
from apps.enm.services import king_sync, cache_mpoints
from django.db import transaction
class MpointViewSet(CustomModelViewSet):
"""
@ -22,11 +23,21 @@ class MpointViewSet(CustomModelViewSet):
queryset = Mpoint.objects.all()
serializer_class = MpointSerializer
select_related_fields = ['create_by', 'belong_dept', 'ep_monitored', 'ep_belong', 'mgroup']
filterset_fields = ['belong_dept', 'ep_monitored', 'ep_belong', 'mgroup', 'is_auto', 'is_all', 'mgroup__name']
search_fields = ['number', 'code']
filterset_fields = ['belong_dept', 'ep_monitored', 'ep_belong', 'mgroup', 'is_auto', 'is_all', 'mgroup__name', 'val_type', 'enabled']
search_fields = ['name', 'code']
ordering = ['-create_time', 'name', 'code']
@transaction.atomic
def perform_create(self, serializer):
instance = serializer.save()
cache_mpoints(instance.id)
@transaction.atomic
def perform_update(self, serializer):
instance = serializer.save()
cache_mpoints(instance.id)
@action(methods=['post'], detail=False, perms_map={'post': 'mpoint.sync'}, serializer_class=Serializer)
@action(methods=['post'], detail=False, perms_map={'post': 'mpoint.create'}, serializer_class=Serializer)
def king_sync(self, request, *args, **kwargs):
"""同步亚控采集点
@ -36,17 +47,33 @@ class MpointViewSet(CustomModelViewSet):
return Response()
class MpLogViewSet(ListModelMixin, CustomGenericViewSet):
"""
list:测点原始记录
# class MpLogViewSet(ListModelMixin, CustomGenericViewSet):
# """
# list:测点原始记录
测点原始记录
# 测点原始记录
# """
# perms_map = {'get': '*'}
# queryset = MpLog.objects.all()
# serializer_class = MpLogSerializer
# select_related_fields = ['mpoint']
# filterset_fields = ['mpoint', 'mpoint__mgroup', 'mpoint__mgroup__belong_dept']
class MpLogxViewSet(ListModelMixin, CustomGenericViewSet):
"""
list: 测点采集数据
测点采集数据
"""
perms_map = {'get': '*'}
queryset = MpLog.objects.all()
serializer_class = MpLogSerializer
select_related_fields = ['mpoint']
filterset_fields = ['mpoint', 'mpoint__mgroup', 'mpoint__mgroup__belong_dept']
queryset = MpLogx.objects.all()
serializer_class = MpLogxSerializer
filterset_fields = {
"timex": ['exact', 'gte', 'lte', 'year', 'month', 'day'],
"mpoint": ['exact'],
}
ordering_fields = ['timex']
ordering = ['-timex']
class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, ListModelMixin, CustomGenericViewSet):