Ver Fonte

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer into ming

zhangdongming há 1 ano atrás
pai
commit
f5f7685347

+ 3 - 3
Controller/CloudTransfer.py

@@ -203,8 +203,8 @@ class cloudTestView(View):
             new_ai_service = AiService.objects.filter(uid=new_uid, endTime__gte=nowTime, use_status=1)
             if new_ai_service.exists():  # 转入设备有开通AI功能,不能转
                 return response.json(10014)
-            old_uid_set = UidSetModel.objects.filter(uid=new_uid).values('is_ai')
-            if old_ai_service.exists() and old_uid_set[0]['is_ai'] == 2:  # 转出设备有开通AI,但是转入设备不支持AI,不能转
+            new_uid_set = UidSetModel.objects.filter(uid=new_uid).values('is_ai')
+            if old_ai_service.exists() and new_uid_set[0]['is_ai'] == 2:  # 转出设备有开通AI,但是转入设备不支持AI,不能转
                 return response.json(10016)
             with transaction.atomic():
                 # 如果转出设备有未使用套餐,更改第一个未使用套餐为正在使用
@@ -246,7 +246,7 @@ class cloudTestView(View):
                 UID_Bucket.objects.filter(id=old_using_uid_bucket_id).update(uid=new_uid, has_unused=0)
                 StsCrdModel.objects.filter(uid=old_uid).delete()  # 删除转出设备stscrd表关联数据
                 # 转移AI服务
-                if old_ai_service.exists() and old_uid_set[0]['is_ai'] != 2:
+                if old_ai_service.exists() and new_uid_set[0]['is_ai'] != 2:
                     AiService.objects.filter(id=old_ai_service[0]['id']).update(uid=new_uid)
 
                 # 记录套餐转移日志

+ 85 - 85
Controller/DetectControllerV2.py

@@ -310,26 +310,27 @@ class DetectControllerViewV2(View):
     def do_query(self, request_dict, response, userID):
         page = int(request_dict.get('page', None))
         line = int(request_dict.get('line', None))
-        startTime = request_dict.get('startTime', None)
-        endTime = request_dict.get('endTime', None)
-        eventType = request_dict.get('eventType', None)
+        start_time = request_dict.get('startTime', None)
+        end_time = request_dict.get('endTime', None)
+        event_type = request_dict.get('eventType', None)
         region = int(request_dict.get('region', None))
         uids = request_dict.get('uids', None)
 
         try:
-            # 根据时间筛选消息推送
-            if startTime and endTime:
-                equipment_info_qs, count = EquipmentInfoService.\
-                    find_by_start_time_equipment_info(page, line, userID, startTime, endTime, eventType, uids)
-
-            else:
-                # 默认查询近七天消息推送
-                def_time = LocalDateTimeUtil.get_before_days_timestamp(int(time.time()), 8)
-                equipment_info_qs, count = EquipmentInfoService.\
-                    get_equipment_info_week_all(page, line, userID, def_time, endTime, eventType, uids)
-
+            uid_list = []
             if uids:
                 uid_list = uids.split(',')
+
+            if not start_time and not end_time:
+                # 默认查询近七天内数据
+                end_time = int(time.time())
+                start_time = LocalDateTimeUtil.get_before_days_timestamp(end_time, 7)
+
+            equipment_info_qs, count = EquipmentInfoService.\
+                union_equipment_info(userID, uid_list, event_type, start_time, end_time, page, line)
+
+            # 查询设备类型,昵称
+            if uid_list:
                 dvqs = Device_Info.objects.filter(UID__in=uid_list, userID_id=userID).values('UID', 'Type', 'NickName')
                 uid_type_dict = {}
                 for dv in dvqs:
@@ -347,50 +348,55 @@ class DetectControllerViewV2(View):
             res = []
             auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
             oss_img_bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'apg')
-            aws_s3_guonei = boto3.client(
-                's3',
-                aws_access_key_id=AWS_ACCESS_KEY_ID[0],
-                aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
-                config=botocore.client.Config(signature_version='s3v4'),
-                region_name='cn-northwest-1'
-            )
-            aws_s3_guowai = boto3.client(
+            aws_s3 = boto3.client(
                 's3',
                 aws_access_key_id=AWS_ACCESS_KEY_ID[1],
                 aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1],
                 config=botocore.client.Config(signature_version='s3v4'),
                 region_name='us-east-1'
             )
+            aws_s3_cn = boto3.client(
+                's3',
+                aws_access_key_id=AWS_ACCESS_KEY_ID[0],
+                aws_secret_access_key=AWS_SECRET_ACCESS_KEY[0],
+                config=botocore.client.Config(signature_version='s3v4'),
+                region_name='cn-northwest-1'
+            )
+
             # ai消息标识所有组合标签
             ai_all_event_type = EquipmentInfoService.get_all_comb_event_type()
             for equipment_info in equipment_info_qs:
-                devUid = equipment_info['devUid']
-                eventTime = equipment_info['eventTime']
+                uid = equipment_info['devUid']
+                event_time = equipment_info['eventTime']
                 channel = equipment_info['Channel']
                 storage_location = equipment_info['storage_location']
+                border_coords = equipment_info['borderCoords']
+                event_type = equipment_info['eventType']
+                event_tag = equipment_info['eventTag']
+
                 if equipment_info['is_st'] == 1:
-                    thumbspng = '{uid}/{channel}/{time}.jpeg'.format(uid=devUid, channel=equipment_info['Channel'], time=eventTime)
+                    thumbspng = '{}/{}/{}.jpeg'.format(uid, channel, event_time)
                     if storage_location == 1:  # 阿里云oss
-                        response_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
-                        equipment_info['img'] = response_url
-                        equipment_info['img_list'] = [response_url]
+                        img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
                     else:
                         params = {'Key': thumbspng}
-                        if region == 1:
+                        if region == 1:     # AWS国外
                             params['Bucket'] = 'foreignpush'
-                            response_url = aws_s3_guowai.generate_presigned_url('get_object', Params=params,
-                                                                                ExpiresIn=300)
-                        else:
+                            img_url = aws_s3.generate_presigned_url(
+                                'get_object', Params=params, ExpiresIn=300)
+                        else:               # AWS国内
                             params['Bucket'] = 'push'
-                            response_url = aws_s3_guonei.generate_presigned_url('get_object', Params=params, ExpiresIn=300)
-                        equipment_info['img'] = response_url
-                        equipment_info['img_list'] = [response_url]
+                            img_url = aws_s3_cn.generate_presigned_url(
+                                'get_object', Params=params, ExpiresIn=300)
+
+                    equipment_info['img'] = img_url
+                    equipment_info['img_list'] = [img_url]
 
                 elif equipment_info['is_st'] == 2:
                     # 列表装载回放时间戳标记
                     split_vod_hls_obj = SplitVodHlsObject()
-                    vodqs = split_vod_hls_obj.get_vod_hls_data(uid=devUid, channel=channel,
-                                                               start_time=int(eventTime)).values("bucket_id")
+                    vodqs = split_vod_hls_obj.get_vod_hls_data(
+                        uid=uid, channel=channel, start_time=int(event_time)).values('bucket_id')
                     if not vodqs.exists():
                         return response.json(173)
                     vod_bucket_qs = VodBucketModel.objects.filter(id=vodqs[0]['bucket_id']).values('bucket', 'endpoint')
@@ -399,67 +405,61 @@ class DetectControllerViewV2(View):
                     bucket_name = vod_bucket_qs[0]['bucket']
                     endpoint = vod_bucket_qs[0]['endpoint']
                     bucket = oss2.Bucket(auth, endpoint, bucket_name)
