Эх сурвалжийг харах

删除星期推送表,修改关联函数

locky 1 жил өмнө
parent
commit
a3d3c0407d

+ 1 - 3
AdminController/DeviceManagementController.py

@@ -226,9 +226,7 @@ class DeviceManagement(View):
                 Device_Info.objects.filter(id=deviceID).delete()
                 UidPushModel.objects.filter(uid_set__uid=uid).delete()
                 # 删除推送消息
-                for val in range(1, 8):
-                    EquipmentInfoService.get_equipment_info_model('', val). \
-                        filter(device_user_id=userID, device_uid=uid).delete()
+                EquipmentInfoService.delete_all_equipment_info(device_user_id=userID, device_uid=uid)
             return response.json(0)
         except Exception as e:
             print(e)

+ 1 - 52
Controller/Cron/CronCloudPhotoController.py

@@ -42,64 +42,13 @@ class CronCloudPhotoView(View):
 
     def validation(self, request_dict, request, operation):
         response = ResponseObject()
-        if operation == 'get-photo':
-            return self.get_photo(response)
-        elif operation == 'cache-uid-set':
+        if operation == 'cache-uid-set':
             return self.cache_photo_uid_set(response)
         elif operation == 'generate-video':
             return self.generate_video(response)
         else:
             return response.json(404)
 
