employee 增加post
This commit is contained in:
parent
1d4c0d4a42
commit
aab3f6d63c
|
@ -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='所属岗位'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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 = '员工补充信息'
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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()
|
||||||
})
|
})
|
||||||
|
|
|
@ -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']
|
||||||
|
|
|
@ -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():
|
||||||
|
|
|
@ -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列表')
|
|
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue