| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- from rest_framework.views import APIView
- from rest_framework.generics import GenericAPIView
- from rest_framework.response import Response
- import time
- from .serializers import SearchEquipSerializer,DeviceListSerializer,DeviceDetailSerializer
- from utils.utils import get_equip_list
- from utils.JWTAuthentication_diy import MyJWTAuthentication
- from utils.permissions import ModulePermission, DeviceDetailPermission
- from utils.MyRateThrottle import DeviceListRateThrottle,DeviceDetailRateThrottle
- from .models import Device, QXZData
- # Create your views here.
- class SearchEquip(APIView):
- def post(self, request):
- serializer = SearchEquipSerializer(data=request.data)
- serializer.is_valid(raise_exception=True)
- request_data = serializer.validated_data
- data = get_equip_list(
- d_id=request_data.get("device_id"),
- isfullId=request_data.get("isfullId")
- )
- return Response(data)
- class ReceiveQXZ(APIView):
- def post(self,request):
- data = request.data
- if data.get("cmd") == "offline":
- imei = data["ext"]["imei"]
- try:
- device = Device.objects.get(device_id=imei)
- device.upl_time = int(time.time())
- device.is_online = 0
- device.save()
- except Exception as e:
- print("离线数据保存异常",e)
- elif "terminalStatus" in data:
- imei = data["StationID"]
- status_data = data["terminalStatus"]
- if Device.objects.filter(device_id=imei).exists():
- device = Device.objects.get(device_id=imei)
- else:
- device = Device.objects.create(
- device_id=imei,
- device_type=1
- )
- if status_data.get("VOLT"):
- device.volt = status_data.get("VOLT")
- if status_data.get("RSSI"):
- device.rssi = status_data.get("RSSI")
- if status_data.get("ICCID"):
- device.iccid = status_data.get("ICCID")
- if status_data.get("longitude"):
- device.lng = status_data.get("longitude")
- if status_data.get("latitude"):
- device.lat = status_data.get("latitude")
- if status_data.get("Version"):
- device.version = status_data.get("Version")
- device.is_online = 1
- device.upl_time = int(time.time())
- device.save()
-
- elif 'data' in data:
- imei = data["StationID"]
- save_data = data["data"]
- if Device.objects.filter(device_id=imei).exists():
- device = Device.objects.get(device_id=imei)
- else:
- device = Device.objects.create(
- device_id=imei,
- device_type=1
- )
- device.is_online = 1
- device.upl_time = int(time.time())
- device.save()
- QXZData.objects.create(
- device_id=device,
- device_data=save_data,
- add_time=int(time.time())
- )
- return Response("已接收保存")
-
- class DeviceList(GenericAPIView):
- authentication_classes = [MyJWTAuthentication]
- permission_classes = [ModulePermission]
- throttle_classes = [DeviceListRateThrottle]
- serializer_class = DeviceListSerializer
- queryset = Device.objects.all()
- def post(self,request):
- uid = int(request.user.get("uid"))
- device_queryset = self.get_queryset().filter(owner=uid)
- serializer = self.get_serializer(instance=device_queryset, many=True)
- return Response(serializer.data)
-
- class DeviceDetail(GenericAPIView):
- authentication_classes = [MyJWTAuthentication]
- permission_classes = [DeviceDetailPermission]
- throttle_classes = [DeviceDetailRateThrottle]
- serializer_class = DeviceDetailSerializer
- queryset = QXZData.objects.all().order_by("-id")
- def post(self, request):
- deviceId = request.data.get("deviceId")
- start_time = int(request.data.get("start_time"))
- device_queryset = self.get_queryset().filter(device_id_id=deviceId,add_time__gt=start_time)
- serializer = self.get_serializer(instance=device_queryset, many=True)
- return Response(serializer.data)
|