更新人员表bug
This commit is contained in:
parent
6a1f0a9f75
commit
b2b25548ae
|
@ -7,7 +7,6 @@ myLogger = logging.getLogger('log')
|
||||||
|
|
||||||
algo_dict = {
|
algo_dict = {
|
||||||
"helmet": "apps.ai.client.helmet",
|
"helmet": "apps.ai.client.helmet",
|
||||||
"helmet2": "apps.ai.client.helmet2",
|
|
||||||
"fire1": "apps.ai.client.fire1"
|
"fire1": "apps.ai.client.fire1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,8 +27,11 @@ def ai_analyse(codes: list, global_img: str, face_img: str = None):
|
||||||
f = getattr(m, func)
|
f = getattr(m, func)
|
||||||
try:
|
try:
|
||||||
is_happend, res = False, None
|
is_happend, res = False, None
|
||||||
if i == 'helmet' and face_img: # 如果是安全帽抠图识别
|
if i == 'helmet': # 如果是安全帽抠图识别
|
||||||
|
if face_img:
|
||||||
is_happend, res = f(ip=settings.AI_IP, pic_url=face_img)
|
is_happend, res = f(ip=settings.AI_IP, pic_url=face_img)
|
||||||
|
else:
|
||||||
|
is_happend, res = getattr(m, 'helmet2')(ip=settings.AI_IP, pic_url=face_img)
|
||||||
else:
|
else:
|
||||||
is_happend, res = f(ip=settings.AI_IP, pic_url=global_img)
|
is_happend, res = f(ip=settings.AI_IP, pic_url=global_img)
|
||||||
if is_happend:
|
if is_happend:
|
||||||
|
|
|
@ -22,6 +22,7 @@ class EventCate(CommonAModel):
|
||||||
trigger = models.PositiveSmallIntegerField('触发方式', default=10, choices=EVENT_TRIGGER_CHOICES)
|
trigger = models.PositiveSmallIntegerField('触发方式', default=10, choices=EVENT_TRIGGER_CHOICES)
|
||||||
self_algo = models.BooleanField('识别算法', default=False)
|
self_algo = models.BooleanField('识别算法', default=False)
|
||||||
speaker_on = models.BooleanField('开启喇叭报警', default=True)
|
speaker_on = models.BooleanField('开启喇叭报警', default=True)
|
||||||
|
# loop_on = models.BooleanField('开启循环拍照', default=False)
|
||||||
voice_person = models.PositiveSmallIntegerField('声音选择', default=0, help_text='0女声3男声')
|
voice_person = models.PositiveSmallIntegerField('声音选择', default=0, help_text='0女声3男声')
|
||||||
voice_num = models.PositiveSmallIntegerField('播放次数', default=2)
|
voice_num = models.PositiveSmallIntegerField('播放次数', default=2)
|
||||||
speakers = models.ManyToManyField(TDevice, verbose_name='固定喇叭', blank=True, related_name='ec_speakers')
|
speakers = models.ManyToManyField(TDevice, verbose_name='固定喇叭', blank=True, related_name='ec_speakers')
|
||||||
|
|
|
@ -490,7 +490,8 @@ def handle_xx_event(name: str, data: dict):
|
||||||
cate = EventCate.objects.filter(code=name).first()
|
cate = EventCate.objects.filter(code=name).first()
|
||||||
# 找到最近未处理同一人发生的事件
|
# 找到最近未处理同一人发生的事件
|
||||||
if cate:
|
if cate:
|
||||||
last_event = Event.objects.filter(cates__code=name, employee=blts.employee, handle_user=None).order_by('-create_time').first()
|
last_event = Event.objects.filter(cates__code=name, employee=blts.employee,
|
||||||
|
handle_user=None).order_by('-create_time').first()
|
||||||
if last_event and last_event.create_time + timedelta(minutes=5) > timezone.now():
|
if last_event and last_event.create_time + timedelta(minutes=5) > timezone.now():
|
||||||
return
|
return
|
||||||
event = Event()
|
event = Event()
|
||||||
|
@ -631,16 +632,17 @@ def get_area_from_point(x: int, y: int, floorNo: str):
|
||||||
return area_fix, area_temp
|
return area_fix, area_temp
|
||||||
|
|
||||||
|
|
||||||
def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl):
|
def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None):
|
||||||
global_img_o = dhClient.snap(vchannel.code)
|
global_img_o = dhClient.snap(vchannel.code)
|
||||||
happen_time = timezone.now()
|
happen_time = timezone.now()
|
||||||
ec_codes = ai_analyse(algo_codes, global_img=global_img_o) # 算法处理返回的事件结果
|
ec_codes = ai_analyse(algo_codes, global_img=global_img_o) # 算法处理返回的事件结果
|
||||||
if ec_codes:
|
if ec_codes:
|
||||||
# 获取本次所有发生事件种类
|
# 获取本次所有发生事件种类
|
||||||
ecs = EventCate.objects.filter(code__in=ec_codes.keys())
|
ecs = EventCate.objects.filter(code__in=ec_codes.keys())
|
||||||
obj_cate = 'opl'
|
obj_cate = 'opl' if opl else 'other'
|
||||||
ep = None
|
ep = None
|
||||||
if 'helmet' in ec_codes:
|
if 'helmet' in ec_codes or 'helmet2' in ec_codes and obj_cate == 'other':
|
||||||
|
obj_cate = 'people'
|
||||||
# 如果存在安全帽事件
|
# 如果存在安全帽事件
|
||||||
# 尝试以图搜图找到当事人
|
# 尝试以图搜图找到当事人
|
||||||
# res = dhClient.face_search(path=global_img_o)
|
# res = dhClient.face_search(path=global_img_o)
|
||||||
|
@ -663,3 +665,10 @@ def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl):
|
||||||
})
|
})
|
||||||
if event:
|
if event:
|
||||||
notify_event(event)
|
notify_event(event)
|
||||||
|
|
||||||
|
|
||||||
|
def loop_task():
|
||||||
|
# 轮询拍照进行算法识别
|
||||||
|
pass
|
||||||
|
# cates = EventCate.objects.filter(loop_on=True, self_algo=True)
|
||||||
|
# AlgoChannel.objects.filter(algo__loop_on=True, algo__self_algo=True).values('algo__code', 'vchannel')
|
||||||
|
|
|
@ -86,7 +86,7 @@ def opl_task(vc_codes: list, opl_id: str):
|
||||||
algo_codes = list(EventCate.objects.filter(opl_cates=opl_cate).values_list('code', flat=True))
|
algo_codes = list(EventCate.objects.filter(opl_cates=opl_cate).values_list('code', flat=True))
|
||||||
vchannels = TDevice.objects.filter(code__in=vc_codes)
|
vchannels = TDevice.objects.filter(code__in=vc_codes)
|
||||||
opl = Opl.objects.get(id=opl_id)
|
opl = Opl.objects.get(id=opl_id)
|
||||||
while time.time()-start_time < 14400: # 一次任务不手动关闭最多持续8小时
|
while time.time()-start_time < 14400: # 一次任务不手动关闭最多持续4小时
|
||||||
for i in vchannels:
|
for i in vchannels:
|
||||||
Thread(target=snap_and_analyse, args=(i, algo_codes, opl)).start()
|
Thread(target=snap_and_analyse, args=(i, algo_codes, opl)).start()
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
|
|
@ -386,7 +386,7 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
|
||||||
user.update_by = self.request.user
|
user.update_by = self.request.user
|
||||||
user.save()
|
user.save()
|
||||||
# 更新人员表
|
# 更新人员表
|
||||||
ep = Employee.objects.get_queryset(all=True).filter(user=instance).first()
|
ep = Employee.objects.get_queryset(all=True).filter(user=user).first()
|
||||||
if ep:
|
if ep:
|
||||||
ep.belong_dept = user.belong_dept
|
ep.belong_dept = user.belong_dept
|
||||||
ep.post = user.post
|
ep.post = user.post
|
||||||
|
|
Loading…
Reference in New Issue