标注坐标位置和批量绑定接口

This commit is contained in:
曹前明 2022-08-25 17:30:35 +08:00
parent e7267ffd04
commit 26d9c0ee70
3 changed files with 52 additions and 46 deletions

View File

@ -51,17 +51,16 @@ class RequestCommonSerializer(serializers.Serializer):
class BindAreaSerializer(serializers.Serializer):
codes = serializers.ListField(child=serializers.CharField(), label='标识列表')
ids = serializers.ListField(child=serializers.CharField(), label='设备ID列表')
area = serializers.PrimaryKeyRelatedField(queryset=Area.objects.all(),
label="区域ID")
class LabelLocationSerializer(CustomModelSerializer):
code = serializers.CharField(label='设备唯一标识')
class Meta:
model = TDevice
fields = ['type', 'location', 'area', 'areas', 'name', 'code']
fields = ['location', 'area', 'areas']
class BindAreasSerializer(serializers.Serializer):

View File

@ -265,6 +265,6 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
"""
其他报警转到事件派发
"""
myLogger.info(data)
# myLogger.info(data)
dispatch_dahua_event(data=data)
return Response()

View File

@ -374,7 +374,7 @@ class TDeviceViewSet(ListModelMixin, UpdateModelMixin, DestroyModelMixin, Custom
i['my_info'] = tds_dict[i['channelCode']]
return Response(res)
@action(methods=['post'], detail=False, perms_map={'post': 'tdevice.label_location'},
@action(methods=['post'], detail=True, perms_map={'post': 'tdevice.label_location'},
serializer_class=LabelLocationSerializer)
def label_location(self, request):
"""
@ -382,33 +382,38 @@ class TDeviceViewSet(ListModelMixin, UpdateModelMixin, DestroyModelMixin, Custom
标注坐标位置
"""
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
vdata = serializer.validated_data
td = TDevice.objects.filter(code=vdata['code']).first()
if td:
td.location = vdata['location']
td.type = vdata['type']
td.area = vdata['area']
td.name = vdata['name']
td.update_by = request.user
td.save()
td.areas.clear()
for i in vdata['areas']:
td.areas.add(i)
else:
td = TDevice()
td.type = vdata['type']
td.code = vdata['code']
td.location = vdata['location']
td.area = vdata['area']
td.name = vdata['name']
td.create_by = request.user
td.save()
td.areas.clear()
for i in vdata['areas']:
td.areas.add(i)
obj = self.get_object()
sr = LabelLocationSerializer(instance=obj, data=request.data)
sr.is_valid(raise_exception=True)
sr.save()
return Response()
# serializer = self.get_serializer(data=request.data)
# serializer.is_valid(raise_exception=True)
# vdata = serializer.validated_data
# td = TDevice.objects.filter(code=vdata['code']).first()
# if td:
# td.location = vdata['location']
# td.type = vdata['type']
# td.area = vdata['area']
# td.name = vdata['name']
# td.update_by = request.user
# td.save()
# td.areas.clear()
# for i in vdata['areas']:
# td.areas.add(i)
# else:
# td = TDevice()
# td.type = vdata['type']
# td.code = vdata['code']
# td.location = vdata['location']
# td.area = vdata['area']
# td.name = vdata['name']
# td.create_by = request.user
# td.save()
# td.areas.clear()
# for i in vdata['areas']:
# td.areas.add(i)
# return Response()
@action(methods=['post'], detail=False, perms_map={'post': 'tdevice.bind_area'},
serializer_class=BindAreaSerializer)
@ -420,22 +425,24 @@ class TDeviceViewSet(ListModelMixin, UpdateModelMixin, DestroyModelMixin, Custom
"""
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
vdata = serializer.vdata
area = Area.objects.get(id=vdata['area'])
for i in vdata['codes']:
td = TDevice.objects.filter(code=i['code']).first()
if td:
td.area = area
td.update_by = request.user
td.save()
else:
td = TDevice()
td.type = TDevice.DEVICE_VCHANNEL
td.code = i['code']
td.area = area
td.create_by = request.user
td.save()
vdata = serializer.validated_data
TDevice.objects.filter(id__in=vdata['ids']).update(area=vdata['area'])
return Response()
# area = Area.objects.get(id=vdata['area'])
# for i in vdata['codes']:
# td = TDevice.objects.filter(code=i['code']).first()
# if td:
# td.area = area
# td.update_by = request.user
# td.save()
# else:
# td = TDevice()
# td.type = TDevice.DEVICE_VCHANNEL
# td.code = i['code']
# td.area = area
# td.create_by = request.user
# td.save()
# return Response()
class TlogViewSet(ListModelMixin, CustomGenericViewSet):