相关方 访客绑卡接口优化
This commit is contained in:
parent
543a460090
commit
3fb7abca32
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-09-01 07:17
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hrm', '0002_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='employee',
|
||||||
|
name='type',
|
||||||
|
field=models.CharField(choices=[('employee', '内部员工'), ('remployee', '相关方人员'), ('visitor', '访客'), ('driver', '司机')], default='employee', max_length=10, verbose_name='人员类型'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -1,5 +1,4 @@
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from apps.hrm.errors import PHONE_F_WRONG
|
|
||||||
from rest_framework.serializers import ModelSerializer
|
from rest_framework.serializers import ModelSerializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from apps.hrm.services import HrmService
|
from apps.hrm.services import HrmService
|
||||||
|
@ -61,10 +60,10 @@ class EmployeeCreateUpdateSerializer(CustomModelSerializer):
|
||||||
old_photo = instance.photo
|
old_photo = instance.photo
|
||||||
old_job_state = instance.job_state
|
old_job_state = instance.job_state
|
||||||
instance = super().update(instance, validated_data)
|
instance = super().update(instance, validated_data)
|
||||||
if instance.type == 'remployee':
|
if instance.type == 'remployee': # 如果是相关方
|
||||||
from apps.rpm.services import sync_to_rep
|
from apps.rpm.services import sync_to_rep
|
||||||
sync_to_rep(instance)
|
sync_to_rep(instance)
|
||||||
elif instance.type == 'visitor':
|
elif instance.type in ['visitor', 'driver']: # 如果是访客或司机
|
||||||
from apps.vm.services import sync_to_visitor
|
from apps.vm.services import sync_to_visitor
|
||||||
sync_to_visitor(instance)
|
sync_to_visitor(instance)
|
||||||
if instance.job_state == 20 and instance.user: # 如果离职了关闭账户
|
if instance.job_state == 20 and instance.user: # 如果离职了关闭账户
|
||||||
|
|
|
@ -261,6 +261,7 @@ class RpjcertificateSerializer(CustomModelSerializer):
|
||||||
class RpjmemberSerializer(CustomModelSerializer):
|
class RpjmemberSerializer(CustomModelSerializer):
|
||||||
remployee_ = RemployeeSerializer(source='remployee', read_only=True)
|
remployee_ = RemployeeSerializer(source='remployee', read_only=True)
|
||||||
rcertificates_ = serializers.SerializerMethodField()
|
rcertificates_ = serializers.SerializerMethodField()
|
||||||
|
blt_ = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Rpjmember
|
model = Rpjmember
|
||||||
|
@ -270,6 +271,12 @@ class RpjmemberSerializer(CustomModelSerializer):
|
||||||
cs = Rpjcertificate.objects.filter(rpj_member=obj)
|
cs = Rpjcertificate.objects.filter(rpj_member=obj)
|
||||||
return RpjcertificateSerializer(instance=cs, many=True).data
|
return RpjcertificateSerializer(instance=cs, many=True).data
|
||||||
|
|
||||||
|
def get_blt_(self, obj):
|
||||||
|
from apps.third.serializers import TDeviceSimpleSerializer
|
||||||
|
ep = obj.employee
|
||||||
|
if ep and hasattr(ep, 'tdevice'):
|
||||||
|
return TDeviceSimpleSerializer(instance=ep.tdevice).data
|
||||||
|
|
||||||
|
|
||||||
class RpjfileSerializer(CustomModelSerializer):
|
class RpjfileSerializer(CustomModelSerializer):
|
||||||
file_cate_ = DictSimpleSerializer(source='file_cate', read_only=True)
|
file_cate_ = DictSimpleSerializer(source='file_cate', read_only=True)
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-09-01 07:17
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('hrm', '0003_alter_employee_type'),
|
||||||
|
('third', '0002_alter_tdevice_areas'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='tdevice',
|
||||||
|
name='employee',
|
||||||
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ep_tdevice', to='hrm.employee', verbose_name='当前绑定人员'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -41,7 +41,7 @@ class TDevice(BaseModel):
|
||||||
related_name='tareas', blank=True)
|
related_name='tareas', blank=True)
|
||||||
obj_cate = models.CharField('绑定对象', max_length=20, help_text='people/...', null=True, blank=True)
|
obj_cate = models.CharField('绑定对象', max_length=20, help_text='people/...', null=True, blank=True)
|
||||||
employee = models.OneToOneField(Employee, verbose_name='当前绑定人员', on_delete=models.SET_NULL,
|
employee = models.OneToOneField(Employee, verbose_name='当前绑定人员', on_delete=models.SET_NULL,
|
||||||
null=True, blank=True)
|
null=True, blank=True, related_name='ep_tdevice')
|
||||||
is_clock = models.BooleanField('是否打卡设备', default=False)
|
is_clock = models.BooleanField('是否打卡设备', default=False)
|
||||||
access_list = models.JSONField('自动下发人员类型', default=list,
|
access_list = models.JSONField('自动下发人员类型', default=list,
|
||||||
null=False, blank=True, help_text='employee/remployee/visitor')
|
null=False, blank=True, help_text='employee/remployee/visitor')
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-09-01 07:17
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('vm', '0002_alter_visit_state'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='visit',
|
||||||
|
name='purpose',
|
||||||
|
field=models.PositiveSmallIntegerField(choices=[(10, '参观'), (20, '拜访'), (30, '面试'), (40, '开会'), (50, '拉送货')], verbose_name='来访事由'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='visit',
|
||||||
|
name='receptionist',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='接待人'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -1,4 +1,5 @@
|
||||||
|
|
||||||
|
from apps.hrm.serializers import EmployeeSimpleSerializer
|
||||||
from apps.utils.fields import MyFilePathField
|
from apps.utils.fields import MyFilePathField
|
||||||
from apps.utils.serializers import CustomModelSerializer
|
from apps.utils.serializers import CustomModelSerializer
|
||||||
from apps.utils.tools import check_phone_e
|
from apps.utils.tools import check_phone_e
|
||||||
|
@ -45,11 +46,18 @@ class VisitorCreateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
class VisitorSerializer(CustomModelSerializer):
|
class VisitorSerializer(CustomModelSerializer):
|
||||||
photo_f = MyFilePathField(source='photo', read_only=True)
|
photo_f = MyFilePathField(source='photo', read_only=True)
|
||||||
|
blt_ = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Visitor
|
model = Visitor
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
def get_blt_(self, obj):
|
||||||
|
from apps.third.serializers import TDeviceSimpleSerializer
|
||||||
|
ep = obj.employee
|
||||||
|
if ep and hasattr(ep, 'tdevice'):
|
||||||
|
return TDeviceSimpleSerializer(instance=ep.tdevice).data
|
||||||
|
|
||||||
|
|
||||||
class VpeopleCreateSerializer(CustomModelSerializer):
|
class VpeopleCreateSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -88,4 +88,4 @@ def visit_driver_end(visit: Visit):
|
||||||
# 同步至大华人员库并下发人脸
|
# 同步至大华人员库并下发人脸
|
||||||
HrmService.sync_dahua_employee(ep, '', visit.visit_time, visit.leave_time)
|
HrmService.sync_dahua_employee(ep, '', visit.visit_time, visit.leave_time)
|
||||||
visit.state = Visit.V_ENTER
|
visit.state = Visit.V_ENTER
|
||||||
visit.save()
|
visit.save()
|
||||||
|
|
Loading…
Reference in New Issue