-                    ts = '{uid}/vod{channel}/{etime}/ts0.ts'.format(uid=devUid, channel=equipment_info['Channel'],
-                                                                    etime=eventTime)
-                    if storage_location == 1:  # oss
-                        thumb0 = bucket.sign_url('GET', ts, 3600,
-                                                 params={'x-oss-process': 'video/snapshot,t_0000,w_700'})
-                        thumb1 = bucket.sign_url('GET', ts, 3600,
-                                                 params={'x-oss-process': 'video/snapshot,t_1000,w_700'})
-                        thumb2 = bucket.sign_url('GET', ts, 3600,
-                                                 params={'x-oss-process': 'video/snapshot,t_2000,w_700'})
+                    ts = '{}/vod{}/{}/ts0.ts'.format(uid, channel, event_time)
+                    if storage_location == 1:  # 阿里云oss
+                        thumb0 = bucket.sign_url('GET', ts, 3600, params={'x-oss-process': 'video/snapshot,t_0000,w_700'})
+                        thumb1 = bucket.sign_url('GET', ts, 3600, params={'x-oss-process': 'video/snapshot,t_1000,w_700'})
+                        thumb2 = bucket.sign_url('GET', ts, 3600, params={'x-oss-process': 'video/snapshot,t_2000,w_700'})
                         equipment_info['img_list'] = [thumb0, thumb1, thumb2]
-                    elif region == 2 and storage_location == 2:  # 2:国内,aws
-                        thumb = aws_s3_guonei.generate_presigned_url('get_object',
-                                                                     Params={'Bucket': 'push', 'Key': ts},
-                                                                     ExpiresIn=3600)
-                        equipment_info['img_list'] = [thumb]
-                    elif region == 1 and storage_location == 2:  # 1:国外,aws
-                        thumb = aws_s3_guowai.generate_presigned_url('get_object',
-                                                                     Params={'Bucket': 'foreignpush', 'Key': ts},
-                                                                     ExpiresIn=3600)
-                        equipment_info['img_list'] = [thumb]
+                    else:
+                        params = {'Key': ts}
+                        if region == 1:     # AWS国外
+                            params['Bucket'] = 'foreignpush'
+                            img_url = aws_s3.generate_presigned_url(
+                                'get_object', Params=params, ExpiresIn=300)
+                        else:               # AWS国内
+                            params['Bucket'] = 'push'
+                            img_url = aws_s3_cn.generate_presigned_url(
+                                'get_object', Params=params, ExpiresIn=300)
+                        equipment_info['img_list'] = [img_url]
+
                 elif equipment_info['is_st'] == 3 or equipment_info['is_st'] == 4:
                     # 列表装载回放时间戳标记
                     equipment_info['img_list'] = []
                     for i in range(equipment_info['is_st']):
-                        thumbspng = '{uid}/{channel}/{time}_{st}.jpeg'.format(uid=devUid, channel=equipment_info['Channel'],
-                                                                              time=eventTime, st=i)
-                        if storage_location == 1:  # oss
-                            img = oss_img_bucket.sign_url('GET', thumbspng, 300)
-                            equipment_info['img_list'].append(img)
-                        elif region == 2 and storage_location == 2:  # 2:国内,aws
-                            response_url = aws_s3_guonei.generate_presigned_url('get_object',
-                                                                                Params={'Bucket': 'push',
-                                                                                        'Key': thumbspng},
-                                                                                ExpiresIn=300)
-                            img = response_url
-                            equipment_info['img_list'].append(img)
-                        elif region == 1 and storage_location == 2:  # 1:国外,aws
-                            response_url = aws_s3_guowai.generate_presigned_url('get_object',
-                                                                                Params={'Bucket': 'foreignpush',
-                                                                                        'Key': thumbspng},
-                                                                                ExpiresIn=300)
-                            img = response_url
-                            equipment_info['img_list'].append(img)
-
-                if devUid in uid_type_dict.keys():
-                    equipment_info['uid_type'] = uid_type_dict[devUid]['type']
-                    equipment_info['devNickName'] = uid_type_dict[devUid]['NickName']
+                        thumbspng = '{}/{}/{}_{}.jpeg'.format(uid, channel, event_time, i)
+                        if storage_location == 1:  # 阿里云oss
+                            img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
+                        else:
+                            params = {'Key': thumbspng}
+                            if region == 1:        # 国外AWS
+                                params['Bucket'] = 'foreignpush'
+                                img_url = aws_s3.generate_presigned_url(
+                                    'get_object', Params=params, ExpiresIn=300)
+                            else:                  # 国内AWS
+                                params['Bucket'] = 'push'
+                                img_url = aws_s3_cn.generate_presigned_url(
+                                    'get_object', Params=params, ExpiresIn=300)
+                        equipment_info['img_list'].append(img_url)
+
+                if uid in uid_type_dict.keys():
+                    equipment_info['uid_type'] = uid_type_dict[uid]['type']
+                    equipment_info['devNickName'] = uid_type_dict[uid]['NickName']
                 else:
                     equipment_info['uid_type'] = ''
 
-                equipment_info['borderCoords'] = '' if equipment_info['borderCoords'] == '' else json.loads(equipment_info['borderCoords'])  # ai消息坐标信息
+                equipment_info['borderCoords'] = '' if border_coords == '' else json.loads(border_coords)  # ai消息坐标信息
                 equipment_info['ai_event_type_list'] = []
                 # 如果是ai消息类型,则分解eventType, 如:123 -> [1,2,3]
-                if equipment_info['borderCoords'] and equipment_info['eventType'] in ai_all_event_type:
-                    equipment_info['ai_event_type_list'] = list(map(int, str(equipment_info['eventType'])))
-                if EquipmentInfoService.is_combo_tag(equipment_info['eventType'], equipment_info['eventTag']):
-                    equipment_info['ai_event_type_list'] += EquipmentInfoService.get_combo_types(equipment_info['eventType'], equipment_info['eventTag'])
+                if border_coords and event_type in ai_all_event_type:
+                    equipment_info['ai_event_type_list'] = list(map(int, str(event_type)))
+                if EquipmentInfoService.is_combo_tag(event_type, event_tag):
+                    equipment_info['ai_event_type_list'] += EquipmentInfoService.get_combo_types(event_type, event_tag)
+
                 res.append(equipment_info)
             return response.json(0, {'datas': res, 'count': count})
         except Exception as e:
-            print(repr(e))
+            print('error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return response.json(474)
 
     def do_update_interval(self, userID, request_dict, response):

+ 136 - 2
Service/EquipmentInfoService.py

@@ -11,10 +11,13 @@ import itertools
 import logging
 import time
 
-from django.db.models import Value, CharField, Q
+from django.db.models import Value, CharField, Q, F
 
 from Model.models import EquipmentInfoMonday, EquipmentInfoTuesday, EquipmentInfoWednesday, EquipmentInfoThursday, \
-    EquipmentInfoFriday, EquipmentInfoSaturday, EquipmentInfoSunday
+    EquipmentInfoFriday, EquipmentInfoSaturday, EquipmentInfoSunday, EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, \
+    EquipmentInfo4, EquipmentInfo5, EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10, \
+    EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15, EquipmentInfo16, \
+    EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20
 from Object.utils import LocalDateTimeUtil
 
 """
@@ -501,3 +504,134 @@ class EquipmentInfoService:
         if updated:
             updated_flag = True
         return updated_flag
+
+    @classmethod
+    def union_equipment_info(cls, user_id, uid_list, event_type, start_time, end_time, page, line):
+        """
+        联表查询推送数据
+        @param user_id:
+        @param uid_list:
+        @param event_type:
+        @param start_time:
+        @param end_time:
+        @param page:
+        @param line:
+        @return:
+        """
+        try:
+            kwargs = {
+                'device_user_id': user_id,
+                'event_time__range': (start_time, end_time),
+            }
+            event_type_kwargs = {}
+            if uid_list:
+                kwargs['device_uid__in'] = uid_list
+            if event_type:
+                # 多类型查询
+                event_type_list = cls.get_comb_event_type(event_type)
+                event_type_list = list(set(event_type_list))
+                tags = cls.get_event_tag(event_type)
+                if event_type_list:
+                    event_type_kwargs['event_type__in'] = event_type_list
+                    event_type_kwargs['event_tag'] = ''
+                    kwargs['event_tag__regex'] = tags
+                elif tags:
+                    kwargs['event_tag__regex'] = tags
+
+            if not event_type_kwargs:
+                # 新增tab_val字段记录表的标识:表编号+10
+                equipment_info_1 = EquipmentInfo1.objects.filter(**kwargs).annotate(tab_val=Value('11', output_field=CharField()))
+                equipment_info_2 = EquipmentInfo2.objects.filter(**kwargs).annotate(tab_val=Value('12', output_field=CharField()))
+                equipment_info_3 = EquipmentInfo3.objects.filter(**kwargs).annotate(tab_val=Value('13', output_field=CharField()))
+                equipment_info_4 = EquipmentInfo4.objects.filter(**kwargs).annotate(tab_val=Value('14', output_field=CharField()))
+                equipment_info_5 = EquipmentInfo5.objects.filter(**kwargs).annotate(tab_val=Value('15', output_field=CharField()))
+                equipment_info_6 = EquipmentInfo6.objects.filter(**kwargs).annotate(tab_val=Value('16', output_field=CharField()))
+                equipment_info_7 = EquipmentInfo7.objects.filter(**kwargs).annotate(tab_val=Value('17', output_field=CharField()))
+                equipment_info_8 = EquipmentInfo8.objects.filter(**kwargs).annotate(tab_val=Value('18', output_field=CharField()))
+                equipment_info_9 = EquipmentInfo9.objects.filter(**kwargs).annotate(tab_val=Value('19', output_field=CharField()))
+                equipment_info_10 = EquipmentInfo10.objects.filter(**kwargs).annotate(tab_val=Value('20', output_field=CharField()))
+                equipment_info_11 = EquipmentInfo11.objects.filter(**kwargs).annotate(tab_val=Value('11', output_field=CharField()))
+                equipment_info_12 = EquipmentInfo12.objects.filter(**kwargs).annotate(tab_val=Value('22', output_field=CharField()))
+                equipment_info_13 = EquipmentInfo13.objects.filter(**kwargs).annotate(tab_val=Value('23', output_field=CharField()))
+                equipment_info_14 = EquipmentInfo14.objects.filter(**kwargs).annotate(tab_val=Value('24', output_field=CharField()))
+                equipment_info_15 = EquipmentInfo15.objects.filter(**kwargs).annotate(tab_val=Value('25', output_field=CharField()))
+                equipment_info_16 = EquipmentInfo16.objects.filter(**kwargs).annotate(tab_val=Value('26', output_field=CharField()))
+                equipment_info_17 = EquipmentInfo17.objects.filter(**kwargs).annotate(tab_val=Value('27', output_field=CharField()))
+                equipment_info_18 = EquipmentInfo18.objects.filter(**kwargs).annotate(tab_val=Value('28', output_field=CharField()))
+                equipment_info_19 = EquipmentInfo19.objects.filter(**kwargs).annotate(tab_val=Value('29', output_field=CharField()))
+                equipment_info_20 = EquipmentInfo20.objects.filter(**kwargs).annotate(tab_val=Value('30', output_field=CharField()))
+            else:
+                equipment_info_1 = EquipmentInfo1.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('11', output_field=CharField()))
+                equipment_info_2 = EquipmentInfo2.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('12', output_field=CharField()))
+                equipment_info_3 = EquipmentInfo3.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('13', output_field=CharField()))
+                equipment_info_4 = EquipmentInfo4.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('14', output_field=CharField()))
+                equipment_info_5 = EquipmentInfo5.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('15', output_field=CharField()))
+                equipment_info_6 = EquipmentInfo6.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('16', output_field=CharField()))
+                equipment_info_7 = EquipmentInfo7.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('17', output_field=CharField()))
+                equipment_info_8 = EquipmentInfo8.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('18', output_field=CharField()))
+                equipment_info_9 = EquipmentInfo9.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('19', output_field=CharField()))
+                equipment_info_10 = EquipmentInfo10.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('20', output_field=CharField()))
+                equipment_info_11 = EquipmentInfo11.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('11', output_field=CharField()))
+                equipment_info_12 = EquipmentInfo12.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('22', output_field=CharField()))
+                equipment_info_13 = EquipmentInfo13.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('23', output_field=CharField()))
+                equipment_info_14 = EquipmentInfo14.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('24', output_field=CharField()))
+                equipment_info_15 = EquipmentInfo15.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('25', output_field=CharField()))
+                equipment_info_16 = EquipmentInfo16.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('26', output_field=CharField()))
+                equipment_info_17 = EquipmentInfo17.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('27', output_field=CharField()))
+                equipment_info_18 = EquipmentInfo18.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('28', output_field=CharField()))
+                equipment_info_19 = EquipmentInfo19.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('29', output_field=CharField()))
+                equipment_info_20 = EquipmentInfo20.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('30', output_field=CharField()))
+
+            equipment_info_union = equipment_info_1.union(
+                equipment_info_2, equipment_info_3, equipment_info_4, equipment_info_5, equipment_info_6, equipment_info_7,
+                equipment_info_8, equipment_info_9, equipment_info_10,
+                equipment_info_11, equipment_info_12, equipment_info_13, equipment_info_14, equipment_info_15,
+                equipment_info_16, equipment_info_17, equipment_info_18, equipment_info_19, equipment_info_20)
+
+            count = equipment_info_union.count()
+            if count == 0:
+                return None, 0
+
+            equipment_info_union = cls.get_equipment_info_union_page(equipment_info_union, page, line)
+            return equipment_info_union, count
+        except Exception as e:
+            print('error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def get_equipment_info_union_page(equipment_info_union, page, line):
+        """
+        获取查询结果集进行排序、分页,遍历重命名字典key(主要针对原函数返回结果集)
+        @param equipment_info_union: 设备信息结果集
+        @param page: 页数
+        @param line: 分页大小
+        @return: qs_page 遍历后的设备信息结果集
+        """
+        equipment_info_qs = equipment_info_union.values('id', 'device_uid', 'device_nick_name', 'channel', 'event_type',
+                                                        'status', 'answer_status', 'alarm', 'event_time', 'is_st',
+                                                        'add_time', 'storage_location', 'border_coords', 'tab_val',
+                                                        'event_tag')
+
+        equipment_info_qs = equipment_info_qs.order_by('-event_time')
+        equipment_info_qs = equipment_info_qs[(page - 1) * line:page * line]
+        for equipment_info in equipment_info_qs:
+            # id: 表标识+id
+            equipment_info['id'] = equipment_info['tab_val'] + str(equipment_info['id'])
+            equipment_info['devUid'] = equipment_info['device_uid']
+            equipment_info['devNickName'] = equipment_info['device_nick_name']
+            equipment_info['Channel'] = equipment_info['channel']
+            equipment_info['eventType'] = equipment_info['event_type']
+            equipment_info['eventTime'] = equipment_info['event_time']
+            equipment_info['receiveTime'] = equipment_info['event_time']
+            equipment_info['addTime'] = equipment_info['add_time']
+            equipment_info['borderCoords'] = equipment_info['border_coords']
+            equipment_info['eventTag'] = equipment_info['event_tag']
+            equipment_info.pop('device_uid')
+            equipment_info.pop('device_nick_name')
+            equipment_info.pop('channel')
+            equipment_info.pop('event_type')
+            equipment_info.pop('event_time')
+            equipment_info.pop('add_time')
+            equipment_info.pop('border_coords')
+            equipment_info.pop('tab_val')
+            equipment_info.pop('event_tag')
+        return equipment_info_qs