# 导检流程


# 数据库

导检方式:0关闭,1自动导检,2排队叫号
过号机制:0关闭,n过号n桌
# Ridis
`queue_dept_list` 排队科室
`queue_dept_num_count_`正在排队人员,不包括正在检查的人,后缀跟queue_code
`queue_dept_has_checked_count_`检查完成人员,后缀跟queue_code
`queue_queue_checking_call_`正在检查的人员,后缀更queue_code
# Queue类
*****
**入队**
~~~
put_in_queue($order_id, $queue_code, $queue_cust_id, $queue_cfg_id)
~~~
**出队**
~~~
go_out_queue($order_id, $queue_code)
~~~
**开始排队**
~~~
queue_start($order_dept, $order_id)
~~~
**医生叫号(把队列第一个人,呼入科室检查)**
~~~
get_dept_first_queue($queue_code, $old_order_id, $manhole_cfg_id = '')
~~~
**踢出列队**
~~~
kick_out_queue($order_id, $queue_code, $queue_id, $queue_real_id)
~~~
**完成检查**
~~~
finish_exam($queue_code,$order_id)
~~~
# 定时任务
*****
**初始队列**
>清空历史排队数据,包括人员排队记录,排队临时队列数据等,备份排队信息
```
/manager/crontab/initialize_date
```
**登记入队**
>修改用户到检时间为今天,限制了只有当天的体检人才能排队,并将订单id写入队列pc端登记,会将订单放入redis队列中,然后用定时任务去取,1分钟一次,每次取5个人进入队列排队
```
/manager/crontab/cron_sync_uncheck_order
```
**取消订单**
>取消订单,则退出导诊排队,要求30s执行一次
```
/manager/queueapi/crontab/order_cancel_to_quit_queue
```
**中途加减项**
>刷新排队数据 1分钟执行一次
```
/manager/queueapi/crontab/refresh_queue_by_union
```
**校准列队数据**
>刷新Redis排队数据 ,1分钟执行一次
* 清除正在检查的用户
* 清除僵尸用户
```
/manager/queueapi/crontab/refresh_queue_person_num
```
