feat: em返回数据可携带环保数据信息
This commit is contained in:
parent
d4bf7a7e19
commit
2e15c8ff31
|
@ -1,4 +1,7 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
from drf_yasg.utils import swagger_auto_schema
|
||||||
|
from drf_yasg import openapi
|
||||||
|
from django.utils import timezone
|
||||||
from apps.em.models import Equipment, EcheckRecord, EInspect, Ecate
|
from apps.em.models import Equipment, EcheckRecord, EInspect, Ecate
|
||||||
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
||||||
from apps.em.serializers import EquipmentSerializer, EcheckRecordSerializer, EInspectSerializer, EcateSerializer
|
from apps.em.serializers import EquipmentSerializer, EcheckRecordSerializer, EInspectSerializer, EcateSerializer
|
||||||
|
@ -12,7 +15,7 @@ from django.db import transaction
|
||||||
from apps.em.services import daoru_equipment
|
from apps.em.services import daoru_equipment
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.models import Count, Case, When, IntegerField
|
from django.db.models import Count, Case, When, IntegerField, Max
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
@ -62,6 +65,30 @@ class EquipmentViewSet(CustomModelViewSet):
|
||||||
daoru_equipment(settings.BASE_DIR + request.data.get('path', ''))
|
daoru_equipment(settings.BASE_DIR + request.data.get('path', ''))
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
@swagger_auto_schema(manual_parameters=[
|
||||||
|
openapi.Parameter(name="has_envdata", in_=openapi.IN_QUERY, description="Include envdata in the response",
|
||||||
|
type=openapi.TYPE_STRING, enum=["yes", "no"], required=False),
|
||||||
|
openapi.Parameter(name="query", in_=openapi.IN_QUERY, description="定制返回数据",
|
||||||
|
type=openapi.TYPE_STRING, required=False),
|
||||||
|
])
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
return super().list(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def add_info_for_list(self, data):
|
||||||
|
if self.request.query_params.get('has_envdata', 'no') == 'yes':
|
||||||
|
now = timezone.now()
|
||||||
|
now_10_before = now - timezone.timedelta(minutes=10)
|
||||||
|
data_ids = [item['id'] for item in data]
|
||||||
|
from apps.enp.models import EnvData
|
||||||
|
from apps.enp.serializers import EnvDataSerializer
|
||||||
|
last_envdata_qs = EnvData.objects.filter(equipment_id__in=data_ids, time__gte=now_10_before, time__lte=now).values('equipment_id').annotate(
|
||||||
|
last_time=Max('time'))
|
||||||
|
envdata = EnvDataSerializer(last_envdata_qs, many=True).data
|
||||||
|
envdata_dict = {item['equipment_id']: item for item in envdata}
|
||||||
|
for item in data:
|
||||||
|
item['envdata'] = envdata_dict.get(item['id'], {})
|
||||||
|
return data
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, perms_map={'get': '*'})
|
@action(methods=['get'], detail=False, perms_map={'get': '*'})
|
||||||
def count_running_state(self, request, *args, **kwargs):
|
def count_running_state(self, request, *args, **kwargs):
|
||||||
"""当前运行状态统计
|
"""当前运行状态统计
|
||||||
|
|
Loading…
Reference in New Issue