employee 增加post

This commit is contained in:
曹前明 2022-07-05 14:37:53 +08:00
parent 1d4c0d4a42
commit aab3f6d63c
8 changed files with 52 additions and 10 deletions

View File

@ -0,0 +1,20 @@
# Generated by Django 3.2.12 on 2022-07-05 06:37
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('system', '0001_initial'),
('hrm', '0002_initial'),
]
operations = [
migrations.AddField(
model_name='employee',
name='post',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.post', verbose_name='所属岗位'),
),
]

View File

@ -1,5 +1,5 @@
from django.db import models from django.db import models
from apps.system.models import User from apps.system.models import Post, User
from apps.utils.models import BaseModel, CommonADModel, CommonAModel, CommonBModel from apps.utils.models import BaseModel, CommonADModel, CommonAModel, CommonBModel
@ -39,6 +39,7 @@ class Employee(CommonBModel):
last_check_time = models.DateTimeField('打卡时间', null=True, blank=True) last_check_time = models.DateTimeField('打卡时间', null=True, blank=True)
not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200) not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200)
third_info = models.JSONField('三方信息', default=dict, null=False, blank=True) # 主要是定位卡信息 third_info = models.JSONField('三方信息', default=dict, null=False, blank=True) # 主要是定位卡信息
post = models.ForeignKey(Post, verbose_name='所属岗位', on_delete=models.SET_NULL, null=True, blank=True)
class Meta: class Meta:
verbose_name = '员工补充信息' verbose_name = '员工补充信息'

View File

@ -16,6 +16,15 @@ from datetime import datetime
from django.conf import settings from django.conf import settings
class EmployeeSimpleSerializer(CustomModelSerializer):
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
post_name = serializers.CharField(source='post.name', read_only=True)
class Meta:
model = Employee
fields = ['id', 'type', 'name', 'belong_dept', 'belong_dept_name', 'post', 'post_name']
class EmployeeBaseSerializer(CustomModelSerializer): class EmployeeBaseSerializer(CustomModelSerializer):
def save(self, **kwargs): def save(self, **kwargs):
if self.validated_data.get('user', None): if self.validated_data.get('user', None):

View File

@ -11,14 +11,15 @@ def updateEmployee(sender, instance, created, **kwargs):
if not instance.is_superuser and instance.type == 'employee': if not instance.is_superuser and instance.type == 'employee':
ep = Employee.objects.filter(user=instance).first() ep = Employee.objects.filter(user=instance).first()
if ep: if ep:
if ep.belong_dept and ep.belong_dept != instance.belong_dept: ep.belong_dept = instance.belong_dept
ep.belong_dept = instance.belong_dept ep.post = instance.posts.all().order_by('sort', 'create_time').first()
ep.save() ep.save()
else: else:
Employee.objects.get_or_create(user=instance, Employee.objects.get_or_create(user=instance,
defaults={ defaults={
"user": instance, "user": instance,
"name": instance.name, "name": instance.name,
"phone": instance.phone, "phone": instance.phone,
"belong_dept": instance.belong_dept "belong_dept": instance.belong_dept,
"post": instance.posts.all().order_by('sort', 'create_time').first()
}) })

View File

@ -137,7 +137,7 @@ class DrfRequestLogViewSet(ListModelMixin, CustomGenericViewSet):
请求日志 请求日志
""" """
perms_map = {'get': 'requestlog.view'} perms_map = {'get': '*'}
queryset = DrfRequestLog.objects.all() queryset = DrfRequestLog.objects.all()
list_serializer_class = DrfRequestLogSerializer list_serializer_class = DrfRequestLogSerializer
ordering = ['-requested_at'] ordering = ['-requested_at']

View File

@ -349,6 +349,7 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo
serializer_class = UserPostSerializer serializer_class = UserPostSerializer
create_serializer_class = UserPostCreateSerializer create_serializer_class = UserPostCreateSerializer
filterset_fields = ['user', 'post', 'dept'] filterset_fields = ['user', 'post', 'dept']
ordering = ['sort', 'create_time']
def perform_create(self, serializer): def perform_create(self, serializer):
with transaction.atomic(): with transaction.atomic():

View File

@ -1,6 +1,7 @@
from rest_framework import serializers from rest_framework import serializers
from apps.am.models import Area from apps.am.models import Area
from apps.hrm.serializers import EmployeeBaseSerializer, EmployeeSimpleSerializer
from apps.third.models import TDevice, Tlog from apps.third.models import TDevice, Tlog
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
@ -61,8 +62,9 @@ class TlogSerializer(CustomModelSerializer):
fields = '__all__' fields = '__all__'
class BltSerializer(serializers.ModelSerializer):
employee_ = EmployeeSimpleSerializer(source='employee', read_only=True)
class BltQuerySerializer(serializers.Serializer): class Meta:
"""标签复杂查询 model = TDevice
""" fields = ['code', 'obj_cate', 'employee']
areas = serializers.ListField(child=serializers.CharField(), label='区域ID列表')

View File

@ -58,6 +58,14 @@ class BltViewSet(CustomGenericViewSet):
ret['count_visitor'] = qs.filter(employee__type='visitor').count() ret['count_visitor'] = qs.filter(employee__type='visitor').count()
return Response(ret) return Response(ret)
@action(methods=['post'], detail=False, perms_map={'post': '*'})
def query(self, request):
"""标签列表复杂查询
标签列表复杂查询
"""
pass
class TDeviceViewSet(ListModelMixin, CustomGenericViewSet): class TDeviceViewSet(ListModelMixin, CustomGenericViewSet):
""" """