优化案件模块
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user