瀏覽代碼

点击推送信息跳转信息列表

peng 1 年之前
父節點
當前提交
f5d40b1148
共有 2 個文件被更改,包括 335 次插入90 次删除
  1. 158 10
      Controller/DetectControllerV2.py
  2. 177 80
      Service/EquipmentInfoService.py

+ 158 - 10
Controller/DetectControllerV2.py

@@ -55,6 +55,9 @@ class DetectControllerViewV2(View):
             # 查询推送信息
             # 查询推送信息
             elif operation == 'queryInfo':
             elif operation == 'queryInfo':
                 return self.do_query(request_dict, response, userID)
                 return self.do_query(request_dict, response, userID)
+            # 点击推送信息跳转到列表信息
+            elif operation == 'transferInfo':
+                return self.do_transfer(request_dict, response, userID)
             # 更新推送延迟
             # 更新推送延迟
             elif operation == 'updateInterval':
             elif operation == 'updateInterval':
                 return self.do_update_interval(userID, request_dict, response)
                 return self.do_update_interval(userID, request_dict, response)
@@ -329,7 +332,7 @@ class DetectControllerViewV2(View):
                 end_time = int(time.time())
                 end_time = int(time.time())
                 start_time = LocalDateTimeUtil.get_before_days_timestamp(end_time, 7)
                 start_time = LocalDateTimeUtil.get_before_days_timestamp(end_time, 7)
 
 
-            equipment_info_qs, count = EquipmentInfoService.\
+            equipment_info_qs, count = EquipmentInfoService. \
                 union_equipment_info(userID, uid_list, event_type, start_time, end_time, page, line)
                 union_equipment_info(userID, uid_list, event_type, start_time, end_time, page, line)
 
 
             # 查询设备类型,昵称
             # 查询设备类型,昵称
@@ -383,11 +386,11 @@ class DetectControllerViewV2(View):
                         img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
                         img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
                     else:
                     else:
                         params = {'Key': thumbspng}
                         params = {'Key': thumbspng}
-                        if region == 1:     # AWS国外
+                        if region == 1:  # AWS国外
                             params['Bucket'] = 'foreignpush'
                             params['Bucket'] = 'foreignpush'
                             img_url = aws_s3.generate_presigned_url(
                             img_url = aws_s3.generate_presigned_url(
                                 'get_object', Params=params, ExpiresIn=300)
                                 'get_object', Params=params, ExpiresIn=300)
-                        else:               # AWS国内
+                        else:  # AWS国内
                             params['Bucket'] = 'push'
                             params['Bucket'] = 'push'
                             img_url = aws_s3_cn.generate_presigned_url(
                             img_url = aws_s3_cn.generate_presigned_url(
                                 'get_object', Params=params, ExpiresIn=300)
                                 'get_object', Params=params, ExpiresIn=300)
@@ -410,17 +413,20 @@ class DetectControllerViewV2(View):
                     bucket = oss2.Bucket(auth, endpoint, bucket_name)
                     bucket = oss2.Bucket(auth, endpoint, bucket_name)
                     ts = '{}/vod{}/{}/ts0.ts'.format(uid, channel, event_time)
                     ts = '{}/vod{}/{}/ts0.ts'.format(uid, channel, event_time)
                     if storage_location == 1:  # 阿里云oss
                     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'})
+                        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]
                         equipment_info['img_list'] = [thumb0, thumb1, thumb2]
                     else:
                     else:
                         params = {'Key': ts}
                         params = {'Key': ts}
-                        if region == 1:     # AWS国外
+                        if region == 1:  # AWS国外
                             params['Bucket'] = 'foreignpush'
                             params['Bucket'] = 'foreignpush'
                             img_url = aws_s3.generate_presigned_url(
                             img_url = aws_s3.generate_presigned_url(
                                 'get_object', Params=params, ExpiresIn=300)
                                 'get_object', Params=params, ExpiresIn=300)
-                        else:               # AWS国内
+                        else:  # AWS国内
                             params['Bucket'] = 'push'
                             params['Bucket'] = 'push'
                             img_url = aws_s3_cn.generate_presigned_url(
                             img_url = aws_s3_cn.generate_presigned_url(
                                 'get_object', Params=params, ExpiresIn=300)
                                 'get_object', Params=params, ExpiresIn=300)
@@ -435,11 +441,153 @@ class DetectControllerViewV2(View):
                             img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
                             img_url = oss_img_bucket.sign_url('GET', thumbspng, 300)
                         else:
                         else:
                             params = {'Key': thumbspng}
                             params = {'Key': thumbspng}
-                            if region == 1:        # 国外AWS
+                            if region == 1:  # 国外AWS
                                 params['Bucket'] = 'foreignpush'
                                 params['Bucket'] = 'foreignpush'
                                 img_url = aws_s3.generate_presigned_url(
                                 img_url = aws_s3.generate_presigned_url(
                                     'get_object', Params=params, ExpiresIn=300)
                                     'get_object', Params=params, ExpiresIn=300)
-                            else:                  # 国内AWS
+                            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 border_coords == '' else eval(border_coords)  # ai消息坐标信息
+                equipment_info['ai_event_type_list'] = []
+                # 如果是ai消息类型,则分解eventType, 如:123 -> [1,2,3]
+                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:
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    def do_transfer(self, request_dict, response, userID):
+        event_time = request_dict.get('eventTime', None)
+        event_type = request_dict.get('eventType', None)
+        region = int(request_dict.get('region', None))
+        uid = request_dict.get('uid', None)
+
+        if not all([event_time, region, uid]):
+            return response.json(444)
+
+        try:
+            kwargs = {'device_user_id': userID, 'device_uid': uid, 'event_time': event_time, 'event_type': event_type}
+            equipment_info_qs, count = EquipmentInfoService.get_equipment_info(**kwargs)
+
+            # 查询设备类型,昵称
+            dvqs = Device_Info.objects.filter(UID=uid, userID_id=userID).values('UID', 'Type', 'NickName')
+            uid_type_dict = {}
+            for dv in dvqs:
+                uid_type_dict[dv['UID']] = {'type': dv['Type'], 'NickName': dv['NickName']}
+
+            # 没有推送数据返回空列表
+            if count == 0:
+                return response.json(0, {'datas': [], 'count': 0})
+
+            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 = 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:
+                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 = '{}/{}/{}.jpeg'.format(uid, channel, event_time)
+                    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'] = 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=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')
+                    if not vod_bucket_qs.exists():
+                        return response.json(173)
+                    bucket_name = vod_bucket_qs[0]['bucket']
+                    endpoint = vod_bucket_qs[0]['endpoint']
+                    bucket = oss2.Bucket(auth, endpoint, bucket_name)
+                    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]
+                    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 = '{}/{}/{}_{}.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'
                                 params['Bucket'] = 'push'
                                 img_url = aws_s3_cn.generate_presigned_url(
                                 img_url = aws_s3_cn.generate_presigned_url(
                                     'get_object', Params=params, ExpiresIn=300)
                                     'get_object', Params=params, ExpiresIn=300)

+ 177 - 80
Service/EquipmentInfoService.py

@@ -283,87 +283,167 @@ class EquipmentInfoService:
                 del event_type_kwargs['event_tag']
                 del event_type_kwargs['event_tag']
             if not event_type_list:
             if not event_type_list:
                 # 新增tab_val字段记录表的标识:表编号+10
                 # 新增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('21', 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()))
-                equipment_info_21 = EquipmentInfo21.objects.filter(**kwargs).annotate(tab_val=Value('31', output_field=CharField()))
-                equipment_info_22 = EquipmentInfo22.objects.filter(**kwargs).annotate(tab_val=Value('32', output_field=CharField()))
-                equipment_info_23 = EquipmentInfo23.objects.filter(**kwargs).annotate(tab_val=Value('33', output_field=CharField()))
-                equipment_info_24 = EquipmentInfo24.objects.filter(**kwargs).annotate(tab_val=Value('34', output_field=CharField()))
-                equipment_info_25 = EquipmentInfo25.objects.filter(**kwargs).annotate(tab_val=Value('35', output_field=CharField()))
-                equipment_info_26 = EquipmentInfo26.objects.filter(**kwargs).annotate(tab_val=Value('36', output_field=CharField()))
-                equipment_info_27 = EquipmentInfo27.objects.filter(**kwargs).annotate(tab_val=Value('37', output_field=CharField()))
-                equipment_info_28 = EquipmentInfo28.objects.filter(**kwargs).annotate(tab_val=Value('38', output_field=CharField()))
-                equipment_info_29 = EquipmentInfo29.objects.filter(**kwargs).annotate(tab_val=Value('39', output_field=CharField()))
-                equipment_info_30 = EquipmentInfo30.objects.filter(**kwargs).annotate(tab_val=Value('40', output_field=CharField()))
-                equipment_info_31 = EquipmentInfo31.objects.filter(**kwargs).annotate(tab_val=Value('41', output_field=CharField()))
-                equipment_info_32 = EquipmentInfo32.objects.filter(**kwargs).annotate(tab_val=Value('42', output_field=CharField()))
-                equipment_info_33 = EquipmentInfo33.objects.filter(**kwargs).annotate(tab_val=Value('43', output_field=CharField()))
-                equipment_info_34 = EquipmentInfo34.objects.filter(**kwargs).annotate(tab_val=Value('44', output_field=CharField()))
-                equipment_info_35 = EquipmentInfo35.objects.filter(**kwargs).annotate(tab_val=Value('45', output_field=CharField()))
-                equipment_info_36 = EquipmentInfo36.objects.filter(**kwargs).annotate(tab_val=Value('46', output_field=CharField()))
-                equipment_info_37 = EquipmentInfo37.objects.filter(**kwargs).annotate(tab_val=Value('47', output_field=CharField()))
-                equipment_info_38 = EquipmentInfo38.objects.filter(**kwargs).annotate(tab_val=Value('48', output_field=CharField()))
-                equipment_info_39 = EquipmentInfo39.objects.filter(**kwargs).annotate(tab_val=Value('49', output_field=CharField()))
-                equipment_info_40 = EquipmentInfo40.objects.filter(**kwargs).annotate(tab_val=Value('50', output_field=CharField()))
+                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('21', 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()))
+                equipment_info_21 = EquipmentInfo21.objects.filter(**kwargs).annotate(
+                    tab_val=Value('31', output_field=CharField()))
+                equipment_info_22 = EquipmentInfo22.objects.filter(**kwargs).annotate(
+                    tab_val=Value('32', output_field=CharField()))
+                equipment_info_23 = EquipmentInfo23.objects.filter(**kwargs).annotate(
+                    tab_val=Value('33', output_field=CharField()))
+                equipment_info_24 = EquipmentInfo24.objects.filter(**kwargs).annotate(
+                    tab_val=Value('34', output_field=CharField()))
+                equipment_info_25 = EquipmentInfo25.objects.filter(**kwargs).annotate(
+                    tab_val=Value('35', output_field=CharField()))
+                equipment_info_26 = EquipmentInfo26.objects.filter(**kwargs).annotate(
+                    tab_val=Value('36', output_field=CharField()))
+                equipment_info_27 = EquipmentInfo27.objects.filter(**kwargs).annotate(
+                    tab_val=Value('37', output_field=CharField()))
+                equipment_info_28 = EquipmentInfo28.objects.filter(**kwargs).annotate(
+                    tab_val=Value('38', output_field=CharField()))
+                equipment_info_29 = EquipmentInfo29.objects.filter(**kwargs).annotate(
+                    tab_val=Value('39', output_field=CharField()))
+                equipment_info_30 = EquipmentInfo30.objects.filter(**kwargs).annotate(
+                    tab_val=Value('40', output_field=CharField()))
+                equipment_info_31 = EquipmentInfo31.objects.filter(**kwargs).annotate(
+                    tab_val=Value('41', output_field=CharField()))
+                equipment_info_32 = EquipmentInfo32.objects.filter(**kwargs).annotate(
+                    tab_val=Value('42', output_field=CharField()))
+                equipment_info_33 = EquipmentInfo33.objects.filter(**kwargs).annotate(
+                    tab_val=Value('43', output_field=CharField()))
+                equipment_info_34 = EquipmentInfo34.objects.filter(**kwargs).annotate(
+                    tab_val=Value('44', output_field=CharField()))
+                equipment_info_35 = EquipmentInfo35.objects.filter(**kwargs).annotate(
+                    tab_val=Value('45', output_field=CharField()))
+                equipment_info_36 = EquipmentInfo36.objects.filter(**kwargs).annotate(
+                    tab_val=Value('46', output_field=CharField()))
+                equipment_info_37 = EquipmentInfo37.objects.filter(**kwargs).annotate(
+                    tab_val=Value('47', output_field=CharField()))
+                equipment_info_38 = EquipmentInfo38.objects.filter(**kwargs).annotate(
+                    tab_val=Value('48', output_field=CharField()))
+                equipment_info_39 = EquipmentInfo39.objects.filter(**kwargs).annotate(
+                    tab_val=Value('49', output_field=CharField()))
+                equipment_info_40 = EquipmentInfo40.objects.filter(**kwargs).annotate(
+                    tab_val=Value('50', output_field=CharField()))
             else:
             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('21', 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_21 = EquipmentInfo21.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('31', output_field=CharField()))
