相关方 访客绑卡接口优化
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 apps.hrm.errors import PHONE_F_WRONG
|
||||
from rest_framework.serializers import ModelSerializer
|
||||
from rest_framework import serializers
|
||||
from apps.hrm.services import HrmService
|
||||
|
@ -61,10 +60,10 @@ class EmployeeCreateUpdateSerializer(CustomModelSerializer):
|
|||
old_photo = instance.photo
|
||||
old_job_state = instance.job_state
|
||||
instance = super().update(instance, validated_data)
|
||||
if instance.type == 'remployee':
|
||||
if instance.type == 'remployee': # 如果是相关方
|
||||
from apps.rpm.services import sync_to_rep
|
||||
sync_to_rep(instance)
|
||||
elif instance.type == 'visitor':
|
||||
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: # 如果离职了关闭账户
|
||||
|
|
|
@ -261,6 +261,7 @@ class RpjcertificateSerializer(CustomModelSerializer):
|
|||
class RpjmemberSerializer(CustomModelSerializer):
|
||||
remployee_ = RemployeeSerializer(source='remployee', read_only=True)
|
||||
rcertificates_ = serializers.SerializerMethodField()
|
||||
blt_ = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Rpjmember
|
||||
|
@ -270,6 +271,12 @@ class RpjmemberSerializer(CustomModelSerializer):
|
|||
cs = Rpjcertificate.objects.filter(rpj_member=obj)
|
||||
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):
|
||||
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)
|
||||
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,
|
||||
null=True, blank=True)
|
||||
null=True, blank=True, related_name='ep_tdevice')
|
||||
is_clock = models.BooleanField('是否打卡设备', default=False)
|
||||
access_list = models.JSONField('自动下发人员类型', default=list,
|
||||
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.serializers import CustomModelSerializer
|
||||
from apps.utils.tools import check_phone_e
|
||||
|
@ -45,11 +46,18 @@ class VisitorCreateSerializer(CustomModelSerializer):
|
|||
|
||||
class VisitorSerializer(CustomModelSerializer):
|
||||
photo_f = MyFilePathField(source='photo', read_only=True)
|
||||
blt_ = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Visitor
|
||||
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 Meta:
|
||||
|
|
|
@ -88,4 +88,4 @@ def visit_driver_end(visit: Visit):
|
|||
# 同步至大华人员库并下发人脸
|
||||
HrmService.sync_dahua_employee(ep, '', visit.visit_time, visit.leave_time)
|
||||
visit.state = Visit.V_ENTER
|
||||
visit.save()
|
||||
visit.save()
|
||||
|
|
Loading…
Reference in New Issue