-    @classmethod
-    def get_photo(cls, response):
-        """
-        定时获取设备消息推送图
-        """
-        try:
-            now_time = int(time.time())
-            LOGGER.info('进入缓存uid进行获取消息推送图片进行对象copy:{}'.format(now_time))
-            redis = RedisObject().CONN
-            uid_set_cache = redis.lrange(UID_KEY, 0, -1)
-            if not uid_set_cache:
-                return response.json(0)
-            uid_set_cache = list(uid_set_cache)
-            today = datetime.date.today()
-            time_stamp = cls.get_month_stamp()
-            s3 = AmazonS3Util(ACCESS_KEY_ID, SECRET_ACCESS_KEY, REGION_NAME)
-            for item in uid_set_cache:
-                try:
-                    eq_qs = EquipmentInfoService.get_equipment_info_model(str(today))
-                    item = str(item, encoding="utf-8")
-                    last_date = LocalDateTimeUtil.get_cur_month_end()
-                    start_time, end_time = LocalDateTimeUtil.get_start_and_end_time(last_date, '%Y-%m-%d')
-                    eq_qs = eq_qs.filter(event_time__gt=time_stamp, event_time__lt=end_time, is_st=1, device_uid=item) \
-                        .values('device_uid', 'channel', 'event_time', 'device_nick_name')
-                    count = eq_qs.count()
-                    page = int(count / 2) if count > 1 else count
-                    redis.lrem(UID_KEY, 0, item)
-                    if page == 0:
-                        continue
-                    eq_qs = eq_qs[(page - 1) * 1:page * 1]
-                    eq_vo = eq_qs[0]
-                    file_path = '{uid}/{channel}/{event_time}.jpeg'.format(uid=eq_vo['device_uid'],
-                                                                           channel=eq_vo['channel'],
-                                                                           event_time=eq_vo['event_time'])
-                    s3.copy_obj(PUSH_BUCKET, PUSH_CLOUD_PHOTO, file_path)
-                    push_data = {'type': 0, 'uid': eq_vo['device_uid'], 'channel': eq_vo['channel'],
-                                 'event_time': eq_vo['event_time'], 'updated_time': now_time, 'created_time': now_time,
-                                 'device_nick_name': eq_vo['device_nick_name']}
-                    DevicePicturePushInfo.objects.create(**push_data)
-                except Exception as e:
-                    LOGGER.info('异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
-                    redis.lrem(UID_KEY, 0, item)
-                    continue
-            return response.json(0)
-        except Exception as e:
-            print(e)
-            LOGGER.info('--->抽取推送图片异常:{}'.format(traceback.format_exc()))
-            return response.json(177, repr(e))
-
     @classmethod
     def cache_photo_uid_set(cls, response):
         """

+ 5 - 8
Controller/EquipmentManagerV3.py

@@ -11,8 +11,7 @@ from django.db import transaction
 from django.db.models import Q
 from django.views.generic.base import View
 
-from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY, SERVER_DOMAIN_LIST, SERVER_DOMAIN_TEST, \
-    SERVER_DOMAIN_CN, SERVER_DOMAIN_US, SERVER_DOMAIN_EUR
+from Ansjer.config import OSS_STS_ACCESS_SECRET, OSS_STS_ACCESS_KEY
 from Controller.CheckUserData import RandomStr
 from Controller.DeviceConfirmRegion import Device_Region
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
@@ -23,7 +22,6 @@ from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidC
     DeviceCloudPhotoInfo, UidPushModel, ExperienceContextModel, LogModel
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
-from Object.utils import LocalDateTimeUtil
 from Service.CommonService import CommonService
 from Service.EquipmentInfoService import EquipmentInfoService
 from Service.ModelService import ModelService
@@ -1051,11 +1049,11 @@ class EquipmentManagerV3(View):
             dvq = Device_Info.objects.filter(UID=UID)
             dvq = dvq.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID')
             if not dvq.exists():
-                return response.json(0, {})
+                return response.json(0, [])
             qs = Device_User.objects.filter(userID=dvq[0]['vodPrimaryUserID']) \
                 .values('userID', 'NickName', 'username', 'userEmail', 'phone')
             if not qs.exists():
-                return response.json(0, {})
+                return response.json(0, [])
             nickname = qs[0]['username']
             phone = qs[0]['phone']
             username = qs[0]['username']
@@ -1152,9 +1150,8 @@ class EquipmentManagerV3(View):
     @classmethod
     def async_del_message(cls, uid):
         try:
-            # 异步删除推送消息
-            for val in range(1, 8):
-                EquipmentInfoService.get_equipment_info_model('', val).filter(device_uid=uid).delete()
+            # 删除推送消息
+            EquipmentInfoService.delete_all_equipment_info(device_uid=uid)
             serial_number = CommonService.get_serial_number_by_uid(uid)
             # 删除iccid用户信息
             iccid_info_qs = UnicomDeviceInfo.objects.filter(serial_no=serial_number)

+ 40 - 278
Model/models.py

@@ -335,244 +335,6 @@ class Equipment_Info(models.Model):
         app_label = "PushModel"
 
 
-class EquipmentInfoMonday(models.Model):
-    id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
-    device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
-    device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
-    device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
-    channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
-    event_type = models.IntegerField(default=0, blank=True,
-                                     verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
-                                                  u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
-                                                  u'702:摄像头休眠,703:摄像头唤醒,'
-                                                  u'704:电量过低)')
-    status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
-    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
-    alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
-    event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
-    receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)')  # 0 否,1 是图,2,视频
-    storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
-    border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
-    # (51,)表示一个事件标签。(51,57,)两个事件标签
-    event_tag = models.CharField(blank=True, default='', db_index=True, max_length=128, verbose_name=u'事件标签')
-    add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'equipment_info_monday'
-        verbose_name = u'星期一设备信息推送表'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "PushModel"
-
-
-class EquipmentInfoTuesday(models.Model):
-    id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
-    device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
-    device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
-    device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
-    channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
-    event_type = models.IntegerField(default=0, blank=True,
-                                     verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
-                                                  u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
-                                                  u'702:摄像头休眠,703:摄像头唤醒,'
-                                                  u'704:电量过低)')
-    status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
-    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
-    alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
-    event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
-    receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)')  # 0 否,1 是图,2,视频
-    storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
-    border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
-    # (51,)表示一个事件标签。(51,57,)两个事件标签
-    event_tag = models.CharField(blank=True, default='', db_index=True, max_length=128, verbose_name=u'事件标签')
-    add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'equipment_info_tuesday'
-        verbose_name = u'星期二设备信息推送表'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "PushModel"
-
-
-class EquipmentInfoWednesday(models.Model):
-    id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
-    device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
-    device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
-    device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
-    channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
-    event_type = models.IntegerField(default=0, blank=True,
-                                     verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
-                                                  u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
-                                                  u'702:摄像头休眠,703:摄像头唤醒,'
-                                                  u'704:电量过低)')
-    status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
-    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
-    alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
-    event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
-    receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)')  # 0 否,1 是图,2,视频
-    storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
-    border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
-    # (51,)表示一个事件标签。(51,57,)两个事件标签
-    event_tag = models.CharField(blank=True, default='', db_index=True, max_length=128, verbose_name=u'事件标签')
-    add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'equipment_info_wednesday'
-        verbose_name = u'星期三设备信息推送表'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "PushModel"
-
-
-class EquipmentInfoThursday(models.Model):
-    id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
-    device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
-    device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
-    device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
-    channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
-    event_type = models.IntegerField(default=0, blank=True,
-                                     verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
-                                                  u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
-                                                  u'702:摄像头休眠,703:摄像头唤醒,'
-                                                  u'704:电量过低)')
-    status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
-    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
-    alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
-    event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
-    receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)')  # 0 否,1 是图,2,视频
-    storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
-    border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
-    # (51,)表示一个事件标签。(51,57,)两个事件标签
-    event_tag = models.CharField(blank=True, default='', db_index=True, max_length=128, verbose_name=u'事件标签')
-    add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'equipment_info_thursday'
-        verbose_name = u'星期四设备信息推送表'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "PushModel"
-
-
-class EquipmentInfoFriday(models.Model):
-    id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
-    device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
-    device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
-    device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
-    channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
-    event_type = models.IntegerField(default=0, blank=True,
-                                     verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
-                                                  u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
-                                                  u'702:摄像头休眠,703:摄像头唤醒,'
-                                                  u'704:电量过低)')
-    status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
-    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
-    alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
-    event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
-    receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)')  # 0 否,1 是图,2,视频
-    storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
-    border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
-    # (51,)表示一个事件标签。(51,57,)两个事件标签
-    event_tag = models.CharField(blank=True, default='', db_index=True, max_length=128, verbose_name=u'事件标签')
-    add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'equipment_info_friday'
-        verbose_name = u'星期五设备信息推送表'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "PushModel"
-
-
-class EquipmentInfoSaturday(models.Model):
-    id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
-    device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
-    device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
-    device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
-    channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
-    event_type = models.IntegerField(default=0, blank=True,
-                                     verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
-                                                  u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
-                                                  u'702:摄像头休眠,703:摄像头唤醒,'
-                                                  u'704:电量过低)')
-    status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
-    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
-    alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
-    event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
-    receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)')  # 0 否,1 是图,2,视频
-    storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
-    border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
-    # (51,)表示一个事件标签。(51,57,)两个事件标签
-    event_tag = models.CharField(blank=True, default='', db_index=True, max_length=128, verbose_name=u'事件标签')
-    add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'equipment_info_saturday'
-        verbose_name = u'星期六设备信息推送表'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "PushModel"
-
-
-class EquipmentInfoSunday(models.Model):
-    id = models.BigAutoField(primary_key=True, verbose_name=u'自增标记ID')
-    device_user_id = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'用户id')
-    device_uid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备uid')
-    device_nick_name = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
-    channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
-    event_type = models.IntegerField(default=0, blank=True,
-                                     verbose_name=u'事件类型(0:代表空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),51:移动侦测,'
-                                                  u'52:传感器报警,53:影像遗失,54:PIR,55:门磁报警, 56:外部发报, 57:人型报警,'
-                                                  u'702:摄像头休眠,703:摄像头唤醒,'
-                                                  u'704:电量过低)')
-    status = models.BooleanField(blank=True, default=False, verbose_name=u'事件状态(0,1)')
-    answer_status = models.BooleanField(default=False, verbose_name='接听状态')  # 0: 未接听,1: 已接听
-    alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
-    event_time = models.CharField(blank=True, db_index=True, default='', max_length=16, verbose_name=u'设备报警时间')
-    receive_time = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    is_st = models.SmallIntegerField(default=0, verbose_name='是否截图(0:否,1:图片,2:视频)')  # 0 否,1 是图,2,视频
-    storage_location = models.SmallIntegerField(default=1, verbose_name='数据信息存储位置。1:阿里云oss,2:aws')
-    border_coords = models.TextField(default='', blank=True, verbose_name=u'ai类型图片边框位置信息')
-    # (51,)表示一个事件标签。(51,57,)两个事件标签
-    event_tag = models.CharField(blank=True, default='', db_index=True, max_length=128, verbose_name=u'事件标签')
-    add_time = models.IntegerField(verbose_name='添加时间', db_index=True, default=0)
-
-    def __str__(self):
-        return self.id
-
-    class Meta:
-        db_table = 'equipment_info_sunday'
-        verbose_name = u'星期天设备信息推送表'
-        verbose_name_plural = verbose_name
-        ordering = ('-id',)
-        app_label = "PushModel"
-
-
 class EquipmentInfo1(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')
@@ -582,7 +344,7 @@ class EquipmentInfo1(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -591,7 +353,7 @@ class EquipmentInfo1(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -611,7 +373,7 @@ class EquipmentInfo2(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -620,7 +382,7 @@ class EquipmentInfo2(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -640,7 +402,7 @@ class EquipmentInfo3(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -649,7 +411,7 @@ class EquipmentInfo3(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -669,7 +431,7 @@ class EquipmentInfo4(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -678,7 +440,7 @@ class EquipmentInfo4(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -698,7 +460,7 @@ class EquipmentInfo5(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -707,7 +469,7 @@ class EquipmentInfo5(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -727,7 +489,7 @@ class EquipmentInfo6(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -736,7 +498,7 @@ class EquipmentInfo6(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -756,7 +518,7 @@ class EquipmentInfo7(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -765,7 +527,7 @@ class EquipmentInfo7(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -785,7 +547,7 @@ class EquipmentInfo8(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -794,7 +556,7 @@ class EquipmentInfo8(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -814,7 +576,7 @@ class EquipmentInfo9(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -823,7 +585,7 @@ class EquipmentInfo9(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -843,7 +605,7 @@ class EquipmentInfo10(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -852,7 +614,7 @@ class EquipmentInfo10(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -872,7 +634,7 @@ class EquipmentInfo11(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -881,7 +643,7 @@ class EquipmentInfo11(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -901,7 +663,7 @@ class EquipmentInfo12(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -910,7 +672,7 @@ class EquipmentInfo12(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -930,7 +692,7 @@ class EquipmentInfo13(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -939,7 +701,7 @@ class EquipmentInfo13(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -959,7 +721,7 @@ class EquipmentInfo14(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -968,7 +730,7 @@ class EquipmentInfo14(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -988,7 +750,7 @@ class EquipmentInfo15(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -997,7 +759,7 @@ class EquipmentInfo15(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -1017,7 +779,7 @@ class EquipmentInfo16(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -1026,7 +788,7 @@ class EquipmentInfo16(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -1046,7 +808,7 @@ class EquipmentInfo17(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -1055,7 +817,7 @@ class EquipmentInfo17(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -1075,7 +837,7 @@ class EquipmentInfo18(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -1084,7 +846,7 @@ class EquipmentInfo18(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -1104,7 +866,7 @@ class EquipmentInfo19(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -1113,7 +875,7 @@ class EquipmentInfo19(models.Model):
     # 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: 已读
+    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='添加时间')
@@ -1133,7 +895,7 @@ class EquipmentInfo20(models.Model):
     # 0:空字符,1:ai人,2:ai动物,3:车,123:组合类型(人/车/动物),
     # 51:移动侦测,52:传感器报警,53:影像遗失,54:PIR,55:门磁报警,56:外部发报,57:人型报警,
     # 702:摄像头休眠,703:摄像头唤醒,704:电量过低
-    event_type = models.PositiveSmallIntegerField(default=0, verbose_name='事件类型')
+    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='报警信息')
@@ -1142,7 +904,7 @@ class EquipmentInfo20(models.Model):
     # 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: 已读
+    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='添加时间')

+ 5 - 216
Service/EquipmentInfoService.py

@@ -6,235 +6,24 @@
 @Email   : zhangdongming@asj6.wecom.work
 @Software: PyCharm
 """
-import datetime
 import itertools
-import time
-
 from django.db.models import Value, CharField, Q
 
-from Model.models import EquipmentInfoMonday, EquipmentInfoTuesday, EquipmentInfoWednesday, EquipmentInfoThursday, \
-    EquipmentInfoFriday, EquipmentInfoSaturday, EquipmentInfoSunday, EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, \
-    EquipmentInfo4, EquipmentInfo5, EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10, \
+from Model.models import 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
 
 EQUIPMENT_INFO_MODEL_LIST = [EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5,
                              EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10,
                              EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15,
                              EquipmentInfo16, EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20]
 
-"""
-设备分表查询Service    
-因数据量不断增加,单表保留近七天数据进行分表优化设计
-进行拆分为七张表星期一至星期天进行分表存储。分担单表存储读写压力。
-"""
-
 
 class EquipmentInfoService:
-
-    @staticmethod
-    def get_equipment_info_model(dt, val=0):
-
-        """
-        根据日期判断是星期几,返回相应的Model对象
-        @param val: 1-7代表week
-        @param dt: 日期 例:2022-03-03
-        @return: 星期一至星期天equipment_info对象实例
-        """
-        week = 1
-        if dt:
-            week = LocalDateTimeUtil.date_to_week(dt)
-        if 0 < val < 8:
-            week = val
-        equipment_info = None
-        if week == 1:
-            equipment_info = EquipmentInfoMonday.objects.all().annotate(tab_val=Value('1', output_field=CharField()))
-        elif week == 2:
-            equipment_info = EquipmentInfoTuesday.objects.all().annotate(tab_val=Value('2', output_field=CharField()))
-        elif week == 3:
-            equipment_info = EquipmentInfoWednesday.objects.all().annotate(tab_val=Value('3', output_field=CharField()))
-        elif week == 4:
-            equipment_info = EquipmentInfoThursday.objects.all().annotate(tab_val=Value('4', output_field=CharField()))
-        elif week == 5:
-            equipment_info = EquipmentInfoFriday.objects.all().annotate(tab_val=Value('5', output_field=CharField()))
-        elif week == 6:
-            equipment_info = EquipmentInfoSaturday.objects.all().annotate(tab_val=Value('6', output_field=CharField()))
-        elif week == 7:
-            equipment_info = EquipmentInfoSunday.objects.all().annotate(tab_val=Value('7', output_field=CharField()))
-        return equipment_info
-
-    @classmethod
-    def find_by_start_time_equipment_info(cls, page, size, user_id, start_time, end_time, event_type,
-                                          uid_list):
-        """
-        通过start_time查找指定日期当天设备消息推送
-        @param page: 页数
-        @param size: 每页条数
-        @param user_id: 设备用户id
-        @param start_time: 开始时间
-        @param end_time: 结束时间
-        @param event_type: 事件类型
-        @param uid_list: 设备uid列表
-        @return: result 查询结果
-        """
-        if start_time and end_time:
-            start_date = datetime.datetime.fromtimestamp(int(start_time))
-            # 根据开始日期,获取设备信息查询对象
-            qs = EquipmentInfoService.get_equipment_info_model(str(start_date.date()), 0)
-            # 调用查询方法
-            qs = cls.query_equipment_info(qs, user_id, start_time, end_time, event_type,
-                                          uid_list)
-            # 时区问题
-            week = LocalDateTimeUtil.date_to_week(str(start_date.date()))
-            if week > 0:
-                # 根据筛选日期 查找昨天数据
-                yesterday = 7 if week == 1 else week - 1
-                yesterday_info = EquipmentInfoService.get_equipment_info_model('', yesterday)
-                yesterday_info = cls.query_equipment_info(yesterday_info, user_id, start_time, end_time, event_type,
-                                                          uid_list)
-
-                # 根据筛选日期 查找明天数据
-                tomorrow = 1 if week == 7 else week + 1
-                tomorrow_info = EquipmentInfoService.get_equipment_info_model('', tomorrow)
-                tomorrow_info = cls.query_equipment_info(tomorrow_info, user_id, start_time, end_time, event_type,
-                                                         uid_list)
-                qs = qs.union(yesterday_info, tomorrow_info, all=True)
-            if qs.exists():
-                count = qs.count()
-                qs_page = cls.get_equipment_info_page(qs, page, size)
-                return qs_page, count
-        return None, 0
-
-    @classmethod
-    def get_equipment_info_week_all(cls, page, size, user_id, start_time, end_time, event_type,
-                                    uid_list):
-        """
-        分表查询近七天设备消息推送
-        @param page: 页数
-        @param size: 分页大小
-        @param user_id: 设备用户id
-        @param start_time: 事件开始时间
-        @param end_time: 事件结束时间
-        @param event_type: 事件类型
-        @param uid_list: uid列表
-        @return: qs_page, count 结果集
-        """
-        # 星期一设备信息查询
-        monday_qs = EquipmentInfoService.get_equipment_info_model('', 1)
-        monday_qs = cls.query_equipment_info(monday_qs, user_id, start_time, end_time, event_type,
-                                             uid_list)
-        # 星期二设备信息查询
-        tuesday_qs = EquipmentInfoService.get_equipment_info_model('', 2)
-        tuesday_qs = cls.query_equipment_info(tuesday_qs, user_id, start_time, end_time, event_type,
-                                              uid_list)
-        # 星期三设备信息查询
-        wednesday_qs = EquipmentInfoService.get_equipment_info_model('', 3)
-        wednesday_qs = cls.query_equipment_info(wednesday_qs, user_id, start_time, end_time, event_type,
-                                                uid_list)
-        # 星期四设备信息查询
-        thursday_qs = EquipmentInfoService.get_equipment_info_model('', 4)
-        thursday_qs = cls.query_equipment_info(thursday_qs, user_id, start_time, end_time, event_type,
-                                               uid_list)
-        # 星期五设备信息查询
-        friday_qs = EquipmentInfoService.get_equipment_info_model('', 5)
-        friday_qs = cls.query_equipment_info(friday_qs, user_id, start_time, end_time, event_type,
-                                             uid_list)
-        # 星期六设备信息查询
-        saturday_qs = EquipmentInfoService.get_equipment_info_model('', 6)
-        saturday_qs = cls.query_equipment_info(saturday_qs, user_id, start_time, end_time, event_type,
-                                               uid_list)
-        # 星期天设备信息查询
-        sunday_qs = EquipmentInfoService.get_equipment_info_model('', 7)
-        sunday_qs = cls.query_equipment_info(sunday_qs, user_id, start_time, end_time, event_type,
-                                             uid_list)
-        result = monday_qs.union(tuesday_qs, wednesday_qs, thursday_qs, friday_qs, saturday_qs, sunday_qs, all=True)
-        count = result.count()
-        qs_page = cls.get_equipment_info_page(result, page, size)
-        return qs_page, count
-
-    @classmethod
-    def query_equipment_info(cls, qs, user_id, start_time, end_time, event_type,
-                             uid_list):
-        """
-        设备信息条件查询,根据分表设计,默认条件event_time大于七天前时间
-        @param qs: 设备信息查询对象
-        @param user_id: 设备用户id
-        @param start_time: 开始时间
-        @param end_time: 结束时间
-        @param event_type: 事件类型
-        @param uid_list: 设备uid列表
-        @return: result 设备信息结果集
-        """
-        now_time = int(time.time())
-        # 获取七天前时间戳
-        seven_days_before_time = LocalDateTimeUtil.get_before_days_timestamp(now_time, 7)
-        # 默认查询当前表event_time大于七天前时间
-        qs = qs.filter(event_time__gt=seven_days_before_time)
-        if user_id:
-            qs = qs.filter(device_user_id=user_id)
-        if event_type:
-            # 多类型查询
-            eventTypeList = cls.get_comb_event_type(event_type)
-            # eventTypeList += cls.get_combo_type_bins(event_type)
-            eventTypeList = list(set(eventTypeList))
-            tags = cls.get_event_tag(event_type)
-            if eventTypeList:
-                qs = qs.filter(Q(event_type__in=eventTypeList, event_tag='') | Q(event_tag__regex=tags))
-            elif tags:
-                qs = qs.filter(event_tag__regex=tags)
-        if start_time and end_time:
-            qs = qs.filter(event_time__range=(start_time, end_time))
-        else:
-            qs = qs.filter(event_time__range=(start_time, now_time))
-        if uid_list:
-            uid_list = uid_list.split(',')
-            qs = qs.filter(device_uid__in=uid_list)
-        return qs
-
-    @classmethod
-    def get_equipment_info_page(cls, equipment_info_qs, page, size):
-        """
-        获取查询结果集进行排序、分页,遍历重命名字典key(主要针对原函数返回结果集)
-        @param equipment_info_qs: 设备信息结果集
-        @param page: 页数
-        @param size: 分页大小
-        @return: qs_page 遍历后的设备信息结果集
-        """
-        equipment_info_qs = equipment_info_qs.values('id', 'device_uid', 'device_nick_name', 'channel', 'event_type',
-                                                     'status', 'answer_status', 'alarm',
-                                                     'event_time', 'receive_time', 'is_st', 'add_time',
-                                                     'storage_location', 'border_coords', 'tab_val', 'event_tag')
-
-        equipment_info_qs = equipment_info_qs.order_by('-event_time')
-        qs_page = equipment_info_qs[(page - 1) * size:page * size]
-        if not qs_page or not qs_page.exists() or qs_page.count == 0:
-            return qs_page
-        for item in qs_page:
-            # 星期表值
-            tab_val = item['tab_val']
-            # id = 星期表值+id
-            item['id'] = int(tab_val + str(item['id']))
-            item['devUid'] = item['device_uid']
-            item['devNickName'] = item['device_nick_name']
-            item['Channel'] = item['channel']
-            item['eventType'] = item['event_type']
-            item['eventTime'] = item['event_time']
-            item['receiveTime'] = item['receive_time']
-            item['addTime'] = item['add_time']
-            item['borderCoords'] = item['border_coords']
-            item['eventTag'] = item['event_tag']
-            item.pop('device_uid')
-            item.pop('device_nick_name')
-            item.pop('channel')
-            item.pop('event_type')
-            item.pop('event_time')
-            item.pop('receive_time')
-            item.pop('add_time')
-            item.pop('border_coords')
-            item.pop('tab_val')
-            item.pop('event_tag')
-        return qs_page
+    """
+    推送数据分表,封装常用函数
+    """
 
     @classmethod
     def get_comb_event_type(cls, event_type):

+ 2 - 10
Service/ModelService.py

@@ -149,13 +149,7 @@ class ModelService:
     @staticmethod
     def del_eq_info(userID, uid):
         notify_alexa_delete(userID, uid)
-        ei_qs = Equipment_Info.objects.filter(userID_id=userID, devUid=uid)
-        ei_qs.delete()
-        for i in range(1, 8):
-            eq_list = EquipmentInfoService.get_equipment_info_model('', i)
-            eq_list = eq_list.filter(device_user_id=userID, device_uid=uid)
-            if eq_list.exists():
-                eq_list.delete()
+        EquipmentInfoService.delete_all_equipment_info(device_user_id=userID, device_uid=uid)
 
     @staticmethod
     def del_user_list_eq_info(user_id_list, user_id, uid):
@@ -167,9 +161,7 @@ class ModelService:
         @return:
         """
         notify_alexa_delete(user_id, uid)
-        for i in range(1, 8):
-            EquipmentInfoService.get_equipment_info_model('', i).\
-                filter(device_user_id__in=user_id_list, device_uid=uid).delete()
+        EquipmentInfoService.delete_all_equipment_info(device_user_id__in=user_id_list, device_uid=uid)
 
     # 获取绑定用户设备列表
     @staticmethod