feat: mplog视图层转mplogx
This commit is contained in:
parent
1139bb6119
commit
0fdb230822
|
@ -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):
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue