feat: notify_event增加wspush以及一些优化
This commit is contained in:
parent
1048fb8d5c
commit
ec8d416e80
|
@ -84,12 +84,9 @@ def get_ep_default():
|
||||||
"time2": int(time.time()), # 当前时间戳
|
"time2": int(time.time()), # 当前时间戳
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def gen_params(event: Event):
|
||||||
def notify_event(event: Event, voice_msg=''):
|
"""
|
||||||
"""事件后续处理:
|
生成短信模板发送参数
|
||||||
|
|
||||||
Args:
|
|
||||||
event (Event): _description_
|
|
||||||
"""
|
"""
|
||||||
# 生成通知文本
|
# 生成通知文本
|
||||||
ep = event.employee
|
ep = event.employee
|
||||||
|
@ -114,20 +111,34 @@ def notify_event(event: Event, voice_msg=''):
|
||||||
for i in event.cates.all():
|
for i in event.cates.all():
|
||||||
cats_list.append(i.name)
|
cats_list.append(i.name)
|
||||||
params['event'] = ','.join(cats_list)
|
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: # 如果已经生成通知文本了就不再处理
|
if event.voice_msg: # 如果已经生成通知文本了就不再处理
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
params = gen_params(event)
|
||||||
if params['employee']:
|
if params['employee']:
|
||||||
event.voice_msg = '位于{}的{},{},请及时处理'.format(params['area'], params['employee'], params['event'])
|
event.voice_msg = '位于{}的{},{},请及时处理'.format(params['area'], params['employee'], params['event'])
|
||||||
else:
|
else:
|
||||||
event.voice_msg = '在{}下,发生{},请及时处理'.format(params['area'], params['event'])
|
event.voice_msg = '在{}下,发生{},请及时处理'.format(params['area'], params['event'])
|
||||||
if voice_msg:
|
|
||||||
event.voice_msg = voice_msg
|
|
||||||
event.save()
|
event.save()
|
||||||
# 喇叭播放(任何情况下)
|
# 喇叭播放(任何情况下)
|
||||||
Thread(target=save_voice_and_speak, args=(event,), daemon=True).start()
|
Thread(target=save_voice_and_speak, args=(event,), daemon=True).start()
|
||||||
|
# 事件ws推送
|
||||||
|
event_push.delay(event.id)
|
||||||
# 如果还未创建提醒
|
# 如果还未创建提醒
|
||||||
if not event.is_pushed:
|
if not event.is_pushed:
|
||||||
|
if not params:
|
||||||
|
params = gen_params(event)
|
||||||
Thread(target=create_remind, args=(event, params), daemon=True).start()
|
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:
|
# if event.employee and event.employee.phone:
|
||||||
# t_sms = Thread(target=send_sms, args=(event.employee.phone, '1001', {'code': '5678'}), daemon=True)
|
# 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):
|
for i in Remind.objects.filter(event=event):
|
||||||
|
remind_push.delay(i.id)
|
||||||
if i.notify_setting.sms_enable and i.recipient.phone:
|
if i.notify_setting.sms_enable and i.recipient.phone:
|
||||||
# 发送短信通知
|
# 发送短信通知
|
||||||
Thread(target=send_sms, args=(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:
|
if event:
|
||||||
notify_event(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)
|
Loading…
Reference in New Issue