优化大版本
This commit is contained in:
125
finance/views.py
125
finance/views.py
@@ -346,22 +346,20 @@ class UnregisteredUserList(APIView):
|
||||
|
||||
|
||||
class UserRegisterDetail(APIView):
|
||||
"""入职财务登记列表查询"""
|
||||
"""未入职登记用户列表查询"""
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
"""
|
||||
入职登记列表查询
|
||||
查询在人事管理中已创建,但还没有完成入职财务登记的用户
|
||||
:param request:
|
||||
:param args:
|
||||
:param kwargs:
|
||||
:return:
|
||||
"""
|
||||
page = request.data.get('page')
|
||||
per_page = request.data.get('per_page')
|
||||
username = request.data.get('username') # 用户名搜索
|
||||
times = request.data.get('times') # 开始时间
|
||||
end_time = request.data.get('end_time') # 结束时间
|
||||
state = request.data.get('state') # 审批状态
|
||||
page = request.data.get('page', 1)
|
||||
per_page = request.data.get('per_page', 10)
|
||||
username = request.data.get('username', '') # 用户名搜索
|
||||
department = request.data.get('department', '') # 部门搜索
|
||||
|
||||
if not all([page, per_page]):
|
||||
return Response({
|
||||
@@ -370,69 +368,74 @@ class UserRegisterDetail(APIView):
|
||||
'code': 1
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
# 查询入职财务登记的审批记录
|
||||
Q_obj = Q(type="入职财务登记", is_deleted=False)
|
||||
# 获取所有已完成入职登记的用户ID(状态为"已通过"的入职财务登记)
|
||||
completed_registration_user_ids = Approval.objects.filter(
|
||||
type="入职财务登记",
|
||||
state="已通过",
|
||||
is_deleted=False
|
||||
).values_list('user_id', flat=True)
|
||||
|
||||
# 将user_id转换为整数列表(因为user_id是CharField存储的字符串)
|
||||
completed_user_ids = []
|
||||
for user_id_str in completed_registration_user_ids:
|
||||
try:
|
||||
completed_user_ids.append(int(user_id_str))
|
||||
except (ValueError, TypeError):
|
||||
continue
|
||||
|
||||
# 查询条件:在人事管理中,但不在已完成入职登记的用户列表中
|
||||
Q_obj = Q(is_deleted=False)
|
||||
|
||||
# 排除已完成入职登记的用户
|
||||
if completed_user_ids:
|
||||
Q_obj &= ~Q(id__in=completed_user_ids)
|
||||
|
||||
# 用户名搜索
|
||||
if username:
|
||||
Q_obj &= Q(title__icontains=username) | Q(content__icontains=username)
|
||||
if times and end_time:
|
||||
Q_obj &= Q(times__gte=times) & Q(times__lte=end_time)
|
||||
if state:
|
||||
Q_obj &= Q(state=state)
|
||||
Q_obj &= Q(username__icontains=username)
|
||||
|
||||
approvals = Approval.objects.filter(Q_obj).order_by('-id')
|
||||
total = len(approvals)
|
||||
# 部门搜索
|
||||
if department:
|
||||
Q_obj &= Q(department__username__icontains=department)
|
||||
|
||||
paginator = Paginator(approvals, per_page)
|
||||
# 查询用户
|
||||
users = User.objects.prefetch_related('department', 'role').filter(Q_obj).order_by('-id')
|
||||
total = users.count()
|
||||
|
||||
# 分页
|
||||
paginator = Paginator(users, per_page)
|
||||
try:
|
||||
user_agents_page = paginator.page(page)
|
||||
users_page = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
user_agents_page = paginator.page(1)
|
||||
users_page = paginator.page(1)
|
||||
except EmptyPage:
|
||||
user_agents_page = paginator.page(paginator.num_pages)
|
||||
users_page = paginator.page(paginator.num_pages)
|
||||
|
||||
data = []
|
||||
for approval in user_agents_page.object_list:
|
||||
# 获取用户信息
|
||||
try:
|
||||
user = User.objects.get(id=int(approval.user_id), is_deleted=False)
|
||||
user_info = {
|
||||
'id': user.id,
|
||||
'username': user.username,
|
||||
'account': user.account,
|
||||
'position': user.position,
|
||||
'card': user.card,
|
||||
'Dateofjoining': user.Dateofjoining.strftime("%Y-%m-%d") if user.Dateofjoining else None,
|
||||
'salary': user.salary,
|
||||
'state': user.state,
|
||||
'team': user.team
|
||||
}
|
||||
except (User.DoesNotExist, ValueError):
|
||||
user_info = {
|
||||
'id': None,
|
||||
'username': '用户不存在',
|
||||
'account': '',
|
||||
'position': '',
|
||||
'card': '',
|
||||
'Dateofjoining': None,
|
||||
'salary': '',
|
||||
'state': '',
|
||||
'team': ''
|
||||
}
|
||||
for user in users_page.object_list:
|
||||
# 检查是否有待审核的入职登记(状态为"审核中")
|
||||
pending_approval = Approval.objects.filter(
|
||||
type="入职财务登记",
|
||||
user_id=str(user.id),
|
||||
state="审核中",
|
||||
is_deleted=False
|
||||
).first()
|
||||
|
||||
item = {
|
||||
'id': approval.id,
|
||||
'title': approval.title,
|
||||
'content': approval.content,
|
||||
'times': approval.times.strftime("%Y-%m-%d") if approval.times else None,
|
||||
'completeTiem': approval.completeTiem.strftime("%Y-%m-%d") if approval.completeTiem else None,
|
||||
'personincharge': approval.personincharge,
|
||||
'state': approval.state,
|
||||
'type': approval.type,
|
||||
'user_id': approval.user_id,
|
||||
'user_info': user_info
|
||||
}
|
||||
data.append(item)
|
||||
data.append({
|
||||
'id': user.id,
|
||||
'username': user.username,
|
||||
'account': user.account,
|
||||
'card': user.card,
|
||||
'position': user.position,
|
||||
'mobilePhone': user.mobilePhone,
|
||||
'department': list(user.department.values('id', 'username')),
|
||||
'role': list(user.role.values('id', 'RoleName', 'permissionId')),
|
||||
'team': user.team,
|
||||
'Dateofjoining': user.Dateofjoining.strftime("%Y-%m-%d") if user.Dateofjoining else None,
|
||||
'state': user.state,
|
||||
'has_pending_approval': pending_approval is not None, # 是否有待审核的入职登记
|
||||
'pending_approval_id': pending_approval.id if pending_approval else None
|
||||
})
|
||||
|
||||
return Response({
|
||||
'message': '查询成功',
|
||||
|
||||
Reference in New Issue
Block a user