feat: drain serializer增加返回序列化

This commit is contained in:
caoqianming 2024-08-08 14:45:40 +08:00
parent 3f32390fb2
commit e2c44f06c4
2 changed files with 18 additions and 18 deletions

View File

@ -24,23 +24,23 @@ class DrainSerializer(CustomModelSerializer):
return super().validate(attrs)
class Drain2Serializer(CustomModelSerializer):
class DrainWithEquipBaseSerializer(DrainSerializer):
equip_data = serializers.SerializerMethodField()
mgroup_name = serializers.CharField(source="mgroup.name", read_only=True)
class Meta:
model = Drain
fields = "__all__"
read_only_fields = EXCLUDE_FIELDS_DEPT
def get_equip_data(self, obj):
equips = obj.equipments.all()
odata = equips.values("id", "number", "name", "type", "running_state")
return odata
class DrainWithEquipEnpSerializer(DrainSerializer):
equip_data = serializers.SerializerMethodField()
def get_equip_data(self, obj):
equips = obj.equipments.all()
now = datetime.now()
today = str(now)[:10] + " 00:00:00"
today_last = str(now)[:10] + " 23:59:59"
odata = equips.values("id", "name", "type", "running_state")
# eids = [f"'{e['id']}'" for e in odata]
# eids_str = ",".join(eids)
odata = equips.values("id", "number", "name", "type", "running_state")
for i in odata:
i.update(
{
@ -53,11 +53,6 @@ class Drain2Serializer(CustomModelSerializer):
equipment_id = i["id"]
sql_str = duration_hour_one_equip.format(equipment_id=equipment_id, start_time=today, end_time=today_last)
res = query_all_dict(sql_str)
# data = {}
# for i in res:
# data[i["equipment_id"]] = i
# for i in odata:
if res:
i.update(res[0])

View File

@ -1,7 +1,9 @@
from django.shortcuts import render
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, CustomListModelMixin
from .serializers import DrainSerializer, DrainEquipSerializer, DrainEquipEnvSerializer, VehicleAccessSerializer, EnvDataSerializer, EnvDataExportSerializer, CarWashSerializer, Drain2Serializer
from .serializers import (DrainSerializer, DrainEquipSerializer, DrainEquipEnvSerializer,
VehicleAccessSerializer, EnvDataSerializer, EnvDataExportSerializer,
CarWashSerializer, DrainWithEquipEnpSerializer, DrainWithEquipBaseSerializer)
from .models import Drain, DrainEquip, VehicleAccess, EnvData, CarWash
from rest_framework.decorators import action
from apps.utils.sql import query_all_dict
@ -25,9 +27,12 @@ class DrainViewSet(CustomModelViewSet):
select_related_fields = ["mgroup"]
def get_serializer_class(self):
has_equipdata = self.request.query_params.get("has_equipdata", "no")
if self.request.method == "GET" and has_equipdata == "yes":
return Drain2Serializer
equip_data = self.request.query_params.get("equip_data", "no")
if self.request.method == "GET":
if equip_data == "base":
return DrainWithEquipEnpSerializer
elif equip_data == "enp":
return DrainWithEquipBaseSerializer
return super().get_serializer_class()
@swagger_auto_schema(