|
@@ -8,8 +8,8 @@ import ast
|
|
|
from django.conf import settings
|
|
from django.conf import settings
|
|
|
from .serializers import SearchEquipSerializer, DeviceDetailSerializer
|
|
from .serializers import SearchEquipSerializer, DeviceDetailSerializer
|
|
|
from utils.JWTAuthentication_diy import APIAuthentication
|
|
from utils.JWTAuthentication_diy import APIAuthentication
|
|
|
-from utils.permissions import QXZDeviceDetailPermission, ScdDeviceDetailPermission, CbdDeviceDetailPermission, BzyDeviceDetailPermission, XycbDeviceDetailPermission, XctDeviceDetailPermission
|
|
|
|
|
-from utils.MyRateThrottle import DeviceDetailRateThrottle, DevicePhotoRateThrottle, QxzDeviceListRateThrottle, ScdDeviceListRateThrottle, CbdDeviceListRateThrottle, BzyDeviceListRateThrottle, XycbDeviceListRateThrottle, XctDeviceListRateThrottle
|
|
|
|
|
|
|
+from utils.permissions import QXZDeviceDetailPermission, ScdDeviceDetailPermission, CbdDeviceDetailPermission, BzyDeviceDetailPermission, XycbDeviceDetailPermission, XctDeviceDetailPermission, GssqDeviceDetailPermission
|
|
|
|
|
+from utils.MyRateThrottle import DeviceDetailRateThrottle, DevicePhotoRateThrottle, QxzDeviceListRateThrottle, ScdDeviceListRateThrottle, CbdDeviceListRateThrottle, BzyDeviceListRateThrottle, XycbDeviceListRateThrottle, XctDeviceListRateThrottle, GssqDeviceListRateThrottle
|
|
|
from utils.utils import DeviceInfoUtils
|
|
from utils.utils import DeviceInfoUtils
|
|
|
from utils.db_utils import MongoDBTools
|
|
from utils.db_utils import MongoDBTools
|
|
|
|
|
|
|
@@ -898,4 +898,118 @@ class XctDevicePhotoView(APIView):
|
|
|
else:
|
|
else:
|
|
|
Result_image = "0"
|
|
Result_image = "0"
|
|
|
result["itmes"].append({"uptime":item["addtime"],"Image":Image,"Result_image":Result_image,"Result":Result})
|
|
result["itmes"].append({"uptime":item["addtime"],"Image":Image,"Result_image":Result_image,"Result":Result})
|
|
|
|
|
+ return Response(result)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class GssqDeviceListView(APIView):
|
|
|
|
|
+ authentication_classes = [APIAuthentication]
|
|
|
|
|
+ throttle_classes = [GssqDeviceListRateThrottle]
|
|
|
|
|
+
|
|
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
|
|
+ """获取管式墒情列表接口"""
|
|
|
|
|
+ uid = request.user
|
|
|
|
|
+
|
|
|
|
|
+ wheres = {
|
|
|
|
|
+ "device_type_id":15,
|
|
|
|
|
+ '$or': [
|
|
|
|
|
+ {'owner_uid': uid},
|
|
|
|
|
+ {'user_dealer': uid}
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ project = {
|
|
|
|
|
+ 'id': '$id',
|
|
|
|
|
+ 'device_id': '$device_id',
|
|
|
|
|
+ 'uptime': '$uptime',
|
|
|
|
|
+ 'device_status': '$device_status',
|
|
|
|
|
+ 'lng': '$lng',
|
|
|
|
|
+ 'lat': '$lat'
|
|
|
|
|
+ }
|
|
|
|
|
+ m = MongoDBTools(db_name='smartfarming', table_name='sa_device')
|
|
|
|
|
+ data = m.find_many(wheres=wheres, options=project)
|
|
|
|
|
+ if data:
|
|
|
|
|
+ total_counts = data.count()
|
|
|
|
|
+ else:
|
|
|
|
|
+ total_counts = 0
|
|
|
|
|
+ result = {"total_counts":total_counts,"items":[]}
|
|
|
|
|
+ gssq_dict_cache = {}
|
|
|
|
|
+ for item in data:
|
|
|
|
|
+ d_id = item.pop("id")
|
|
|
|
|
+ result["items"].append(item)
|
|
|
|
|
+ gssq_dict_cache[item["device_id"]] = d_id
|
|
|
|
|
+ default_cache.set(str(uid)+"_gssq_list", gssq_dict_cache,60*5)
|
|
|
|
|
+ return Response(result)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+class GssqDeviceDetailView(APIView):
|
|
|
|
|
+ authentication_classes = [APIAuthentication]
|
|
|
|
|
+ permission_classes = [GssqDeviceDetailPermission]
|
|
|
|
|
+ throttle_classes = [DeviceDetailRateThrottle]
|
|
|
|
|
+
|
|
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
|
|
+ serializer = DeviceDetailSerializer(data=request.query_params)
|
|
|
|
|
+ serializer.is_valid(raise_exception=True)
|
|
|
|
|
+ request_data = serializer.validated_data
|
|
|
|
|
+
|
|
|
|
|
+ uid = request.user
|
|
|
|
|
+ gssq_dict_cache = default_cache.get(str(uid)+"_gssq_list")
|
|
|
|
|
+ if gssq_dict_cache:
|
|
|
|
|
+ d_id = gssq_dict_cache[request_data["device_id"]]
|
|
|
|
|
+ else:
|
|
|
|
|
+ """避免缓存失效"""
|
|
|
|
|
+ wheres = {
|
|
|
|
|
+ 'device_type_id':15,
|
|
|
|
|
+ '$or': [
|
|
|
|
|
+ {'owner_uid': uid},
|
|
|
|
|
+ {'user_dealer': uid}
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ project = {
|
|
|
|
|
+ 'id': '$id',
|
|
|
|
|
+ 'device_id': '$device_id'
|
|
|
|
|
+ }
|
|
|
|
|
+ m = MongoDBTools(db_name='smartfarming', table_name='sa_device')
|
|
|
|
|
+ data = m.find_many(wheres=wheres, options=project)
|
|
|
|
|
+ gssq_dict_cache = []
|
|
|
|
|
+ for item in data:
|
|
|
|
|
+ gssq_dict_cache[item["device_id"]]=item["id"]
|
|
|
|
|
+ default_cache.set(str(uid)+"_gssq_list", gssq_dict_cache,60*5)
|
|
|
|
|
+ d_id = gssq_dict_cache[request_data["device_id"]]
|
|
|
|
|
+
|
|
|
|
|
+ result = {"total_counts":0,"items":[]}
|
|
|
|
|
+
|
|
|
|
|
+ data_m = MongoDBTools(db_name='smartfarming', table_name='sa_nd_qxz_data')
|
|
|
|
|
+ data_project = {
|
|
|
|
|
+ "upl_time": "$upl_time",
|
|
|
|
|
+ "id" : "$id",
|
|
|
|
|
+ "at" : "$at",
|
|
|
|
|
+ "atm" : "$atm",
|
|
|
|
|
+ "ats" : "$ats",
|
|
|
|
|
+ "csq" : "$csq",
|
|
|
|
|
+ "device_id" : "$device_id",
|
|
|
|
|
+ "swc" : "$swc",
|
|
|
|
|
+ "temp" : "$temp"
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if request_data.get("start_timestamp") == 0:
|
|
|
|
|
+ data_wheres = {
|
|
|
|
|
+ "device_id": request_data["device_id"]
|
|
|
|
|
+ }
|
|
|
|
|
+ else:
|
|
|
|
|
+ data_wheres = {
|
|
|
|
|
+ "device_id": request_data["device_id"],
|
|
|
|
|
+ "upl_time": {
|
|
|
|
|
+ "$gt": request_data["start_timestamp"],
|
|
|
|
|
+ "$lte": request_data["end_timestamp"]
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ data = data_m.find_many(wheres=data_wheres,options=data_project,skip=request_data["page_start"],limit=request_data["page_size"])
|
|
|
|
|
+ total_counts = data.count()
|
|
|
|
|
+ result["total_counts"] = total_counts
|
|
|
|
|
+ for item in data:
|
|
|
|
|
+ try:
|
|
|
|
|
+ device_data = item
|
|
|
|
|
+ except:
|
|
|
|
|
+ device_data = ast.literal_eval(item)
|
|
|
|
|
+
|
|
|
|
|
+ result["items"].append({"uptime":item["upl_time"],"item_data":device_data})
|
|
|
return Response(result)
|
|
return Response(result)
|