feat: 增加事件等级等字段并进行相应处理
This commit is contained in:
parent
8e0724bbec
commit
83957c8e9c
|
@ -0,0 +1,33 @@
|
||||||
|
# Generated by Django 3.2.12 on 2023-09-01 01:27
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('ecm', '0011_event_global_img_compressed'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='event',
|
||||||
|
name='current_level',
|
||||||
|
field=models.PositiveSmallIntegerField(choices=[(10, '低风险'), (20, '一般风险'), (30, '较大风险'), (40, '重大风险')], default=10, help_text="((10, '低风险'), (20, '一般风险'), (30, '较大风险'), (40, '重大风险'))", verbose_name='当前等级'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='eventcate',
|
||||||
|
name='is_auto_escalate',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='是否自动升级'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='eventcate',
|
||||||
|
name='origin_level',
|
||||||
|
field=models.PositiveSmallIntegerField(choices=[(10, '低风险'), (20, '一般风险'), (30, '较大风险'), (40, '重大风险')], default=10, help_text="((10, '低风险'), (20, '一般风险'), (30, '较大风险'), (40, '重大风险'))", verbose_name='初始等级'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='eventcate',
|
||||||
|
name='trigger',
|
||||||
|
field=models.PositiveSmallIntegerField(choices=[(10, '监控'), (20, '定位'), (30, '其他')], default=10, verbose_name='触发方式'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -6,6 +6,12 @@ from apps.utils.models import BaseModel, CommonADModel, CommonAModel, CommonBMod
|
||||||
from apps.system.models import Post, User
|
from apps.system.models import Post, User
|
||||||
from apps.third.models import TDevice
|
from apps.third.models import TDevice
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
LEVEL_CHOICES = (
|
||||||
|
(10, '低风险'),
|
||||||
|
(20, '一般风险'),
|
||||||
|
(30, '较大风险'),
|
||||||
|
(40, '重大风险')
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class EventCate(CommonAModel):
|
class EventCate(CommonAModel):
|
||||||
|
@ -14,11 +20,13 @@ class EventCate(CommonAModel):
|
||||||
"""
|
"""
|
||||||
EVENT_TRIGGER_CHOICES = (
|
EVENT_TRIGGER_CHOICES = (
|
||||||
(10, '监控'),
|
(10, '监控'),
|
||||||
(20, '定位')
|
(20, '定位'),
|
||||||
|
(30, '其他')
|
||||||
)
|
)
|
||||||
code = models.CharField('标识', max_length=20)
|
code = models.CharField('标识', max_length=20)
|
||||||
name = models.CharField('名称', max_length=20, unique=True)
|
name = models.CharField('名称', max_length=20, unique=True)
|
||||||
priority = models.PositiveSmallIntegerField('优先级', default=1, help_text='1-99')
|
priority = models.PositiveSmallIntegerField('优先级', default=1, help_text='1-99')
|
||||||
|
origin_level = models.PositiveSmallIntegerField('初始等级', default = 10, choices=LEVEL_CHOICES, help_text=str(LEVEL_CHOICES))
|
||||||
trigger = models.PositiveSmallIntegerField('触发方式', default=10, choices=EVENT_TRIGGER_CHOICES)
|
trigger = models.PositiveSmallIntegerField('触发方式', default=10, choices=EVENT_TRIGGER_CHOICES)
|
||||||
self_algo = models.BooleanField('识别算法', default=False)
|
self_algo = models.BooleanField('识别算法', default=False)
|
||||||
speaker_on = models.BooleanField('开启喇叭报警', default=True)
|
speaker_on = models.BooleanField('开启喇叭报警', default=True)
|
||||||
|
@ -31,6 +39,7 @@ class EventCate(CommonAModel):
|
||||||
handle_minute = models.PositiveSmallIntegerField('处理时间', default=0, help_text='超过处理时间事件状态变为超时未处理,0代表未配置')
|
handle_minute = models.PositiveSmallIntegerField('处理时间', default=0, help_text='超过处理时间事件状态变为超时未处理,0代表未配置')
|
||||||
same_allow_minute = models.PositiveSmallIntegerField('允许时间', default=0, help_text='同一对象同事件多长时间内不再触发, 0代表一直触发')
|
same_allow_minute = models.PositiveSmallIntegerField('允许时间', default=0, help_text='同一对象同事件多长时间内不再触发, 0代表一直触发')
|
||||||
opl_cates = models.ManyToManyField(OplCate, verbose_name='关联许可证', blank=True)
|
opl_cates = models.ManyToManyField(OplCate, verbose_name='关联许可证', blank=True)
|
||||||
|
is_auto_escalate = models.BooleanField('是否自动升级', default=False)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
@ -80,6 +89,7 @@ class Event(CommonBDModel):
|
||||||
(10, '正常'),
|
(10, '正常'),
|
||||||
(20, '误报'),
|
(20, '误报'),
|
||||||
)
|
)
|
||||||
|
current_level = models.PositiveSmallIntegerField('当前等级', default=10, choices=LEVEL_CHOICES, help_text=str(LEVEL_CHOICES))
|
||||||
cates = models.ManyToManyField(EventCate, verbose_name='关联事件种类', through='ecm.eventdo', related_name='event_cates')
|
cates = models.ManyToManyField(EventCate, verbose_name='关联事件种类', through='ecm.eventdo', related_name='event_cates')
|
||||||
face_img = models.CharField('人脸照', max_length=1000, null=True, blank=True)
|
face_img = models.CharField('人脸照', max_length=1000, null=True, blank=True)
|
||||||
global_img = models.CharField('全景照', max_length=1000, null=True, blank=True)
|
global_img = models.CharField('全景照', max_length=1000, null=True, blank=True)
|
||||||
|
|
|
@ -33,7 +33,7 @@ class EventCateUpdateSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = EventCate
|
model = EventCate
|
||||||
fields = ['speaker_on', 'speakers', 'filter_area_level',
|
fields = ['speaker_on', 'speakers', 'filter_area_level',
|
||||||
'voice_person', 'handle_minute', 'voice_num', 'priority', 'same_allow_minute']
|
'voice_person', 'handle_minute', 'voice_num', 'priority', 'same_allow_minute', 'origin_level', 'is_auto_escalate']
|
||||||
|
|
||||||
|
|
||||||
class NotifySettingsSerializer(CustomModelSerializer):
|
class NotifySettingsSerializer(CustomModelSerializer):
|
||||||
|
|
|
@ -361,12 +361,16 @@ def dispatch_dahua_event(data: dict):
|
||||||
event.employee = ep
|
event.employee = ep
|
||||||
event.happen_time = happen_time
|
event.happen_time = happen_time
|
||||||
event.save()
|
event.save()
|
||||||
|
current_level = 10
|
||||||
for i in cates:
|
for i in cates:
|
||||||
cate = EventCate.objects.get(id=i)
|
cate = EventCate.objects.get(id=i)
|
||||||
|
if cate.origin_level>current_level:
|
||||||
|
event.current_level = current_level
|
||||||
Eventdo.objects.get_or_create(cate=cate, event=event, defaults={
|
Eventdo.objects.get_or_create(cate=cate, event=event, defaults={
|
||||||
'cate': cate,
|
'cate': cate,
|
||||||
'event': event
|
'event': event
|
||||||
})
|
})
|
||||||
|
event.save()
|
||||||
if event:
|
if event:
|
||||||
notify_event(event)
|
notify_event(event)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue