优化待办
This commit is contained in:
@@ -707,6 +707,7 @@ class roxyExhibition(APIView):
|
||||
# - 非纯数字字符串 = 审批员用户名(只有该审批员能看到)
|
||||
# - "财务" = 财务部门(所有财务人员都能看到)
|
||||
# 状态:审核中 或 已抄送财务(财务能看到)
|
||||
# 重要:多人团队审核时,只有当前审核人(personincharge等于当前用户名)才能看到审核记录
|
||||
query = Q(state__in=["审核中", "已抄送财务"])
|
||||
|
||||
# 部门匹配:personincharge字段是纯数字字符串,且匹配用户所属部门
|
||||
@@ -716,6 +717,7 @@ class roxyExhibition(APIView):
|
||||
department_query = Q(personincharge__in=user_department_ids_str)
|
||||
|
||||
# 审批员匹配:personincharge字段是用户名(非纯数字字符串)
|
||||
# 重要:只匹配当前审核人,确保第一个审核人审核完后,personincharge被更新为第二个审核人时,第一个审核人不再看到
|
||||
person_query = Q(personincharge=user.username)
|
||||
|
||||
# 财务匹配:personincharge字段是"财务",且状态为"已抄送财务"
|
||||
@@ -723,6 +725,7 @@ class roxyExhibition(APIView):
|
||||
|
||||
# 组合查询:部门匹配 OR 审批员匹配 OR 财务匹配
|
||||
# 如果用户有部门,使用部门匹配;否则只使用审批员匹配
|
||||
# 注意:审批员匹配必须精确匹配当前用户名,确保多人团队审核时,只有当前审核人能看到
|
||||
if user_department_ids_str:
|
||||
query &= (department_query | person_query | finance_query)
|
||||
else:
|
||||
|
||||
211
审核参数说明.md
Normal file
211
审核参数说明.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# 审核参数说明文档
|
||||
|
||||
## 一、哪些地方可以不传 `approvers` 参数
|
||||
|
||||
### 1. 个人团队(personal/独立律师)
|
||||
|
||||
**可以不传 `approvers` 的情况:**
|
||||
|
||||
- ✅ **个人团队(personal)**:系统会自动判断,直接抄送财务,不需要审核人
|
||||
- ✅ **无团队**:系统会自动判断,直接抄送财务,不需要审核人
|
||||
|
||||
**判断逻辑:**
|
||||
```python
|
||||
# 在 create_approval_with_team_logic 函数中
|
||||
if not team_name or not team or (team and team.team_type == 'personal'):
|
||||
# 个人团队或无团队:直接到财务团队审核
|
||||
# 不需要 approvers 参数
|
||||
approval = Approval.objects.create(
|
||||
personincharge="财务",
|
||||
state="已抄送财务",
|
||||
...
|
||||
)
|
||||
```
|
||||
|
||||
### 2. 团队(team/团队律师)
|
||||
|
||||
**可以不传 `approvers` 的情况:**
|
||||
|
||||
- ✅ **团队已配置审核人**:如果不传 `approvers`,系统会自动使用团队配置的审核人
|
||||
|
||||
**判断逻辑:**
|
||||
```python
|
||||
# 在 create_approval_with_team_logic 函数中
|
||||
elif team and team.team_type == 'team':
|
||||
# 团队类型:需要审核人审核(按顺序)
|
||||
approvers_list = parse_approvers(approvers)
|
||||
|
||||
# 如果没有传入审核人,使用团队的审核人
|
||||
if not approvers_list:
|
||||
approvers_list = [approver.username for approver in team.approvers.filter(is_deleted=False).order_by('id')]
|
||||
```
|
||||
|
||||
**注意:**
|
||||
- 如果团队类型是 `team`,且团队没有配置审核人,且前端也没有传 `approvers`,会返回错误:`团队类型需要指定审核人,请提供approvers参数`
|
||||
|
||||
---
|
||||
|
||||
## 二、如何判断是个人律师还是团队
|
||||
|
||||
### 1. 判断方式
|
||||
|
||||
系统通过 `Team` 模型的 `team_type` 字段判断:
|
||||
|
||||
```python
|
||||
# Team 模型定义
|
||||
class Team(models.Model):
|
||||
TEAM_TYPE_CHOICES = [
|
||||
('personal', '个人团队'), # 个人律师/独立律师
|
||||
('team', '团队'), # 团队律师
|
||||
]
|
||||
team_type = models.CharField(max_length=20, choices=TEAM_TYPE_CHOICES, default='team')
|
||||
```
|
||||
|
||||
### 2. 判断逻辑(在 `create_approval_with_team_logic` 函数中)
|
||||
|
||||
```python
|
||||
# 查找团队
|
||||
team = None
|
||||
if team_name:
|
||||
team = Team.objects.prefetch_related('approvers').filter(name=team_name, is_deleted=False).first()
|
||||
|
||||
# 判断团队类型
|
||||
if not team_name or not team or (team and team.team_type == 'personal'):
|
||||
# 情况1:个人团队(personal)
|
||||
# - 直接抄送财务
|
||||
# - 不需要 approvers 参数
|
||||
# - personincharge="财务"
|
||||
# - state="已抄送财务"
|
||||
|
||||
elif team and team.team_type == 'team':
|
||||
# 情况2:团队(team)
|
||||
# - 需要审核人(可以传 approvers,也可以使用团队配置的审核人)
|
||||
# - personincharge=第一个审核人
|
||||
# - state="审核中"
|
||||
|
||||
else:
|
||||
# 情况3:找不到团队或团队类型未知
|
||||
# - 直接抄送财务
|
||||
# - 不需要 approvers 参数
|
||||
```
|
||||
|
||||
### 3. 判断结果对应的处理方式
|
||||
|
||||
| 团队类型 | team_type | 是否需要 approvers | 处理方式 |
|
||||
|---------|-----------|-------------------|---------|
|
||||
| 个人团队 | `personal` | ❌ 不需要 | 直接抄送财务 |
|
||||
| 团队 | `team` | ✅ 需要(可传可不传) | 按顺序审核,最后抄送财务 |
|
||||
| 无团队 | `None` | ❌ 不需要 | 直接抄送财务 |
|
||||
|
||||
---
|
||||
|
||||
## 三、所有创建审核的接口
|
||||
|
||||
### 1. 业务模块
|
||||
|
||||
#### ① 立项登记 (`POST /api2/business/project`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
#### ② 投标登记 (`POST /api2/business/bid`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
#### ③ 待办创建 (`POST /api2/business/schedule`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **可以不传 `approvers`**:团队类型且团队已配置审核人时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
### 2. 财务模块
|
||||
|
||||
#### ① 入职财务登记 (`POST /api2/finance/user-register`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
#### ② 收入确认 (`POST /api2/finance/confirm`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
#### ③ 付款申请 (`POST /api2/finance/payment-request`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
#### ④ 报销申请 (`POST /api2/finance/reimbursement`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
#### ⑤ 工资/奖金变更 (`POST /api2/finance/change`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
#### ⑥ 离职财务登记 (`POST /api2/finance/user-departure`)
|
||||
- **可以不传 `approvers`**:个人团队时
|
||||
- **必须传 `approvers`**:团队类型且团队未配置审核人时
|
||||
|
||||
---
|
||||
|
||||
## 四、总结
|
||||
|
||||
### 可以不传 `approvers` 的情况:
|
||||
|
||||
1. ✅ **个人团队(personal)**:系统自动判断,直接抄送财务
|
||||
2. ✅ **无团队**:系统自动判断,直接抄送财务
|
||||
3. ✅ **团队(team)且团队已配置审核人**:系统自动使用团队配置的审核人
|
||||
|
||||
### 必须传 `approvers` 的情况:
|
||||
|
||||
1. ❌ **团队(team)且团队未配置审核人**:必须传 `approvers` 参数
|
||||
|
||||
### 判断逻辑:
|
||||
|
||||
系统会自动通过以下方式判断:
|
||||
1. 根据用户的 `team` 字段(团队名称)查找 `Team` 模型
|
||||
2. 检查 `Team.team_type` 字段:
|
||||
- `'personal'` → 个人团队,不需要审核人
|
||||
- `'team'` → 团队,需要审核人(可传可不传,取决于团队是否配置了审核人)
|
||||
|
||||
---
|
||||
|
||||
## 五、代码示例
|
||||
|
||||
### 前端调用示例(可以不传 approvers)
|
||||
|
||||
```javascript
|
||||
// 个人团队 - 可以不传 approvers
|
||||
{
|
||||
"user_id": "123",
|
||||
"type": "项目类型",
|
||||
"ContractNo": "合同编号",
|
||||
"times": "2024-01-01",
|
||||
"responsiblefor": "负责人",
|
||||
"charge": "收费情况"
|
||||
// 不传 approvers,系统会自动判断是个人团队,直接抄送财务
|
||||
}
|
||||
|
||||
// 团队且团队已配置审核人 - 可以不传 approvers
|
||||
{
|
||||
"user_id": "123",
|
||||
"type": "项目类型",
|
||||
"ContractNo": "合同编号",
|
||||
"times": "2024-01-01",
|
||||
"responsiblefor": "负责人",
|
||||
"charge": "收费情况"
|
||||
// 不传 approvers,系统会使用团队配置的审核人
|
||||
}
|
||||
|
||||
// 团队且团队未配置审核人 - 必须传 approvers
|
||||
{
|
||||
"user_id": "123",
|
||||
"type": "项目类型",
|
||||
"ContractNo": "合同编号",
|
||||
"times": "2024-01-01",
|
||||
"responsiblefor": "负责人",
|
||||
"charge": "收费情况",
|
||||
"approvers": [1, 2, 3] // 必须传,否则会报错
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**文档生成时间:** 2024年
|
||||
**最后更新:** 2024年
|
||||
Reference in New Issue
Block a user