locky преди 1 година
родител
ревизия
1c47bc8b81
променени са 3 файла, в които са добавени 645 реда и са изтрити 9 реда
  1. 2 1
      Controller/Cron/CronTaskController.py
  2. 580 0
      Model/models.py
  3. 63 8
      Service/EquipmentInfoService.py

+ 2 - 1
Controller/Cron/CronTaskController.py

@@ -34,6 +34,7 @@ from Object.ResponseObject import ResponseObject
 from Object.utils import LocalDateTimeUtil
 from Object.utils.PayPalUtil import PayPalService
 from Service.CommonService import CommonService
+from Service.EquipmentInfoService import EQUIPMENT_INFO_MODEL_LIST
 from Service.VodHlsService import SplitVodHlsObject
 from Object.UnicomObject import UnicomObjeect
 from Object.WechatPayObject import WechatPayObject
@@ -298,7 +299,7 @@ class CronDelDataView(View):
         # 每次删除条数
         size = 5000
 
-        for i in range(1, 21):
+        for i in range(1, len(EQUIPMENT_INFO_MODEL_LIST)+1):
             sql = "DELETE FROM equipment_info_{} WHERE add_time< %s LIMIT %s ".format(i)
             cursor.execute(sql, [expiration_time, size])
 

+ 580 - 0
Model/models.py

@@ -915,6 +915,586 @@ class EquipmentInfo20(models.Model):
         app_label = 'PushModel'
 
 
+class EquipmentInfo21(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_21'
+        verbose_name = '推送数据表21'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo22(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_22'
+        verbose_name = '推送数据表22'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo23(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_23'
+        verbose_name = '推送数据表23'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo24(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_24'
+        verbose_name = '推送数据表24'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo25(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_25'
+        verbose_name = '推送数据表25'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo26(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_26'
+        verbose_name = '推送数据表26'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo27(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_27'
+        verbose_name = '推送数据表27'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo28(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_28'
+        verbose_name = '推送数据表28'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo29(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_29'
+        verbose_name = '推送数据表29'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo30(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_30'
+        verbose_name = '推送数据表30'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo31(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_31'
+        verbose_name = '推送数据表31'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo32(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_32'
+        verbose_name = '推送数据表32'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo33(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_33'
+        verbose_name = '推送数据表33'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo34(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_34'
+        verbose_name = '推送数据表34'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo35(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_35'
+        verbose_name = '推送数据表35'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo36(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_36'
+        verbose_name = '推送数据表36'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo37(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_37'
+        verbose_name = '推送数据表37'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo38(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_38'
+        verbose_name = '推送数据表38'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo39(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_39'
+        verbose_name = '推送数据表39'
+        app_label = 'PushModel'
+
+
+class EquipmentInfo40(models.Model):
+    id = models.BigAutoField(primary_key=True, verbose_name='主键')
+    device_user_id = models.CharField(default='', max_length=32, db_index=True, verbose_name='用户id')
+    device_uid = models.CharField(default='', max_length=32, db_index=True, verbose_name='设备uid')
+    device_nick_name = models.CharField(default='', max_length=32, verbose_name='设备昵称')
+    channel = models.PositiveSmallIntegerField(default=1, verbose_name='设备通道')
+    # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
+    # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
+    # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
+    event_type = models.IntegerField(default=0, verbose_name='事件类型')
+    # (51,)表示一个事件标签。(51,57,)两个事件标签
+    event_tag = models.CharField(default='', max_length=128, db_index=True, verbose_name='事件标签')
+    alarm = models.CharField(default='', max_length=256, verbose_name='报警信息')
+    # 0:无图, 1:单图, 3:多图
+    is_st = models.PositiveSmallIntegerField(default=0, verbose_name='图片信息')
+    # 1: 阿里云, 2: AWS
+    storage_location = models.PositiveSmallIntegerField(default=1, verbose_name='存储桶位置')
+    border_coords = models.TextField(default='', verbose_name='ai类型图片边框位置信息')
+    status = models.BooleanField(default=False, verbose_name='已读状态')   # 0: 未读, 1: 已读
+    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
+    event_time = models.CharField(default='', max_length=10, db_index=True, verbose_name='上报时间')
+    add_time = models.IntegerField(default=0, db_index=True, verbose_name='添加时间')
+
+    class Meta:
+        db_table = 'equipment_info_40'
+        verbose_name = '推送数据表40'
+        app_label = 'PushModel'
+
+
 class PushInaccurateFeedback(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='主键id')
     equipment_info_id = models.CharField(default='', max_length=32, verbose_name='推送表id')

+ 63 - 8
Service/EquipmentInfoService.py

@@ -12,12 +12,22 @@ from django.db.models import Value, CharField, Q
 from Model.models import EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5, \
     EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10, \
     EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15, EquipmentInfo16, \
-    EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20
+    EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20, \
+    EquipmentInfo21, EquipmentInfo22, EquipmentInfo23, EquipmentInfo24, EquipmentInfo25, EquipmentInfo26, \
+    EquipmentInfo27, EquipmentInfo28, EquipmentInfo29, EquipmentInfo30, \
+    EquipmentInfo31, EquipmentInfo32, EquipmentInfo33, EquipmentInfo34, EquipmentInfo35, EquipmentInfo36, \
+    EquipmentInfo37, EquipmentInfo38, EquipmentInfo39, EquipmentInfo40
 
-EQUIPMENT_INFO_MODEL_LIST = [EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5,
-                             EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10,
-                             EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15,
-                             EquipmentInfo16, EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20]
+EQUIPMENT_INFO_MODEL_LIST = [
+    EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5, EquipmentInfo6,
+    EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10,
+    EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15, EquipmentInfo16,
+    EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20,
+    EquipmentInfo21, EquipmentInfo22, EquipmentInfo23, EquipmentInfo24, EquipmentInfo25, EquipmentInfo26,
+    EquipmentInfo27, EquipmentInfo28, EquipmentInfo29, EquipmentInfo30,
+    EquipmentInfo31, EquipmentInfo32, EquipmentInfo33, EquipmentInfo34, EquipmentInfo35, EquipmentInfo36,
+    EquipmentInfo37, EquipmentInfo38, EquipmentInfo39, EquipmentInfo40
+]
 
 
 class EquipmentInfoService:
@@ -293,6 +303,26 @@ class EquipmentInfoService:
                 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:
                 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()))
@@ -314,12 +344,37 @@ class EquipmentInfoService:
                 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_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_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)
+                equipment_info_16, equipment_info_17, equipment_info_18, equipment_info_19, equipment_info_20,
+                equipment_info_21, equipment_info_22, equipment_info_23, equipment_info_24, equipment_info_25,
+                equipment_info_26, equipment_info_27, equipment_info_28, equipment_info_29, equipment_info_30,
+                equipment_info_31, equipment_info_32, equipment_info_33, equipment_info_34, equipment_info_35,
+                equipment_info_36, equipment_info_37, equipment_info_38, equipment_info_39, equipment_info_40
+            )
 
             count = equipment_info_union.count()
             if count == 0: