From 3fb7abca32249fe800c556fe71ab3d47f1db8d26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 1 Sep 2022 15:46:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=96=B9=20=E8=AE=BF?= =?UTF-8?q?=E5=AE=A2=E7=BB=91=E5=8D=A1=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0003_alter_employee_type.py | 18 +++++++++++++ apps/hrm/serializers.py | 5 ++-- apps/rpm/serializers.py | 7 +++++ .../migrations/0003_alter_tdevice_employee.py | 20 ++++++++++++++ apps/third/models.py | 2 +- apps/vm/migrations/0003_auto_20220901_1517.py | 26 +++++++++++++++++++ apps/vm/serializers.py | 8 ++++++ apps/vm/services.py | 2 +- 8 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 apps/hrm/migrations/0003_alter_employee_type.py create mode 100644 apps/third/migrations/0003_alter_tdevice_employee.py create mode 100644 apps/vm/migrations/0003_auto_20220901_1517.py diff --git a/apps/hrm/migrations/0003_alter_employee_type.py b/apps/hrm/migrations/0003_alter_employee_type.py new file mode 100644 index 00000000..a175d1bb --- /dev/null +++ b/apps/hrm/migrations/0003_alter_employee_type.py @@ -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='人员类型'), + ), + ] diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 67496c7f..9fdd5e40 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -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: # 如果离职了关闭账户 diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index 0b594322..5013d973 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -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) diff --git a/apps/third/migrations/0003_alter_tdevice_employee.py b/apps/third/migrations/0003_alter_tdevice_employee.py new file mode 100644 index 00000000..a57fb654 --- /dev/null +++ b/apps/third/migrations/0003_alter_tdevice_employee.py @@ -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='当前绑定人员'), + ), + ] diff --git a/apps/third/models.py b/apps/third/models.py index 8748e032..4d15f6fa 100755 --- a/apps/third/models.py +++ b/apps/third/models.py @@ -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') diff --git a/apps/vm/migrations/0003_auto_20220901_1517.py b/apps/vm/migrations/0003_auto_20220901_1517.py new file mode 100644 index 00000000..96d15551 --- /dev/null +++ b/apps/vm/migrations/0003_auto_20220901_1517.py @@ -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='接待人'), + ), + ] diff --git a/apps/vm/serializers.py b/apps/vm/serializers.py index fe38a5bb..062d1d92 100644 --- a/apps/vm/serializers.py +++ b/apps/vm/serializers.py @@ -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: diff --git a/apps/vm/services.py b/apps/vm/services.py index 0ab905dc..723430bf 100644 --- a/apps/vm/services.py +++ b/apps/vm/services.py @@ -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() \ No newline at end of file + visit.save()