from apps.am.models import Access, Area from apps.hrm.models import Employee from apps.system.models import User from apps.third.clients import xxClient from apps.third.models import TDevice from apps.third.tapis import xxapis class EcmService: """事件处理服务 """ def create_remind_and_speak(cls): """ 创建事件提醒并发送短信/微信/音响 """ pass @classmethod def dispatch_dahua_event(cls, data: dict): """分发大华事件进行处理 """ pass @classmethod def dispatch_xunxi_event(cls, data: dict): """分发寻息事件进行处理 """ if data.type == 'rail': if data.data.type == 1: # 围栏进入 cls.rail_in(data=data.data) elif data.data.type == 2: # 围栏离开 cls.rail_out(data=data.data) elif data.type == 'onKeyAlarm': # 一键呼救 pass elif data.type == 'onOffLine': if data.data.online: # 标签定位在线 pass else: # 标签定位离线 pass elif data.type == 'lowpower': # 低电量 pass elif data.type == 'bltOnOffLineV2': if data.data.online: # 标签通信在线 pass else: # 标签通信离线 pass @classmethod def rail_in(cls, data): """围栏进入事件 """ # 找到所在围栏 area = Area.objects.filter(third_info__xx_rail__id=data['railId']).first() # 找到进入对象 blts = TDevice.objects.filter(code=data['userId']).first() if blts and blts.employee: # 如果是人 ep_blts = blts.employee # 标签绑定人员 if ep_blts: for i in Access.objects.filter(area=area).order_by('sort'): # 优先自定义权限过滤 if i.post: # 如果是按岗位设定的 eps_access = Employee.objects.filter(user__posts=i.post) if ep_blts in eps_access and i.type == Access.ACCESS_IN_YES: return elif ep_blts in eps_access and i.type == Access.ACCESS_IN_NO: # 触发非法进入事件 pass elif i.employee: # 如果是按人设定的 if ep_blts == i.employee and i.type == Access.ACCESS_IN_YES: return elif ep_blts == i.employee and i.type == Access.ACCESS_IN_NO: # 触发非法进入事件 pass # 通用权限设置过滤 if ep_blts.type == 'employee' and area.employee_yes: return elif ep_blts.type == 'remployee' and area.remployee_yes: return elif ep_blts.type == 'visitor' and area.visitor_yes: return else: # 触发非法进入事件 pass else: # 触发未知标签进入事件 pass @classmethod def rail_out(cls, data): pass