|
|
@@ -1,9 +1,15 @@
|
|
|
from rest_framework.views import APIView
|
|
|
+from rest_framework.generics import GenericAPIView
|
|
|
from rest_framework.response import Response
|
|
|
+import time
|
|
|
|
|
|
-from .serializers import SearchEquipSerializer
|
|
|
+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.
|
|
|
|
|
|
@@ -17,3 +23,92 @@ class SearchEquip(APIView):
|
|
|
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)
|
|
|
+
|