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.third.models import TDevice
|
||||
# Create your models here.
|
||||
LEVEL_CHOICES = (
|
||||
(10, '低风险'),
|
||||
(20, '一般风险'),
|
||||
(30, '较大风险'),
|
||||
(40, '重大风险')
|
||||
)
|
||||
|
||||
|
||||
class EventCate(CommonAModel):
|
||||
|
@ -14,11 +20,13 @@ class EventCate(CommonAModel):
|
|||
"""
|
||||
EVENT_TRIGGER_CHOICES = (
|
||||
(10, '监控'),
|
||||
(20, '定位')
|
||||
(20, '定位'),
|
||||
(30, '其他')
|
||||
)
|
||||
code = models.CharField('标识', max_length=20)
|
||||
name = models.CharField('名称', max_length=20, unique=True)
|
||||
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)
|
||||
self_algo = models.BooleanField('识别算法', default=False)
|
||||
speaker_on = models.BooleanField('开启喇叭报警', default=True)
|
||||
|
@ -31,6 +39,7 @@ class EventCate(CommonAModel):
|
|||
handle_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)
|
||||
is_auto_escalate = models.BooleanField('是否自动升级', default=False)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
@ -80,6 +89,7 @@ class Event(CommonBDModel):
|
|||
(10, '正常'),
|
||||
(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')
|
||||
face_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:
|
||||
model = EventCate
|
||||
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):
|
||||
|
|
|
@ -361,12 +361,16 @@ def dispatch_dahua_event(data: dict):
|
|||
event.employee = ep
|
||||
event.happen_time = happen_time
|
||||
event.save()
|
||||
current_level = 10
|
||||
for i in cates:
|
||||
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={
|
||||
'cate': cate,
|
||||
'event': event
|
||||
})
|
||||
event.save()
|
||||
if event:
|
||||
notify_event(event)
|
||||
|
||||
|
|
Loading…
Reference in New Issue