feat: notify_event增加wspush以及一些优化

This commit is contained in:
caoqianming 2023-09-06 08:42:46 +08:00
parent 1048fb8d5c
commit ec8d416e80
1 changed files with 41 additions and 8 deletions

View File

@ -84,12 +84,9 @@ def get_ep_default():
"time2": int(time.time()), # 当前时间戳
}
def notify_event(event: Event, voice_msg=''):
"""事件后续处理:
Args:
event (Event): _description_
def gen_params(event: Event):
"""
生成短信模板发送参数
"""
# 生成通知文本
ep = event.employee
@ -114,20 +111,34 @@ def notify_event(event: Event, voice_msg=''):
for i in event.cates.all():
cats_list.append(i.name)
params['event'] = ','.join(cats_list)
return params
def notify_event(event: Event):
"""事件后续处理:
Args:
event (Event): _description_
"""
from apps.ecm.tasks import event_push
params = {}
if event.voice_msg: # 如果已经生成通知文本了就不再处理
pass
else:
params = gen_params(event)
if params['employee']:
event.voice_msg = '位于{}{},{},请及时处理'.format(params['area'], params['employee'], params['event'])
else:
event.voice_msg = '{}下,发生{},请及时处理'.format(params['area'], params['event'])
if voice_msg:
event.voice_msg = voice_msg
event.save()
# 喇叭播放(任何情况下)
Thread(target=save_voice_and_speak, args=(event,), daemon=True).start()
# 事件ws推送
event_push.delay(event.id)
# 如果还未创建提醒
if not event.is_pushed:
if not params:
params = gen_params(event)
Thread(target=create_remind, args=(event, params), daemon=True).start()
@ -169,6 +180,7 @@ def create_remind(event: Event, params: dict):
"""
创建事件提醒并发送短信/微信
"""
from apps.ecm.tasks import remind_push
# 向当事人本人发送通知
# if event.employee and event.employee.phone:
# t_sms = Thread(target=send_sms, args=(event.employee.phone, '1001', {'code': '5678'}), daemon=True)
@ -237,6 +249,7 @@ def create_remind(event: Event, params: dict):
})
# 开始发送通知
for i in Remind.objects.filter(event=event):
remind_push.delay(i.id)
if i.notify_setting.sms_enable and i.recipient.phone:
# 发送短信通知
Thread(target=send_sms, args=(i.recipient.phone,
@ -685,3 +698,23 @@ def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None):
if event:
notify_event(event)
def handle_xx_event_3(name: str, area: Area):
cate = EventCate.objects.filter(code=name).first()
if cate:
# 告警间隔内不触发
last_event = Event.objects.filter(cates=cate, area=area, obj_cate='area').order_by('-create_time').first()
same_allow_minute = cate.same_allow_minute
if same_allow_minute >0 and last_event and last_event.create_time + timedelta(minutes=cate.same_allow_minute) > timezone.now():
return
event = Event()
event.area = area
event.obj_cate = 'area'
event.happen_time = timezone.now()
event.save()
Eventdo.objects.get_or_create(cate=cate, event=event, defaults={
'cate': cate,
'event': event
})
voice_msg = area.name + '下有' + str(area.count_people) + '人,' + cate.name + ',请及时处理'
notify_event(event, voice_msg=voice_msg)