浏览代码

网关日志新增参数查询

peng 2 年之前
父节点
当前提交
c77c59b297
共有 2 个文件被更改,包括 44 次插入39 次删除
  1. 1 1
      AdminController/ServeManagementController.py
  2. 43 38
      Controller/SensorGateway/SmartSceneController.py

+ 1 - 1
AdminController/ServeManagementController.py

@@ -674,7 +674,7 @@ class serveManagement(View):
             rd_sheet = rd_book.sheet_by_index(0)
             rd_sheet = rd_book.sheet_by_index(0)
             # wt_book = copy(rd_book)
             # wt_book = copy(rd_book)
             # wt_sheet = wt_book.get_sheet(0)
             # wt_sheet = wt_book.get_sheet(0)
-            wt_book = xlwt.Workbook()
+            wt_book = xlwt.Workbook(encoding='utf-8')
             wt_sheet = wt_book.add_sheet('对账结果', cell_overwrite_ok=True)
             wt_sheet = wt_book.add_sheet('对账结果', cell_overwrite_ok=True)
             row_start = 7
             row_start = 7
             for row in range(rd_sheet.nrows):
             for row in range(rd_sheet.nrows):

+ 43 - 38
Controller/SensorGateway/SmartSceneController.py

@@ -764,6 +764,8 @@ class SmartSceneView(View):
         @return: response
         @return: response
         """
         """
         family_id = request_dict.get('familyId', None)
         family_id = request_dict.get('familyId', None)
+        device_id = request_dict.get('deviceId', None)
+        sub_device_id = request_dict.get('subDeviceId', None)
         page = request_dict.get('page', None)
         page = request_dict.get('page', None)
         size = request_dict.get('size', None)
         size = request_dict.get('size', None)
         start_time = request_dict.get('startTime', None)
         start_time = request_dict.get('startTime', None)
@@ -771,45 +773,40 @@ class SmartSceneView(View):
 
 
         if not all([family_id, page, size]):
         if not all([family_id, page, size]):
             return response.json(444, {'error param': 'page or size'})
             return response.json(444, {'error param': 'page or size'})
-
-        device_list = []
-        sub_device_list = []
-        family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id', 'sub_device')
-        for item in family_room_device_qs:
-            if item['sub_device'] and item['sub_device'] not in sub_device_list:
-                sub_device_list.append(item['sub_device'])
-            if item['device_id'] not in device_list:
-                device_list.append(item['device_id'])
+        if not any([device_id, sub_device_id]):
+            return response.json(444, {'error param': 'deviceId and subDeviceId'})
+        if sub_device_id:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
+        else:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
+        if not family_room_device_qs.exists():
+            return response.json(173)
 
 
         try:
         try:
             page, size = int(page), int(size)
             page, size = int(page), int(size)
-            scene_log_qs = SceneLog.objects.filter(
-                Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list))
+            if sub_device_id:
+                scene_log_qs = SceneLog.objects.filter(sub_device_id=sub_device_id)
+                device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
+            else:
+                scene_log_qs = SceneLog.objects.filter(device_id=device_id)
+                device_qs = Device_Info.objects.filter(id=device_id).values('Type')
             if start_time and end_time:
             if start_time and end_time:
                 scene_log_qs = scene_log_qs.filter(created_time__range=(start_time, end_time)).values(
                 scene_log_qs = scene_log_qs.filter(created_time__range=(start_time, end_time)).values(
                     'status',
                     'status',
                     'created_time',
                     'created_time',
-                    'device_id',
-                    'sub_device_id',
                     'scene_name',
                     'scene_name',
                     'tasks').order_by(
                     'tasks').order_by(
                     '-created_time')[(page - 1) * size:page * size]
                     '-created_time')[(page - 1) * size:page * size]
             else:
             else:
-                scene_log_qs = scene_log_qs.values('status',
-                                                   'created_time', 'device_id', 'sub_device_id', 'scene_name',
-                                                   'tasks').order_by(
+                scene_log_qs = scene_log_qs.values('status', 'created_time', 'scene_name', 'tasks').order_by(
                     '-created_time')[(page - 1) * size:page * size]
                     '-created_time')[(page - 1) * size:page * size]
             if not scene_log_qs.exists():
             if not scene_log_qs.exists():
                 return response.json(0, [])
                 return response.json(0, [])
             for item in scene_log_qs:
             for item in scene_log_qs:
-                device_id = item['device_id']
-                sub_device_id = item['sub_device_id']
-                if device_id:
-                    qs = Device_Info.objects.filter(id=device_id).values('Type')
-                    item['device_type'] = qs[0]['Type']
+                if sub_device_id:
+                    item['device_type'] = device_qs[0]['device_type']
                 else:
                 else:
-                    qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type')
-                    item['device_type'] = qs[0]['device_type']
+                    item['device_type'] = device_qs[0]['Type']
                 item['tasks'] = eval(item['tasks'])
                 item['tasks'] = eval(item['tasks'])
             return response.json(0, list(scene_log_qs))
             return response.json(0, list(scene_log_qs))
         except Exception as e:
         except Exception as e:
@@ -827,24 +824,32 @@ class SmartSceneView(View):
         @return: response
         @return: response
         """
         """
         family_id = request_dict.get('familyId', None)
         family_id = request_dict.get('familyId', None)
-
+        device_id = request_dict.get('deviceId', None)
+        sub_device_id = request_dict.get('subDeviceId', None)
         if not family_id:
         if not family_id:
-            return response.json(444, {'error param': 'device_id and gatewaySubId'})
-        device_list = []
-        sub_device_list = []
-        family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id).values('device_id', 'sub_device')
-        for item in family_room_device_qs:
-            if item['sub_device'] and item['sub_device'] not in sub_device_list:
-                sub_device_list.append(item['sub_device'])
-            if item['device_id'] not in device_list:
-                device_list.append(item['device_id'])
+            return response.json(444, {'error param': 'familyId'})
+        if not any([device_id, sub_device_id]):
+            return response.json(444, {'error param': 'deviceId and subDeviceId'})
+        if sub_device_id:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=sub_device_id)
+        else:
+            family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, device=device_id)
+        if not family_room_device_qs.exists():
+            return response.json(173)
 
 
         try:
         try:
-            scene_log_qs = SceneLog.objects.extra(
-                select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
-                               filter(Q(device_id__in=device_list) | Q(sub_device_id__in=sub_device_list)). \
-                               annotate(count=Count('created_time')). \
-                               order_by('-date')[:31]
+            if sub_device_id:
+                scene_log_qs = SceneLog.objects.extra(
+                    select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
+                                   filter(sub_device_id=sub_device_id). \
+                                   annotate(count=Count('created_time')). \
+                                   order_by('-date')[:31]
+            else:
+                scene_log_qs = SceneLog.objects.extra(
+                    select={'date': "FROM_UNIXTIME(created_time,'%%Y-%%m-%%d')"}).values('date'). \
+                                   filter(device_id=device_id). \
+                                   annotate(count=Count('created_time')). \
+                                   order_by('-date')[:31]
             log_date_list = []
             log_date_list = []
             for scene_log in scene_log_qs:
             for scene_log in scene_log_qs:
                 log_date_list.append({
                 log_date_list.append({