修复创建案件

This commit is contained in:
27942
2025-12-31 16:07:16 +08:00
parent 6c55ad76c3
commit 06a2c1a836

View File

@@ -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)