|
|
@@ -21,74 +21,29 @@ from smartfarming.utils import bindDeviceLive, getLive, controlMove, modify_live
|
|
|
from kedong.tools import RedisPool
|
|
|
from kedong.decoration import kedong_deco, PortError
|
|
|
|
|
|
+from smartfarming.api.views.camera.cameraserializers import (
|
|
|
+ MongoCameraPhotoSerializers,
|
|
|
+ MongoDeviceCameraSerializers
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
config_dict = settings.CONFIG
|
|
|
|
|
|
|
|
|
@kedong_deco(login_required=True)
|
|
|
def list_camera(request):
|
|
|
- """
|
|
|
- 获取监控设备列表 :
|
|
|
- 参数:
|
|
|
-
|
|
|
- page 非必传(num) 页码,默认为1
|
|
|
- device_id 非必传 设备ID, 不传为监控列表, 传设备号为搜索
|
|
|
- page_size 非必传 一页条数,默认为10
|
|
|
-
|
|
|
- 返回值:
|
|
|
- {
|
|
|
- "data": {
|
|
|
- data : {
|
|
|
- "device_name":"", 设备名称
|
|
|
- "device_id":"", 设备ID
|
|
|
- "photo_num":"", 是否拍过照片 0未拍过 1拍过
|
|
|
- "status":"", 设备状态 0离线 1在线
|
|
|
- "camera_playback":"" 用来判断是否有录像功能 0不支持 1支持
|
|
|
- "sim":"" 监控SIM 卡
|
|
|
- }
|
|
|
- counts : 99 总数
|
|
|
- }
|
|
|
- "errorCode": 0,
|
|
|
- "message": "",
|
|
|
- "formError": {}
|
|
|
- }
|
|
|
-
|
|
|
- """
|
|
|
- _list = []
|
|
|
+ # 获取监控设备列表
|
|
|
post_info = request.POST
|
|
|
device_id = post_info.get('device_id')
|
|
|
- page = int(post_info.get('page', 1))
|
|
|
+ page_num = int(post_info.get('page', 1))
|
|
|
page_size = int(post_info.get('page_size', 10))
|
|
|
- search_dict = {
|
|
|
- "device_type_id": 6
|
|
|
- }
|
|
|
- if device_id:
|
|
|
- search_dict["device_id"] = re.compile(fr"^.*{device_id}.*$")
|
|
|
queryset = MongoDevice.objects.filter(device_type_id=6).order_by("-uptime")
|
|
|
- total_num = queryset.count()
|
|
|
+ if device_id:
|
|
|
+ queryset = queryset.filter(device_id=device_id)
|
|
|
paginator = Paginator(queryset, page_size)
|
|
|
- page_obj = paginator.get_page(page)
|
|
|
- serializers = DeviceSerializers(page_obj, many=True)
|
|
|
- data_list = serializers.data
|
|
|
- _list = []
|
|
|
- device_id_list = []
|
|
|
- for x in data_list:
|
|
|
- device_id = x.get("device_id")
|
|
|
- device_id_list.append(device_id)
|
|
|
- _list.append({
|
|
|
- "device_name": x.get("device_name"),
|
|
|
- "device_id": device_id,
|
|
|
- "photo_num": "",
|
|
|
- "status": x.get("device_status"),
|
|
|
- "camera_playback": "",
|
|
|
- "sim": x.get("simid")
|
|
|
- })
|
|
|
- photo_queryset = MongoCameraPhoto.objects.filter(device_id__in=device_id_list, photo_status=1).values('device_id').annotate(count=Count('device_id'))
|
|
|
- phote_dict = {p['device_id']: "1" for p in photo_queryset}
|
|
|
- playback_dict = {y['device_id']: y["camera_playback"] for y in MongoCameraData.objects.filter(device_id__in=device_id_list).values('device_id','camera_playback')}
|
|
|
- for item in _list:
|
|
|
- item["photo_num"] = phote_dict.get(device_id, "0")
|
|
|
- item["camera_playback"] = playback_dict.get(device_id,"0")
|
|
|
- datas = {"data": _list, "counts": total_num}
|
|
|
+ page_obj = paginator.get_page(page_num)
|
|
|
+ serializers = MongoDeviceCameraSerializers(page_obj, many=True)
|
|
|
+ datas = {"data": serializers.data, "counts": queryset.count()}
|
|
|
return datas
|
|
|
|
|
|
|
|
|
@@ -525,4 +480,21 @@ def camera_takephoto(request):
|
|
|
else:
|
|
|
raise PortError("","拍照失败,稍后重试")
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+@kedong_deco(login_required=True)
|
|
|
+def camera_photo(request):
|
|
|
+ # 拍照列表
|
|
|
+ request_data = request.POST
|
|
|
+ device_id = request_data.get("device_id")
|
|
|
+ start_time = request_data.get("start_time","")
|
|
|
+ end_time = request_data.get("end_time","")
|
|
|
+ page_num = int(request_data.get("page")) if request_data.get("page") else 1
|
|
|
+ page_size = int(request_data.get("pagesize")) if request_data.get("pagesize") else 10
|
|
|
+ queryset = MongoCameraPhoto.objects.filter(device_id=device_id).order_by("-addtime")
|
|
|
+ if start_time and end_time:
|
|
|
+ queryset = queryset.filter(addtime__gte=start_time, addtime__lte=end_time)
|
|
|
+ paginator = Paginator(queryset, page_size)
|
|
|
+ page_obj = paginator.get_page(page_num)
|
|
|
+ serializers = MongoCameraPhotoSerializers(page_obj, many=True)
|
|
|
+ return {"data": serializers.data, "counts": queryset.count()}
|