From be51124bb6e58a90563a4b76934e01e7ca75f32a Mon Sep 17 00:00:00 2001 From: ahhui Date: Wed, 2 Aug 2023 18:21:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=83=A8=E9=97=A8):=20=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=83=A8=E9=97=A8=E5=A4=B4=E4=BF=A1=E6=81=AF=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E4=BB=A5=E5=8F=8A=E9=80=92=E5=BD=92=E7=9A=84=E5=A4=B4?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9F=A5=E8=AF=A2=EF=BC=8C=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/system/views/dept.py | 50 ++++++++++++++++++++++++++++ backend/dvadmin/utils/viewset.py | 2 -- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/backend/dvadmin/system/views/dept.py b/backend/dvadmin/system/views/dept.py index 70ee9fd..9eaa023 100644 --- a/backend/dvadmin/system/views/dept.py +++ b/backend/dvadmin/system/views/dept.py @@ -189,3 +189,53 @@ class DeptViewSet(CustomModelViewSet): dept.save() return SuccessResponse(data=[], msg="下移成功") + + @action(methods=['GET'], detail=False, permission_classes=[]) + def dept_info(self, request): + """部门信息""" + def inner(did, li): + sub = Dept.objects.filter(parent_id=did) + if not sub.exists(): + return li + for i in sub: + li.append(i.pk) + inner(i, li) + return li + dept_id = request.query_params.get('dept_id') + show_all = request.query_params.get('show_all') + if dept_id is None: + return ErrorResponse(msg="部门不存在") + if not show_all: + show_all = 0 + if int(show_all): # 递归当前部门下的所有部门,查询用户 + all_did = [dept_id] + inner(dept_id, all_did) + users = Users.objects.filter(dept_id__in=all_did) + else: + if dept_id != '': + users = Users.objects.filter(dept_id=dept_id) + else: + users = Users.objects.none() + dept_obj = Dept.objects.get(id=dept_id) if dept_id != '' else None + sub_dept = Dept.objects.filter(parent_id=dept_obj.pk) if dept_id != '' else [] + data = { + 'dept_name': dept_obj and dept_obj.name, + 'dept_user': users.count(), + 'owner': dept_obj and dept_obj.owner, + 'description': dept_obj and dept_obj.description, + 'gender': { + 'male': users.filter(gender=1).count(), + 'female': users.filter(gender=2).count(), + 'unknown': users.filter(gender=0).count(), + }, + 'sub_dept_map': [] + } + for dept in sub_dept: + all_did = [dept.pk] + inner(dept.pk, all_did) + sub_data = { + 'name': dept.name, + 'count': Users.objects.filter(dept_id__in=all_did).count() + } + data['sub_dept_map'].append(sub_data) + return SuccessResponse(data) diff --git a/backend/dvadmin/utils/viewset.py b/backend/dvadmin/utils/viewset.py index a40dae0..47e1c6c 100644 --- a/backend/dvadmin/utils/viewset.py +++ b/backend/dvadmin/utils/viewset.py @@ -6,8 +6,6 @@ @Created on: 2021/6/1 001 22:57 @Remark: 自定义视图集 """ -import uuid - from django.db import transaction from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema