feat: mplog视图层转mplogx
This commit is contained in:
parent
1139bb6119
commit
0fdb230822
|
@ -1,9 +1,10 @@
|
||||||
from apps.utils.serializers import CustomModelSerializer
|
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 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
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
|
from django.core.cache import cache
|
||||||
|
|
||||||
|
|
||||||
class MpointSerializer(CustomModelSerializer):
|
class MpointSerializer(CustomModelSerializer):
|
||||||
|
@ -15,11 +16,16 @@ class MpointSerializer(CustomModelSerializer):
|
||||||
ep_belong_name = serializers.CharField(source='ep_belong.name', read_only=True)
|
ep_belong_name = serializers.CharField(source='ep_belong.name', read_only=True)
|
||||||
material_name = serializers.CharField(source='material.name', read_only=True)
|
material_name = serializers.CharField(source='material.name', read_only=True)
|
||||||
formula = serializers.CharField(allow_blank=True, required=False)
|
formula = serializers.CharField(allow_blank=True, required=False)
|
||||||
|
last_data = serializers.SerializerMethodField()
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Mpoint
|
model = Mpoint
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
read_only_fields = EXCLUDE_FIELDS + ['belong_dept', 'cate']
|
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):
|
def validate(self, attrs):
|
||||||
if 'material' in attrs and attrs['material']:
|
if 'material' in attrs and attrs['material']:
|
||||||
attrs['cate'] = 'material'
|
attrs['cate'] = 'material'
|
||||||
|
@ -40,15 +46,20 @@ class MpointSerializer(CustomModelSerializer):
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
|
|
||||||
class MpLogSerializer(CustomModelSerializer):
|
# class MpLogSerializer(CustomModelSerializer):
|
||||||
mpoint_name = serializers.CharField(source='mpoint.name', read_only=True)
|
# mpoint_name = serializers.CharField(source='mpoint.name', read_only=True)
|
||||||
class Meta:
|
# class Meta:
|
||||||
model = MpLog
|
# model = MpLog
|
||||||
fields = '__all__'
|
# fields = '__all__'
|
||||||
read_only_fields = EXCLUDE_FIELDS + ['mpoint_name']
|
# read_only_fields = EXCLUDE_FIELDS + ['mpoint_name']
|
||||||
|
|
||||||
|
|
||||||
|
class MpLogxSerializer(CustomModelSerializer):
|
||||||
|
"""Serializer for EnvData model"""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = MpLogx
|
||||||
|
fields = "__all__"
|
||||||
|
|
||||||
|
|
||||||
class MpointStatSerializer(CustomModelSerializer):
|
class MpointStatSerializer(CustomModelSerializer):
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
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, EnStatViewSet, EnStat2ViewSet)
|
from apps.enm.views import (MpointViewSet, MpLogxViewSet, MpointStatViewSet, EnStatViewSet, EnStat2ViewSet)
|
||||||
|
|
||||||
API_BASE_URL = 'api/enm/'
|
API_BASE_URL = 'api/enm/'
|
||||||
HTML_BASE_URL = 'enm/'
|
HTML_BASE_URL = 'enm/'
|
||||||
|
|
||||||
router = DefaultRouter()
|
router = DefaultRouter()
|
||||||
router.register('mpoint', MpointViewSet, basename='mpoint')
|
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('mpointstat', MpointStatViewSet, basename='mpointstat')
|
||||||
router.register('enstat', EnStatViewSet, basename='enstat')
|
router.register('enstat', EnStatViewSet, basename='enstat')
|
||||||
router.register('enstat2', EnStat2ViewSet, basename='enstat2')
|
router.register('enstat2', EnStat2ViewSet, basename='enstat2')
|
||||||
|
|
|
@ -1,17 +1,18 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.conf import settings
|
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 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, ReCalSerializer)
|
from apps.enm.serializers import (MpointSerializer, MpLogxSerializer, MpointStatSerializer, EnStatSerializer, EnStat2Serializer, ReCalSerializer)
|
||||||
from apps.enm.filters import MpointStatFilter, EnStatFilter, EnStat2Filter
|
from apps.enm.filters import MpointStatFilter, EnStatFilter, EnStat2Filter
|
||||||
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.serializers import Serializer
|
from rest_framework.serializers import Serializer
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from apps.enm.tasks import cal_mpointstats_duration
|
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):
|
class MpointViewSet(CustomModelViewSet):
|
||||||
"""
|
"""
|
||||||
|
@ -22,11 +23,21 @@ class MpointViewSet(CustomModelViewSet):
|
||||||
queryset = Mpoint.objects.all()
|
queryset = Mpoint.objects.all()
|
||||||
serializer_class = MpointSerializer
|
serializer_class = MpointSerializer
|
||||||
select_related_fields = ['create_by', 'belong_dept', 'ep_monitored', 'ep_belong', 'mgroup']
|
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']
|
filterset_fields = ['belong_dept', 'ep_monitored', 'ep_belong', 'mgroup', 'is_auto', 'is_all', 'mgroup__name', 'val_type', 'enabled']
|
||||||
search_fields = ['number', 'code']
|
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):
|
def king_sync(self, request, *args, **kwargs):
|
||||||
"""同步亚控采集点
|
"""同步亚控采集点
|
||||||
|
|
||||||
|
@ -36,17 +47,33 @@ class MpointViewSet(CustomModelViewSet):
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
|
||||||
class MpLogViewSet(ListModelMixin, CustomGenericViewSet):
|
# class MpLogViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
"""
|
# """
|
||||||
list:测点原始记录
|
# 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': '*'}
|
perms_map = {'get': '*'}
|
||||||
queryset = MpLog.objects.all()
|
queryset = MpLogx.objects.all()
|
||||||
serializer_class = MpLogSerializer
|
serializer_class = MpLogxSerializer
|
||||||
select_related_fields = ['mpoint']
|
filterset_fields = {
|
||||||
filterset_fields = ['mpoint', 'mpoint__mgroup', 'mpoint__mgroup__belong_dept']
|
"timex": ['exact', 'gte', 'lte', 'year', 'month', 'day'],
|
||||||
|
"mpoint": ['exact'],
|
||||||
|
}
|
||||||
|
ordering_fields = ['timex']
|
||||||
|
ordering = ['-timex']
|
||||||
|
|
||||||
|
|
||||||
class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, ListModelMixin, CustomGenericViewSet):
|
class MpointStatViewSet(BulkCreateModelMixin, BulkDestroyModelMixin, ListModelMixin, CustomGenericViewSet):
|
||||||
|
|
Loading…
Reference in New Issue