Merge branch 'v2' of https://e.coding.net/ctcdevteam/ehs/ehs_server into v2
This commit is contained in:
commit
d0b6e46613
|
@ -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()
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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='在职状态'),
|
||||
),
|
||||
]
|
|
@ -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', '内部员工'),
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
"""
|
||||
离岗说明
|
||||
|
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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,
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue