Files
zyt/admin/BATCH_ROSTER_EXAMPLE.md
2026-03-04 15:32:30 +08:00

195 lines
4.5 KiB
Markdown

# 批量排班示例
## 示例1:为新医生创建一周排班
### 场景
新入职医生张医生,需要为其创建下周的工作日排班。
### 操作步骤
1. 选择医生:张医生
2. 日期范围:2024-03-04 至 2024-03-10
3. 时段:上午、下午
4. 星期:周一、周二、周三、周四、周五
5. 状态:出诊
6. 号源数:20
7. 最大接诊数:30
### 生成结果
- 周一上午、下午:2条
- 周二上午、下午:2条
- 周三上午、下午:2条
- 周四上午、下午:2条
- 周五上午、下午:2条
- 总计:10条排班记录
## 示例2:批量设置周末休息
### 场景
为所有医生设置本月所有周末为休息日。
### 操作步骤
1. 选择医生:全选(假设3位医生)
2. 日期范围:2024-03-01 至 2024-03-31
3. 时段:上午、下午
4. 星期:周六、周日
5. 状态:休息
### 生成结果
- 3月份共有4个周末(8天)
- 3位医生 × 8天 × 2时段 = 48条记录
## 示例3:节假日调整
### 场景
清明节假期(4月4日-4月6日),所有医生休息。
### 操作步骤
1. 选择医生:全选
2. 日期范围:2024-04-04 至 2024-04-06
3. 时段:上午、下午
4. 星期:全选(因为是连续假期)
5. 状态:休息
6. 备注:清明节假期
### 生成结果
- 假设5位医生
- 5位医生 × 3天 × 2时段 = 30条记录
## 示例4:临时停诊
### 场景
医院装修,某科室所有医生本周三停诊。
### 操作步骤
1. 选择医生:该科室所有医生(假设4位)
2. 日期范围:2024-03-06 至 2024-03-06(单天)
3. 时段:上午、下午
4. 星期:周三
5. 状态:停诊
6. 备注:科室装修
### 生成结果
- 4位医生 × 1天 × 2时段 = 8条记录
## 示例5:月度排班
### 场景
为下个月创建完整的排班计划。
### 第一步:工作日出诊
1. 选择医生:全选(10位医生)
2. 日期范围:2024-04-01 至 2024-04-30
3. 时段:上午、下午
4. 星期:周一至周五
5. 状态:出诊
6. 号源数:20
结果:10 × 22工作日 × 2时段 = 440条记录
### 第二步:周末休息
1. 选择医生:全选(10位医生)
2. 日期范围:2024-04-01 至 2024-04-30
3. 时段:上午、下午
4. 星期:周六、周日
5. 状态:休息
结果:10 × 8天 × 2时段 = 160条记录
### 总计
600条排班记录,覆盖整个月。
## 示例6:特殊排班
### 场景
某医生只在周一、周三、周五上午出诊。
### 操作步骤
1. 选择医生:该医生
2. 日期范围:2024-03-04 至 2024-03-31
3. 时段:上午
4. 星期:周一、周三、周五
5. 状态:出诊
6. 号源数:15
### 生成结果
- 3月份周一、周三、周五共约12天
- 1位医生 × 12天 × 1时段 = 12条记录
## API 调用示例
### 请求示例
```json
POST /adminapi/doctor.roster/batchSave
{
"rosters": [
{
"doctor_id": 1,
"date": "2024-03-04",
"period": "morning",
"status": 1,
"quota": 20,
"max_patients": 30,
"remark": "工作日排班"
},
{
"doctor_id": 1,
"date": "2024-03-04",
"period": "afternoon",
"status": 1,
"quota": 20,
"max_patients": 30,
"remark": "工作日排班"
},
// ... 更多记录
]
}
```
### 响应示例
```json
{
"code": 1,
"msg": "批量保存成功",
"data": {
"success_count": 10,
"failed_count": 0
}
}
```
## 注意事项
1. **性能优化**:一次批量操作建议不超过100条记录
2. **数据验证**:确保所有必填字段都已填写
3. **重复处理**:已存在的排班会被更新,不会重复创建
4. **事务处理**:批量操作使用事务,要么全部成功,要么全部失败
5. **权限检查**:确保当前用户有批量排班权限
## 常见错误
### 错误1:没有生成任何记录
原因:选择的星期与日期范围不匹配
解决:检查日期范围内是否包含选中的星期
### 错误2:记录数量不符合预期
原因:计算错误或日期范围理解错误
解决:使用公式验证:医生数 × 符合条件的天数 × 时段数
### 错误3:批量保存失败
原因:数据验证失败或数据库错误
解决:检查日志,确认数据格式正确
## 最佳实践建议
1. **分批操作**:大量排班分多次批量操作
2. **先测试**:先用少量数据测试,确认无误后再大批量操作
3. **备份数据**:重要操作前备份数据库
4. **逐步完善**:先创建基础排班,再根据实际情况调整
5. **定期检查**:定期检查排班数据的准确性