优化案件模块

This commit is contained in:
27942
2026-01-22 15:48:09 +08:00
parent 07d5c39587
commit 3dda8669a8

View File

@@ -785,7 +785,11 @@ class roxyExhibition(APIView):
query = Q(state=filter_state)
else:
# 默认状态筛选:审核中 或 已抄送财务
query = Q(state__in=["审核中", "已抄送财务"])
# 如果是财务部人员,还需要包含"已通过"状态(可以看到已完成的待办)
if is_finance_user:
query = Q(state__in=["审核中", "已抄送财务", "已通过"])
else:
query = Q(state__in=["审核中", "已抄送财务"])
# 添加筛选条件
if filter_type:
@@ -819,20 +823,40 @@ class roxyExhibition(APIView):
# 重要只匹配当前审核人确保第一个审核人审核完后personincharge被更新为第二个审核人时第一个审核人不再看到
person_query = Q(personincharge=user.username)
# 财务匹配personincharge字段是"财务",且状态为"已抄送财务"
# 财务匹配personincharge字段是"财务",且状态为"已抄送财务"或"已通过"
# 重要:只有财务部人员才能看到财务审核的审批记录
# 财务部可以看到:已抄送财务(待查看)和已通过(已完成)的待办
finance_query = Q()
if is_finance_user:
finance_query = Q(personincharge__in=finance_personincharge_candidates, state="已抄送财务")
finance_query = Q(personincharge__in=finance_personincharge_candidates, state__in=["已抄送财务", "已通过"])
# 已通过的待办查询:
# 1. 财务部人员:可以看到所有状态为"已通过"的待办不管personincharge是谁
# 2. 其他人员:可以看到自己提交的、状态为"已通过"的待办
completed_todo_query = Q()
if is_finance_user:
# 财务部:可以看到所有状态为"已通过"的待办
completed_todo_query = Q(type="待办", state="已通过")
else:
# 其他人员:只能看到自己提交的、状态为"已通过"的待办
# 通过user_id关联到Schedule判断submit字段
from business.models import Schedule
user_submitted_schedule_ids = Schedule.objects.filter(
submit=user.username,
is_deleted=False
).values_list('id', flat=True)
user_submitted_schedule_ids_str = [str(sid) for sid in user_submitted_schedule_ids]
if user_submitted_schedule_ids_str:
completed_todo_query = Q(type="待办", state="已通过", user_id__in=user_submitted_schedule_ids_str)
# 组合查询:部门匹配 OR 审批员匹配 OR 财务匹配(仅财务部人员)
# 组合查询:部门匹配 OR 审批员匹配 OR 财务匹配 OR 已通过的待办查询
# 如果用户有部门,使用部门匹配;否则只使用审批员匹配
# 注意:审批员匹配必须精确匹配当前用户名,确保多人团队审核时,只有当前审核人能看到
if user_department_ids_str:
query &= (department_query | person_query | finance_query)
query &= (department_query | person_query | finance_query | completed_todo_query)
else:
# 如果用户没有部门,匹配审批员或财务(仅财务部人员)
query &= (person_query | finance_query)
# 如果用户没有部门,匹配审批员或财务(仅财务部人员)或已通过的待办
query &= (person_query | finance_query | completed_todo_query)
# 添加调试日志
import logging