diff --git a/apps/hrm/migrations/0003_employee_post.py b/apps/hrm/migrations/0003_employee_post.py new file mode 100644 index 00000000..3ac4a3b6 --- /dev/null +++ b/apps/hrm/migrations/0003_employee_post.py @@ -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='所属岗位'), + ), + ] diff --git a/apps/hrm/models.py b/apps/hrm/models.py index f7ccc3a2..7b3fd192 100755 --- a/apps/hrm/models.py +++ b/apps/hrm/models.py @@ -1,5 +1,5 @@ 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 @@ -39,6 +39,7 @@ class Employee(CommonBModel): last_check_time = models.DateTimeField('打卡时间', null=True, blank=True) not_work_remark = models.CharField('当前未打卡说明', null=True, blank=True, max_length=200) 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: verbose_name = '员工补充信息' diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 23f735bb..728abcc1 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -16,6 +16,15 @@ from datetime import datetime 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): def save(self, **kwargs): if self.validated_data.get('user', None): diff --git a/apps/hrm/signals.py b/apps/hrm/signals.py index b3f078e5..ad53304e 100755 --- a/apps/hrm/signals.py +++ b/apps/hrm/signals.py @@ -11,14 +11,15 @@ def updateEmployee(sender, instance, created, **kwargs): if not instance.is_superuser and instance.type == 'employee': ep = Employee.objects.filter(user=instance).first() if ep: - if ep.belong_dept and ep.belong_dept != instance.belong_dept: - ep.belong_dept = instance.belong_dept - ep.save() + ep.belong_dept = instance.belong_dept + ep.post = instance.posts.all().order_by('sort', 'create_time').first() + ep.save() else: Employee.objects.get_or_create(user=instance, defaults={ "user": instance, "name": instance.name, "phone": instance.phone, - "belong_dept": instance.belong_dept + "belong_dept": instance.belong_dept, + "post": instance.posts.all().order_by('sort', 'create_time').first() }) diff --git a/apps/monitor/views.py b/apps/monitor/views.py index 841d6ec2..94abd038 100755 --- a/apps/monitor/views.py +++ b/apps/monitor/views.py @@ -137,7 +137,7 @@ class DrfRequestLogViewSet(ListModelMixin, CustomGenericViewSet): 请求日志 """ - perms_map = {'get': 'requestlog.view'} + perms_map = {'get': '*'} queryset = DrfRequestLog.objects.all() list_serializer_class = DrfRequestLogSerializer ordering = ['-requested_at'] diff --git a/apps/system/views.py b/apps/system/views.py index 100af8ec..cfe44769 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -349,6 +349,7 @@ class UserPostViewSet(CreateModelMixin, DestroyModelMixin, ListModelMixin, Custo serializer_class = UserPostSerializer create_serializer_class = UserPostCreateSerializer filterset_fields = ['user', 'post', 'dept'] + ordering = ['sort', 'create_time'] def perform_create(self, serializer): with transaction.atomic(): diff --git a/apps/third/serializers.py b/apps/third/serializers.py index 18415e65..43f158a5 100755 --- a/apps/third/serializers.py +++ b/apps/third/serializers.py @@ -1,6 +1,7 @@ from rest_framework import serializers from apps.am.models import Area +from apps.hrm.serializers import EmployeeBaseSerializer, EmployeeSimpleSerializer from apps.third.models import TDevice, Tlog from apps.utils.serializers import CustomModelSerializer @@ -61,8 +62,9 @@ class TlogSerializer(CustomModelSerializer): fields = '__all__' +class BltSerializer(serializers.ModelSerializer): + employee_ = EmployeeSimpleSerializer(source='employee', read_only=True) -class BltQuerySerializer(serializers.Serializer): - """标签复杂查询 - """ - areas = serializers.ListField(child=serializers.CharField(), label='区域ID列表') \ No newline at end of file + class Meta: + model = TDevice + fields = ['code', 'obj_cate', 'employee'] \ No newline at end of file diff --git a/apps/third/views_d.py b/apps/third/views_d.py index bbed85a0..cd1c4114 100644 --- a/apps/third/views_d.py +++ b/apps/third/views_d.py @@ -58,6 +58,14 @@ class BltViewSet(CustomGenericViewSet): ret['count_visitor'] = qs.filter(employee__type='visitor').count() return Response(ret) + @action(methods=['post'], detail=False, perms_map={'post': '*'}) + def query(self, request): + """标签列表复杂查询 + + 标签列表复杂查询 + """ + pass + class TDeviceViewSet(ListModelMixin, CustomGenericViewSet): """