diff --git a/apps/develop/views.py b/apps/develop/views.py index d3e6fcfb..d8bdd88d 100755 --- a/apps/develop/views.py +++ b/apps/develop/views.py @@ -184,8 +184,9 @@ class TestViewSet(CustomGenericViewSet): 测试算法2 """ from apps.ecm.service import dispatch_dahua_event - data = {'id': None, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '河北省', 'alarmPictureSize': '885977', 'nodeCode': '1002182$1$0$0', 'deviceCode': '1002182', 'alarmCode': '{B55A1489-0064-8D42-B6F4-EFF2DE1DA9B1}', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220831/1/dsf_3c4ef3fe-290f-11ed-884a-e4246c7d1635_55425449_56311426.jpg', 'nodeType': 2, 'deviceName': '192.168.10.155', - 'alarmDate': '1661942981', 'alarmGrade': 2, 'isSave': True, 'unitType': 1, 'unitSeq': 0, 'extend': {'params': {'ObjectType': 'Human', 'GroupId': 30.0, 'ObjectSubType': ''}, 'objectSubType': ''}, 'alarmType': 964, 'channelSeq': 0, 'orgCode': '001', 'channelName': '192.168.10.155_视频通道_1', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'admin', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None} + # data = {'id': None, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '河北省', 'alarmPictureSize': '885977', 'nodeCode': '1002182$1$0$0', 'deviceCode': '1002182', 'alarmCode': '{B55A1489-0064-8D42-B6F4-EFF2DE1DA9B1}', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220831/1/dsf_3c4ef3fe-290f-11ed-884a-e4246c7d1635_55425449_56311426.jpg', 'nodeType': 2, 'deviceName': '192.168.10.155', + # 'alarmDate': '1661942981', 'alarmGrade': 2, 'isSave': True, 'unitType': 1, 'unitSeq': 0, 'extend': {'params': {'ObjectType': 'Human', 'GroupId': 30.0, 'ObjectSubType': ''}, 'objectSubType': ''}, 'alarmType': 964, 'channelSeq': 0, 'orgCode': '001', 'channelName': '192.168.10.155_视频通道_1', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'admin', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None} + data = {'id': 1662026969203, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'nodeCode': '1000038$1$0$24', 'deviceCode': '1000038', 'alarmCode': '44df73ba-a423-4479-af70-1f930b00a7e0', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_27257520_27264993.jpg', 'nodeType': 2, 'alarmDate': '1662026965', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_27257520_27264993.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [{'birthday': '2022-8-24', 'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_27264993_27338395.jpg'], 'groupName': '全体人员', 'similarity': 97, 'sex': 1, 'cardType': 1, 'name': '曹前明', 'devPersonId': '48', 'id': '342422199004040175', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_26915031_27257520.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 24, 'szSerialUUID': '', 'channelName': '窑头平台值班室', 'beginTime': 1662026965, 'endTime': 1662026965, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 24, 'orgCode': '001001001', 'channelName': '窑头平台值班室', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None} dispatch_dahua_event(data=data) return Response() diff --git a/apps/ecm/service.py b/apps/ecm/service.py index 3614893f..e3d9dde0 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -115,24 +115,28 @@ def save_voice_and_speak(event: Event): Args: event (Event): _description_ """ - main_cate = event.cates.all().order_by('priority', 'create_time').first() - v_p, v_num = main_cate.voice_person, main_cate.voice_num - _, event.voice, _ = generate_voice(event.voice_msg, v_p) - event.save() - if main_cate.speaker_on: - sps = [] - if event.area: # 如果事件存在发生区域 - sps = list(TDevice.objects.filter(area=event.area, type=TDevice.DEVICE_SPEAKER).values_list('code', flat=True)) - if len(sps) == 0: # 如果当前区域没有喇叭就找覆盖区的喇叭 - sps = list(TDevice.objects.filter(areas=event.area, - type=TDevice.DEVICE_SPEAKER).values_list('code', flat=True)) - # 查找固定喇叭 - for m in event.cates.all(): - for n in m.speakers.all(): - if n.code not in sps: - sps.append(n.code) - if sps: - spClient.speak(event.voice, sps, v_num) + try: + main_cate = event.cates.all().order_by('priority', 'create_time').first() + v_p, v_num = main_cate.voice_person, main_cate.voice_num + _, event.voice, _ = generate_voice(event.voice_msg, v_p) + event.save() + if main_cate.speaker_on: + sps = [] + if event.area: # 如果事件存在发生区域 + sps = list(TDevice.objects.filter(area=event.area, + type=TDevice.DEVICE_SPEAKER).values_list('code', flat=True)) + if len(sps) == 0: # 如果当前区域没有喇叭就找覆盖区的喇叭 + sps = list(TDevice.objects.filter(areas=event.area, + type=TDevice.DEVICE_SPEAKER).values_list('code', flat=True)) + # 查找固定喇叭 + for m in event.cates.all(): + for n in m.speakers.all(): + if n.code not in sps: + sps.append(n.code) + if sps: + spClient.speak(event.voice, sps, v_num) + except Exception: + myLogger.error('喇叭播放失败', exc_info=True) def create_remind(event: Event, params: dict): @@ -147,7 +151,7 @@ def create_remind(event: Event, params: dict): n_s = NotifySetting.objects.filter(event_cate__in=event.cates.all()).order_by('sort') area_level = event.area.level for i in n_s: - if i.user and area_level >= i.filter_area_level: + if i.user and area_level < i.filter_area_level: Remind.objects.get_or_create(event=event, recipient=i.user, defaults={ 'event': event, @@ -205,7 +209,6 @@ def create_remind(event: Event, params: dict): for i in Remind.objects.filter(event=event): if i.notify_setting.sms_enable and i.recipient.employee.phone: # 发送短信通知 - Thread(target=send_sms, args=(i.recipient.employee.phone, 1003, params), daemon=True).start() if i.notify_setting.wechat_enable: diff --git a/apps/ecm/views.py b/apps/ecm/views.py index 16623a74..a09f54e7 100644 --- a/apps/ecm/views.py +++ b/apps/ecm/views.py @@ -71,7 +71,7 @@ class NotifySettingViewSet(CustomModelViewSet): ordering = ['sort', 'create_time'] -class EventViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet): +class EventViewSet(ListModelMixin, RetrieveModelMixin, DestroyModelMixin, CustomGenericViewSet): perms_map = {'get': '*'} queryset = Event.objects.all() serializer_class = EventSerializer diff --git a/apps/third/speaker.py b/apps/third/speaker.py index b99cba3d..208d66a2 100644 --- a/apps/third/speaker.py +++ b/apps/third/speaker.py @@ -109,7 +109,7 @@ class SpClient: if raise_exception: raise ParseError(**err_detail) return 'fail', dict(detail=detail, code='sp_'+str(ret['code'])) - # self.handle_log(result='success', response=ret) + self.handle_log(result='success', response=ret) return 'success', ret self.handle_log(result='error', errors=traceback.format_exc()) if raise_exception: