From 7bfe483c901eebaa844b97bcf06f90260640f7ae Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 17 Feb 2022 21:58:23 +0800 Subject: [PATCH] =?UTF-8?q?is=5Fatwork=E8=B0=83=E6=95=B4=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrm/migrations/0006_auto_20220217_2155.py | 23 +++++++++++++++++++ hb_server/apps/hrm/models.py | 2 ++ hb_server/apps/hrm/serializers.py | 2 -- hb_server/apps/hrm/tasks.py | 5 ++-- hb_server/apps/hrm/views.py | 8 ++----- hb_server/apps/mtm/views.py | 18 ++++++++++++++- hb_server/apps/system/filters.py | 2 +- .../system/migrations/0004_user_is_atwork.py | 18 --------------- .../migrations/0005_user_last_check_time.py | 18 --------------- hb_server/apps/system/models.py | 2 -- hb_server/apps/system/serializers.py | 2 +- 11 files changed, 48 insertions(+), 52 deletions(-) create mode 100644 hb_server/apps/hrm/migrations/0006_auto_20220217_2155.py delete mode 100644 hb_server/apps/system/migrations/0004_user_is_atwork.py delete mode 100644 hb_server/apps/system/migrations/0005_user_last_check_time.py diff --git a/hb_server/apps/hrm/migrations/0006_auto_20220217_2155.py b/hb_server/apps/hrm/migrations/0006_auto_20220217_2155.py new file mode 100644 index 0000000..15ed478 --- /dev/null +++ b/hb_server/apps/hrm/migrations/0006_auto_20220217_2155.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.9 on 2022-02-17 13:55 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('hrm', '0005_auto_20220126_1351'), + ] + + operations = [ + migrations.AddField( + model_name='employee', + name='is_atwork', + field=models.BooleanField(default=False, verbose_name='当前在岗'), + ), + migrations.AddField( + model_name='employee', + name='last_check_time', + field=models.DateTimeField(blank=True, null=True, verbose_name='打卡时间'), + ), + ] diff --git a/hb_server/apps/hrm/models.py b/hb_server/apps/hrm/models.py index 219caea..ed3a063 100644 --- a/hb_server/apps/hrm/models.py +++ b/hb_server/apps/hrm/models.py @@ -30,6 +30,8 @@ class Employee(CommonAModel): qualification = models.CharField('学历', max_length=50, null=True, blank=True) job_state = models.IntegerField('在职状态', choices=jobstate_choices, default=1) face_data = models.JSONField('人脸识别数据', null=True, blank=True) + is_atwork = models.BooleanField('当前在岗', default=False) + last_check_time = models.DateTimeField('打卡时间', null=True, blank=True) class Meta: verbose_name = '员工补充信息' verbose_name_plural = verbose_name diff --git a/hb_server/apps/hrm/serializers.py b/hb_server/apps/hrm/serializers.py index dc1eb06..9371ff4 100644 --- a/hb_server/apps/hrm/serializers.py +++ b/hb_server/apps/hrm/serializers.py @@ -10,8 +10,6 @@ from django.db.models.query import Prefetch class EmployeeSerializer(DynamicFieldsSerializerMixin, ModelSerializer): name = serializers.CharField(source='user.name', read_only=True) dept_ = OrganizationSimpleSerializer(source='user.dept', read_only=True) - is_atwork = serializers.BooleanField(source='user.is_atwork', read_only=True) - last_check_time = serializers.DateTimeField(source='user.last_check_time', read_only=True) class Meta: model = Employee exclude = ['face_data'] diff --git a/hb_server/apps/hrm/tasks.py b/hb_server/apps/hrm/tasks.py index 65ffe92..a96d2cf 100644 --- a/hb_server/apps/hrm/tasks.py +++ b/hb_server/apps/hrm/tasks.py @@ -2,16 +2,15 @@ from __future__ import absolute_import, unicode_literals from celery import shared_task from apps.hrm.models import Employee -from apps.system.models import User from django.core.cache import cache @shared_task -def update_all_user_not_atwork(): +def update_all_employee_not_atwork(): """ 将所有员工设为非在岗状态 """ - User.objects.all().update(is_atwork=False, last_check_time = None) + Employee.objects.all().update(is_atwork=False, last_check_time = None) @shared_task def update_all_user_facedata_cache(): diff --git a/hb_server/apps/hrm/views.py b/hb_server/apps/hrm/views.py index e22ec6b..c19c308 100644 --- a/hb_server/apps/hrm/views.py +++ b/hb_server/apps/hrm/views.py @@ -92,9 +92,7 @@ class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet): ins.update_time = now ins.save() # 设为在岗 - user.is_atwork = True - user.last_check_time = now - user.save() + Employee.objects.filter(user=user).update(is_atwork=True, last_check_time=now) return Response(UserSimpleSerializer(instance=user).data) return Response(msg, status=status.HTTP_400_BAD_REQUEST) return Response('非打卡时间范围', status=status.HTTP_400_BAD_REQUEST) @@ -140,9 +138,7 @@ class FaceLogin(CreateAPIView): }) # 设为在岗 if created: - user.is_atwork = True - user.last_check_time = now - user.save() + Employee.objects.filter(user=user).update(is_atwork=True, last_check_time=now) return Response({ 'refresh': str(refresh), diff --git a/hb_server/apps/mtm/views.py b/hb_server/apps/mtm/views.py index 6fcf054..7aaf203 100644 --- a/hb_server/apps/mtm/views.py +++ b/hb_server/apps/mtm/views.py @@ -10,7 +10,7 @@ from rest_framework.decorators import action from rest_framework.response import Response from utils.pagination import PageOrNot from rest_framework.exceptions import APIException - +from django.db import transaction # Create your views here. class MaterialViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet): @@ -208,6 +208,22 @@ class RecordFormFieldViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelVi return RecordFormFieldUpdateSerializer return RecordFormFieldSerializer + @transaction.atomic + def create(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + vdata = serializer.validated_data + form = vdata.pop('form', None) + instance = RecordForm(**vdata) + instance.save(create_by=request.user) + if form: + for i in RecordFormField.objects.filter(form=form, is_deleted=False): + i.pk = None + i.form = instance + i.parent = None + i.save() + return super().create(request, *args, **kwargs) + class TechDocViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelViewSet): """ 技术文件增删改查 diff --git a/hb_server/apps/system/filters.py b/hb_server/apps/system/filters.py index cd3fde7..22ef179 100644 --- a/hb_server/apps/system/filters.py +++ b/hb_server/apps/system/filters.py @@ -7,4 +7,4 @@ class UserFilter(DynamicFieldsFilterMixin, filters.FilterSet): name = filters.CharFilter(field_name='name', lookup_expr='contains') class Meta: model = User - fields = ['name', 'is_active', 'is_atwork'] \ No newline at end of file + fields = ['name', 'is_active'] \ No newline at end of file diff --git a/hb_server/apps/system/migrations/0004_user_is_atwork.py b/hb_server/apps/system/migrations/0004_user_is_atwork.py deleted file mode 100644 index b512387..0000000 --- a/hb_server/apps/system/migrations/0004_user_is_atwork.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.9 on 2022-01-21 05:41 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('system', '0003_auto_20210812_0909'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='is_atwork', - field=models.BooleanField(default=False, verbose_name='当前在岗'), - ), - ] diff --git a/hb_server/apps/system/migrations/0005_user_last_check_time.py b/hb_server/apps/system/migrations/0005_user_last_check_time.py deleted file mode 100644 index 284e91b..0000000 --- a/hb_server/apps/system/migrations/0005_user_last_check_time.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.9 on 2022-01-25 08:51 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('system', '0004_user_is_atwork'), - ] - - operations = [ - migrations.AddField( - model_name='user', - name='last_check_time', - field=models.DateTimeField(blank=True, null=True, verbose_name='打卡时间'), - ), - ] diff --git a/hb_server/apps/system/models.py b/hb_server/apps/system/models.py index d69121a..c773fcf 100644 --- a/hb_server/apps/system/models.py +++ b/hb_server/apps/system/models.py @@ -116,8 +116,6 @@ class User(AbstractUser): superior = models.ForeignKey( 'self', null=True, blank=True, on_delete=models.SET_NULL, verbose_name='上级主管') roles = models.ManyToManyField(Role, blank=True, verbose_name='角色') - is_atwork = models.BooleanField('当前在岗', default=False) - last_check_time = models.DateTimeField('打卡时间', null=True, blank=True) class Meta: verbose_name = '用户信息' diff --git a/hb_server/apps/system/serializers.py b/hb_server/apps/system/serializers.py index d59d538..45d8c29 100644 --- a/hb_server/apps/system/serializers.py +++ b/hb_server/apps/system/serializers.py @@ -144,7 +144,7 @@ class UserListSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializ fields = ['id', 'name', 'phone', 'email', 'position', 'username', 'is_active', 'date_joined', 'dept_', 'dept', 'roles', 'avatar', - 'roles_', 'is_atwork', 'last_check_time'] + 'roles_'] @staticmethod def setup_eager_loading(queryset):