is_atwork调整位置

This commit is contained in:
caoqianming 2022-02-17 21:58:23 +08:00
parent 985935641e
commit 7bfe483c90
11 changed files with 48 additions and 52 deletions

View File

@ -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='打卡时间'),
),
]

View File

@ -30,6 +30,8 @@ class Employee(CommonAModel):
qualification = models.CharField('学历', max_length=50, null=True, blank=True) qualification = models.CharField('学历', max_length=50, null=True, blank=True)
job_state = models.IntegerField('在职状态', choices=jobstate_choices, default=1) job_state = models.IntegerField('在职状态', choices=jobstate_choices, default=1)
face_data = models.JSONField('人脸识别数据', null=True, blank=True) 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: class Meta:
verbose_name = '员工补充信息' verbose_name = '员工补充信息'
verbose_name_plural = verbose_name verbose_name_plural = verbose_name

View File

@ -10,8 +10,6 @@ from django.db.models.query import Prefetch
class EmployeeSerializer(DynamicFieldsSerializerMixin, ModelSerializer): class EmployeeSerializer(DynamicFieldsSerializerMixin, ModelSerializer):
name = serializers.CharField(source='user.name', read_only=True) name = serializers.CharField(source='user.name', read_only=True)
dept_ = OrganizationSimpleSerializer(source='user.dept', 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: class Meta:
model = Employee model = Employee
exclude = ['face_data'] exclude = ['face_data']

View File

@ -2,16 +2,15 @@ from __future__ import absolute_import, unicode_literals
from celery import shared_task from celery import shared_task
from apps.hrm.models import Employee from apps.hrm.models import Employee
from apps.system.models import User
from django.core.cache import cache from django.core.cache import cache
@shared_task @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 @shared_task
def update_all_user_facedata_cache(): def update_all_user_facedata_cache():

View File

@ -92,9 +92,7 @@ class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
ins.update_time = now ins.update_time = now
ins.save() ins.save()
# 设为在岗 # 设为在岗
user.is_atwork = True Employee.objects.filter(user=user).update(is_atwork=True, last_check_time=now)
user.last_check_time = now
user.save()
return Response(UserSimpleSerializer(instance=user).data) return Response(UserSimpleSerializer(instance=user).data)
return Response(msg, status=status.HTTP_400_BAD_REQUEST) return Response(msg, status=status.HTTP_400_BAD_REQUEST)
return Response('非打卡时间范围', status=status.HTTP_400_BAD_REQUEST) return Response('非打卡时间范围', status=status.HTTP_400_BAD_REQUEST)
@ -140,9 +138,7 @@ class FaceLogin(CreateAPIView):
}) })
# 设为在岗 # 设为在岗
if created: if created:
user.is_atwork = True Employee.objects.filter(user=user).update(is_atwork=True, last_check_time=now)
user.last_check_time = now
user.save()
return Response({ return Response({
'refresh': str(refresh), 'refresh': str(refresh),

View File

@ -10,7 +10,7 @@ from rest_framework.decorators import action
from rest_framework.response import Response from rest_framework.response import Response
from utils.pagination import PageOrNot from utils.pagination import PageOrNot
from rest_framework.exceptions import APIException from rest_framework.exceptions import APIException
from django.db import transaction
# Create your views here. # Create your views here.
class MaterialViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet): class MaterialViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
@ -208,6 +208,22 @@ class RecordFormFieldViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelVi
return RecordFormFieldUpdateSerializer return RecordFormFieldUpdateSerializer
return RecordFormFieldSerializer 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): class TechDocViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelViewSet):
""" """
技术文件增删改查 技术文件增删改查

View File

@ -7,4 +7,4 @@ class UserFilter(DynamicFieldsFilterMixin, filters.FilterSet):
name = filters.CharFilter(field_name='name', lookup_expr='contains') name = filters.CharFilter(field_name='name', lookup_expr='contains')
class Meta: class Meta:
model = User model = User
fields = ['name', 'is_active', 'is_atwork'] fields = ['name', 'is_active']

View File

@ -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='当前在岗'),
),
]

View File

@ -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='打卡时间'),
),
]

View File

@ -116,8 +116,6 @@ class User(AbstractUser):
superior = models.ForeignKey( superior = models.ForeignKey(
'self', null=True, blank=True, on_delete=models.SET_NULL, verbose_name='上级主管') 'self', null=True, blank=True, on_delete=models.SET_NULL, verbose_name='上级主管')
roles = models.ManyToManyField(Role, blank=True, 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: class Meta:
verbose_name = '用户信息' verbose_name = '用户信息'

View File

@ -144,7 +144,7 @@ class UserListSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializ
fields = ['id', 'name', 'phone', 'email', 'position', fields = ['id', 'name', 'phone', 'email', 'position',
'username', 'is_active', 'date_joined', 'username', 'is_active', 'date_joined',
'dept_', 'dept', 'roles', 'avatar', 'dept_', 'dept', 'roles', 'avatar',
'roles_', 'is_atwork', 'last_check_time'] 'roles_']
@staticmethod @staticmethod
def setup_eager_loading(queryset): def setup_eager_loading(queryset):