From 06a2c1a83691442a107b229e069fed65ea358026 Mon Sep 17 00:00:00 2001 From: 27942 Date: Wed, 31 Dec 2025 16:07:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=9B=E5=BB=BA=E6=A1=88?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- User/views.py | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/User/views.py b/User/views.py index 7230051..c924f34 100644 --- a/User/views.py +++ b/User/views.py @@ -8,7 +8,7 @@ from .models import User, Approval, Department, OperationLog from business.models import permission from finance.models import Income, Accounts, Payment, Reimbursement, BonusChange from finance.models import Invoice -from business.models import ProjectRegistration, Case, SealApplication, PreFiling +from business.models import ProjectRegistration, Case, SealApplication, PreFiling, Bid import datetime from utility.utility import flies from django.contrib.sessions.backends.db import SessionStore @@ -678,16 +678,36 @@ class roxyExhibition(APIView): approvals = Approval.objects.filter(query, is_deleted=False).order_by('-id') - # 过滤掉关联的案件已被删除的审批记录 + # 过滤掉关联的业务记录已被删除的审批记录 # 获取所有已删除的案件ID(转为字符串,因为Approval.user_id是CharField) deleted_case_ids = Case.objects.filter(is_deleted=True).values_list('id', flat=True) deleted_case_ids_str = [str(cid) for cid in deleted_case_ids] + # 获取所有已删除的投标登记ID + deleted_bid_ids = Bid.objects.filter(is_deleted=True).values_list('id', flat=True) + deleted_bid_ids_str = [str(bid) for bid in deleted_bid_ids] + + # 获取所有已删除的立项登记ID + deleted_project_ids = ProjectRegistration.objects.filter(is_deleted=True).values_list('id', flat=True) + deleted_project_ids_str = [str(pid) for pid in deleted_project_ids] + + # 排除关联的业务记录已被删除的审批记录 + exclude_conditions = Q() + # 排除 type="案件管理" 且关联的案件已被删除的审批记录 if deleted_case_ids_str: - approvals = approvals.exclude( - Q(type="案件管理") & Q(user_id__in=deleted_case_ids_str) - ) + exclude_conditions |= Q(type="案件管理") & Q(user_id__in=deleted_case_ids_str) + + # 排除 type="投标登记" 且关联的投标登记已被删除的审批记录 + if deleted_bid_ids_str: + exclude_conditions |= Q(type="投标登记") & Q(user_id__in=deleted_bid_ids_str) + + # 排除 type="立项登记" 且关联的立项登记已被删除的审批记录 + if deleted_project_ids_str: + exclude_conditions |= Q(type="立项登记") & Q(user_id__in=deleted_project_ids_str) + + if exclude_conditions: + approvals = approvals.exclude(exclude_conditions) # 调试信息(生产环境可以注释掉) # print(f"用户: {user.username}, 部门IDs: {user_department_ids_str}") @@ -894,6 +914,20 @@ class approvalProcessing(APIView): approval.save(update_fields=['state']) user.save(update_fields=['state']) + if type == "投标登记": + try: + user = Bid.objects.get(id=approval.user_id, is_deleted=False) + except Bid.DoesNotExist: + return Response({'status': 'error', 'message': '投标登记记录不存在或已被删除', 'code': 1}, status=status.HTTP_404_NOT_FOUND) + if state == "已通过": + approval.state = "已通过" + user.state = "已通过" + else: + approval.state = "未通过" + user.state = "未通过" + approval.save(update_fields=['state']) + user.save(update_fields=['state']) + if type == "案件管理": try: approval = Approval.objects.get(id=id, is_deleted=False)