-                equipment_info_22 = EquipmentInfo22.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('32', output_field=CharField()))
-                equipment_info_23 = EquipmentInfo23.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('33', output_field=CharField()))
-                equipment_info_24 = EquipmentInfo24.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('34', output_field=CharField()))
-                equipment_info_25 = EquipmentInfo25.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('35', output_field=CharField()))
-                equipment_info_26 = EquipmentInfo26.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('36', output_field=CharField()))
-                equipment_info_27 = EquipmentInfo27.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('37', output_field=CharField()))
-                equipment_info_28 = EquipmentInfo28.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('38', output_field=CharField()))
-                equipment_info_29 = EquipmentInfo29.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('39', output_field=CharField()))
-                equipment_info_30 = EquipmentInfo30.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('40', output_field=CharField()))
-                equipment_info_31 = EquipmentInfo31.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('41', output_field=CharField()))
-                equipment_info_32 = EquipmentInfo32.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('42', output_field=CharField()))
-                equipment_info_33 = EquipmentInfo33.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('43', output_field=CharField()))
-                equipment_info_34 = EquipmentInfo34.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('44', output_field=CharField()))
-                equipment_info_35 = EquipmentInfo35.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('45', output_field=CharField()))
-                equipment_info_36 = EquipmentInfo36.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('46', output_field=CharField()))
-                equipment_info_37 = EquipmentInfo37.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('47', output_field=CharField()))
-                equipment_info_38 = EquipmentInfo38.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('48', output_field=CharField()))
-                equipment_info_39 = EquipmentInfo39.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('49', output_field=CharField()))
-                equipment_info_40 = EquipmentInfo40.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(tab_val=Value('50', output_field=CharField()))
+                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('21', 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_21 = EquipmentInfo21.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('31', output_field=CharField()))
+                equipment_info_22 = EquipmentInfo22.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('32', output_field=CharField()))
+                equipment_info_23 = EquipmentInfo23.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('33', output_field=CharField()))
+                equipment_info_24 = EquipmentInfo24.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('34', output_field=CharField()))
+                equipment_info_25 = EquipmentInfo25.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('35', output_field=CharField()))
+                equipment_info_26 = EquipmentInfo26.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('36', output_field=CharField()))
+                equipment_info_27 = EquipmentInfo27.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('37', output_field=CharField()))
+                equipment_info_28 = EquipmentInfo28.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('38', output_field=CharField()))
+                equipment_info_29 = EquipmentInfo29.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('39', output_field=CharField()))
+                equipment_info_30 = EquipmentInfo30.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('40', output_field=CharField()))
+                equipment_info_31 = EquipmentInfo31.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('41', output_field=CharField()))
+                equipment_info_32 = EquipmentInfo32.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('42', output_field=CharField()))
+                equipment_info_33 = EquipmentInfo33.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('43', output_field=CharField()))
+                equipment_info_34 = EquipmentInfo34.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('44', output_field=CharField()))
+                equipment_info_35 = EquipmentInfo35.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('45', output_field=CharField()))
+                equipment_info_36 = EquipmentInfo36.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('46', output_field=CharField()))
+                equipment_info_37 = EquipmentInfo37.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('47', output_field=CharField()))
+                equipment_info_38 = EquipmentInfo38.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('48', output_field=CharField()))
+                equipment_info_39 = EquipmentInfo39.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('49', output_field=CharField()))
+                equipment_info_40 = EquipmentInfo40.objects.filter(Q(**kwargs) | Q(**event_type_kwargs)).annotate(
+                    tab_val=Value('50', output_field=CharField()))
 
 
             equipment_info_union = equipment_info_1.union(
             equipment_info_union = equipment_info_1.union(
                 equipment_info_2, equipment_info_3, equipment_info_4, equipment_info_5, equipment_info_6,
                 equipment_info_2, equipment_info_3, equipment_info_4, equipment_info_5, equipment_info_6,
@@ -478,3 +558,20 @@ class EquipmentInfoService:
         for equipment_info_model in EQUIPMENT_INFO_MODEL_LIST:
         for equipment_info_model in EQUIPMENT_INFO_MODEL_LIST:
             count += equipment_info_model.objects.filter(**kwargs).count()
             count += equipment_info_model.objects.filter(**kwargs).count()
         return count
         return count
+
+    @classmethod
+    def get_equipment_info(cls, **kwargs):
+        """
+        查询推送数据
+        @param kwargs:
+        @return: qs
+        """
+        equipment_info_1 = EQUIPMENT_INFO_MODEL_LIST[0].objects.filter(**kwargs).annotate(
+            tab_val=Value('11', output_field=CharField()))
+        for index, equipment_info_model in enumerate(EQUIPMENT_INFO_MODEL_LIST[1:]):
+            tab_val = str(index + 2)
+            equipment_info_union = equipment_info_1.union(equipment_info_model.objects.filter(**kwargs).annotate(
+                tab_val=Value(tab_val, output_field=CharField())))
+        equipment_info_union = cls.get_equipment_info_union_page(equipment_info_union, 1, 10)
+        count = equipment_info_union.count()
+        return equipment_info_union, count