优化大版本

This commit is contained in:
27942
2026-01-12 16:17:35 +08:00
parent 1fe2dd787a
commit b020ee9d44

View File

@@ -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': '查询成功',