This commit is contained in:
caoqianming 2023-03-08 17:34:39 +08:00
commit d0b6e46613
10 changed files with 81 additions and 15 deletions

View File

@ -4,3 +4,8 @@ from django.apps import AppConfig
class AemConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'apps.am'
def ready(self) -> None:
from apps.am.tasks import cache_areas_info
cache_areas_info.delay()
return super().ready()

View File

@ -1,11 +1,10 @@
from apps.am.tasks import cache_areas_info
from apps.am.views import AreaViewSet, AccessViewSet
from django.urls import path, include
from rest_framework.routers import DefaultRouter
API_BASE_URL = 'api/am/'
HTML_BASE_URL = 'am/'
# cache_areas_info()
router = DefaultRouter()
router.register('area', AreaViewSet, basename='area')
router.register('access', AccessViewSet, basename='access')

View File

@ -637,8 +637,8 @@ def snap_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None):
notify_event(event)
def loop_task():
# 轮询拍照进行算法识别
def loop_and_analyse(vchannel: TDevice, algo_codes: list, opl: Opl = None):
# 启动rtsp轮询进行算法识别
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')

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2023-03-02 09:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('hrm', '0006_alter_employee_user'),
]
operations = [
migrations.AlterField(
model_name='employee',
name='job_state',
field=models.IntegerField(choices=[(10, '在职'), (20, '离职'), (30, '退休')], default=10, verbose_name='在职状态'),
),
]

View File

@ -10,9 +10,11 @@ class Employee(CommonBModel):
"""
JOB_ON = 10
JOB_OFF = 20
JOB_RETIRE = 30
jobstate_choices = (
(JOB_ON, '在职'),
(JOB_OFF, '离职'),
(JOB_RETIRE, '退休')
)
PEOPLE_TYPE_CHOICES = (
('employee', '内部员工'),

View File

@ -79,7 +79,7 @@ class EmployeeCreateUpdateSerializer(CustomModelSerializer):
elif instance.type in ['visitor', 'driver']: # 如果是访客或司机
from apps.vm.services import sync_to_visitor
sync_to_visitor(instance)
if instance.job_state == 20 and instance.user: # 如果离职了关闭账户
if instance.job_state in [20, 30] and instance.user: # 如果离职了关闭账户
instance.user.is_active = False
instance.user.save()
# 同时去除门禁授权
@ -92,10 +92,10 @@ class EmployeeCreateUpdateSerializer(CustomModelSerializer):
if instance.third_info.get('dh_face_card', None) is None and instance.type == 'employee': # 如果是正式员工,给长时间期限
start_time = now
end_time = now + timedelta(days=7300)
if instance.job_state == 20 and old_job_state == 10: # 离职
if instance.job_state in [20, 30] and old_job_state == 10: # 离职或退休
start_time = now
end_time = now + timedelta(minutes=60)
elif instance.job_state == 10 and old_job_state == 20 and instance.type == 'employee': # 正式员工重新在职
elif instance.job_state == 10 and old_job_state in [20, 30] and instance.type == 'employee': # 正式员工重新在职
start_time = now
end_time = now + timedelta(days=7300)
HrmService.sync_dahua_employee(ep=instance, old_photo=old_photo,
@ -151,15 +151,15 @@ class EmployeeSerializer(CustomModelSerializer):
class EmployeeDetailSerializer(EmployeeSerializer):
door_range = serializers.SerializerMethodField()
# door_range = serializers.SerializerMethodField()
location = serializers.SerializerMethodField()
def get_door_range(self, obj):
third_info = obj.third_info
dh_face_card = third_info.get('dh_face_card', None)
if dh_face_card:
_, res = dhClient.request(**dhapis['card_detail'], params={'cardNumber': dh_face_card})
return [res['startDate'], res['endDate']]
# def get_door_range(self, obj):
# third_info = obj.third_info
# dh_face_card = third_info.get('dh_face_card', None)
# if dh_face_card:
# _, res = dhClient.request(**dhapis['card_detail'], params={'cardNumber': dh_face_card})
# return [res['startDate'], res['endDate']]
def get_location(self, obj):
key_str = 'ep_{}'.format(obj.id)

View File

@ -269,6 +269,26 @@ class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
correct_swip_task.delay(vdata['start_time'], vdata['end_time'])
return Response()
@action(methods=['post'], detail=False, perms_map={'post': '*'},
serializer_class=CorrectSerializer)
def correct_enter_or_exit(self, request, pk=None):
"""
变更一段时间日志刷脸类型
变更一段时间日志刷脸类型
"""
from apps.monitor.models import DrfRequestLog
sr = CorrectSerializer(data=request.data)
sr.is_valid(raise_exception=True)
vdata = sr.validated_data
for i in DrfRequestLog.objects.filter(path='/api/third/dahua/c_swip/', data__contains='办公楼考勤面板'
, create_time__gte=vdata['start_time']
, create_time__lte=vdata['end_time']).filter(data__contains = "'enterOrExit': 1" ):
data = i.data
i.data = data.replace("'enterOrExit': 1", "'enterOrExit': 3")
i.save()
return Response()
class NotWorkRemarkViewSet(ListModelMixin, CustomGenericViewSet):
"""
离岗说明

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2023-03-02 15:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('monitor', '0002_drfrequestlog_user'),
]
operations = [
migrations.AlterField(
model_name='drfrequestlog',
name='view_method',
field=models.CharField(blank=True, db_index=True, max_length=50, null=True),
),
]

View File

@ -29,7 +29,7 @@ class DrfRequestLog(BaseModel):
help_text="执行视图",
)
view_method = models.CharField(
max_length=20,
max_length=50,
null=True,
blank=True,
db_index=True,

View File

@ -100,6 +100,10 @@ dhapis = {
"url": "/evo-apigw/admin/API/video/stream/realtime",
"method": "post"
},
"video_rtsp": {
"url": "/evo-apigw/admin/API/MTS/Video/StartVideo",
"method": "post"
},
"alarm_detail": {
"url": "/evo-apigw/evo-event/1.2.0/alarm-record/detail?alarmCode={alarmCode}&dbType={dbType}&alarmDate={alarmDate}",
"method": "get"