| xqd
@@ -605,25 +605,41 @@ class ScheDuleController extends Controller
|
|
|
$docter_id = request('docter_id',1);
|
|
|
$configData = request('configData');
|
|
|
$type = request('type');
|
|
|
- if(empty($docter_id) || $configData){
|
|
|
+ if(empty($docter_id) || empty($configData)){
|
|
|
return apiReturn(604,'参数错误');
|
|
|
}
|
|
|
|
|
|
- $configData = [
|
|
|
- 'amEndTime'=>"11:30",
|
|
|
- 'amNum'=>20,
|
|
|
- 'amStartTime'=>"09:00",
|
|
|
- 'nightEndTime'=>"19:30",
|
|
|
- 'nightNum'=>8,
|
|
|
- 'nightStartTime'=>"11:30",
|
|
|
- 'pmEndTime'=>"16:00",
|
|
|
- 'pmNum'=>20,
|
|
|
- 'pmStartTime'=>"13:30",
|
|
|
- 'serviceNum'=>2,
|
|
|
- 'status'=>false,
|
|
|
- 'timeSpan'=>15,
|
|
|
- ];
|
|
|
+ $configData = object_array(json_decode($configData));
|
|
|
+// $configData = [
|
|
|
+// 'amEndTime'=>"11:30",
|
|
|
+// 'amNum'=>20,
|
|
|
+// 'amStartTime'=>"09:00",
|
|
|
+// 'nightEndTime'=>"19:30",
|
|
|
+// 'nightNum'=>8,
|
|
|
+// 'nightStartTime'=>"11:30",
|
|
|
+// 'pmEndTime'=>"16:00",
|
|
|
+// 'pmNum'=>20,
|
|
|
+// 'pmStartTime'=>"13:30",
|
|
|
+// 'serviceNum'=>2,
|
|
|
+// 'status'=>false,
|
|
|
+// 'timeSpan'=>15,
|
|
|
+// ];
|
|
|
|
|
|
+// configData: {
|
|
|
+// amEndTime: "11:30", //上午结束时间 string
|
|
|
+// amNum: 20, //上午号源 Num
|
|
|
+// amStartTime: "09:00", //上午开始时间 string
|
|
|
+// nightEndTime: "19:30", //晚上结束时间 string
|
|
|
+// nightNum: 8, //晚上号源 num
|
|
|
+// nightStartTime: "18:30", //晚上开始时间 staring
|
|
|
+// pmEndTime: "16:00", //下午结束时间 string
|
|
|
+// pmNum: 20, //下午号源 num
|
|
|
+// pmStartTime: "13:30", //下午开始时间 string
|
|
|
+// serviceNum: 2, //同时服务人数 Num
|
|
|
+// showDayNumber: 7, //可预约服务天数 Num
|
|
|
+// status: false, // 是否开启 true false
|
|
|
+// timeSpan: "15", // 就诊时长 string
|
|
|
+// },
|
|
|
$setting = DocterSetting::where(['docter_id'=>$docter_id])->first()->toArray();
|
|
|
|
|
|
$self_config = object_array(json_decode($setting['service_time']));
|
| xqd
@@ -662,7 +678,7 @@ class ScheDuleController extends Controller
|
|
|
// },
|
|
|
//添加时间段
|
|
|
$is_new = [1];
|
|
|
- if(count($is_new) > 0){
|
|
|
+ if(count($is_new) > 5){
|
|
|
// $data = ['docter_id'=>$docter_id,'am_start'=>'8:30','am_end'=>'11:30','pm_start'=>'12:00','pm_end'=>'15:00','ev_start'=>'19:00','ev_end'=>'22:00','service_time'=>15];
|
|
|
// $amtimes[] = explode(':',$configData['amStartTime']);
|
|
|
// $amtimes[] = explode(':',$configData['amEndTime']);
|
| xqd
@@ -769,7 +785,7 @@ class ScheDuleController extends Controller
|
|
|
'docter_id'=>$docter_id,
|
|
|
'type'=>$type,
|
|
|
'status'=>$configData['status'],
|
|
|
- 'show_days'=>$configData['serviceNum'],
|
|
|
+ 'show_days'=>$configData['showDayNumber'],
|
|
|
'service_num'=>$configData['serviceNum'],
|
|
|
'service_times'=>$configData['timeSpan'],
|
|
|
'service_time'=>json_encode($config)
|
| xqd
@@ -777,21 +793,6 @@ class ScheDuleController extends Controller
|
|
|
|
|
|
|
|
|
|
|
|
- // configData: {
|
|
|
-// amEndTime: "11:30", //上午结束时间 string
|
|
|
- // amNum: 20, //上午号源 Num
|
|
|
- // amStartTime: "09:00", //上午开始时间 string
|
|
|
- // nightEndTime: "19:30", //晚上结束时间 string
|
|
|
- // nightNum: 8, //晚上号源 num
|
|
|
- // nightStartTime: "18:30", //晚上开始时间 staring
|
|
|
- // pmEndTime: "16:00", //下午结束时间 string
|
|
|
- // pmNum: 20, //下午号源 num
|
|
|
- // pmStartTime: "13:30", //下午开始时间 string
|
|
|
- // serviceNum: 2, //同时服务人数 Num
|
|
|
- // showDayNumber: 7, //可预约服务天数 Num
|
|
|
- // status: false, // 是否开启 true false
|
|
|
- // timeSpan: "15", // 就诊时长 string
|
|
|
-// },
|
|
|
$is_have = DocterSetting::where(['docter_id'=>$docter_id])->value('id');
|
|
|
if($is_have){
|
|
|
DocterSetting::where(['docter_id'=>$docter_id])->update($setting);
|
| xqd
@@ -800,10 +801,49 @@ class ScheDuleController extends Controller
|
|
|
}
|
|
|
return apiReturn(200,'ok');
|
|
|
}
|
|
|
+
|
|
|
public function getDocterSetting()
|
|
|
{
|
|
|
$docter_id = request('docter_id',1);
|
|
|
- $setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
|
|
|
+ $setting = DocterSetting::where(['docter_id'=>$docter_id])->first()->toArray();
|
|
|
+ $config = object_array(json_decode($setting['service_time']));
|
|
|
+
|
|
|
+ $status = $setting['status'] ? true: false;
|
|
|
+ $configData = [
|
|
|
+ 'amEndTime'=>$config[1]['amEndTime'],
|
|
|
+ 'amNum'=>$config[1]['amPerson'],
|
|
|
+ 'amStartTime'=>$config[1]['amStartTime'],
|
|
|
+ 'nightEndTime'=>$config[3]['nightEndTime'],
|
|
|
+ 'nightNum'=>$config[3]['nightPerson'],
|
|
|
+ 'nightStartTime'=>$config[3]['nightStartTime'],
|
|
|
+ 'pmEndTime'=>$config[2]['pmEndTime'],
|
|
|
+ 'pmNum'=>$config[2]['pmPerson'],
|
|
|
+ 'pmStartTime'=>$config[2]['pmStartTime'],
|
|
|
+ 'serviceNum'=>$setting['service_num'],
|
|
|
+ 'showDayNumber'=>$setting['show_days'],
|
|
|
+ 'status'=>$status,
|
|
|
+ 'timeSpan'=>$setting['service_times'],
|
|
|
+ ];
|
|
|
+
|
|
|
+
|
|
|
+// configData: {
|
|
|
+// amEndTime: "11:30", //上午结束时间 string
|
|
|
+// amNum: 20, //上午号源 Num
|
|
|
+// amStartTime: "09:00", //上午开始时间 string
|
|
|
+// nightEndTime: "19:30", //晚上结束时间 string
|
|
|
+// nightNum: 8, //晚上号源 num
|
|
|
+// nightStartTime: "18:30", //晚上开始时间 staring
|
|
|
+// pmEndTime: "16:00", //下午结束时间 string
|
|
|
+// pmNum: 20, //下午号源 num
|
|
|
+// pmStartTime: "13:30", //下午开始时间 string
|
|
|
+// serviceNum: 2, //同时服务人数 Num
|
|
|
+// showDayNumber: 7, //可预约服务天数 Num
|
|
|
+// status: false, // 是否开启 true false
|
|
|
+// timeSpan: "15", // 就诊时长 string
|
|
|
+// },
|
|
|
+
|
|
|
+ return apiReturn(200,'ok',$configData);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//获取用户信息
|
| xqd
@@ -884,49 +924,221 @@ class ScheDuleController extends Controller
|
|
|
$now_date = date('Y-m-d',$now_time);
|
|
|
$week = date('N',$now_time);
|
|
|
$arr = [
|
|
|
- 1=>['status'=>false],
|
|
|
- 2=>['status'=>false],
|
|
|
- 3=>['status'=>false]
|
|
|
+ ['status'=>false,'type'=>1],
|
|
|
+ ['status'=>true,'type'=>2],
|
|
|
+ ['status'=>false,'type'=>3],
|
|
|
];
|
|
|
if($i%2 == 0){
|
|
|
$arr = [
|
|
|
- 1=>['status'=>true],
|
|
|
- 2=>['status'=>false],
|
|
|
- 3=>['status'=>false]
|
|
|
+ ['status'=>false,'type'=>1],
|
|
|
+ ['status'=>true,'type'=>2],
|
|
|
+ ['status'=>true,'type'=>3],
|
|
|
];
|
|
|
}
|
|
|
|
|
|
if($i%3 == 0){
|
|
|
$arr = [
|
|
|
- 1=>['status'=>true],
|
|
|
- 2=>['status'=>true],
|
|
|
- 3=>['status'=>'other']
|
|
|
+ ['status'=>true,'type'=>1],
|
|
|
+ ['status'=>'other','type'=>2],
|
|
|
+ ['status'=>false,'type'=>3],
|
|
|
];
|
|
|
}
|
|
|
|
|
|
if($i%3 == 0){
|
|
|
$arr = [
|
|
|
- 1=>['status'=>false],
|
|
|
- 2=>['status'=>false],
|
|
|
- 3=>['status'=>'other']
|
|
|
+ ['status'=>'other','type'=>1],
|
|
|
+ ['status'=>true,'type'=>2],
|
|
|
+ ['status'=>false,'type'=>3],
|
|
|
];
|
|
|
}
|
|
|
-
|
|
|
-// $su = rand(1,3);
|
|
|
-// if($su == 0){
|
|
|
-// $arr = [];
|
|
|
-// } else {
|
|
|
-// $arr = array_rand($types,$su);
|
|
|
-// if(!is_array($arr)) {
|
|
|
-// $arr = [
|
|
|
-// 1=>['status'=>true],
|
|
|
-// 2=>['status'=>'other'],
|
|
|
-// 3=>['status'=>false]
|
|
|
-// ];
|
|
|
-// }
|
|
|
-// }
|
|
|
- $all_time[] = ['date'=>($i+1),'day'=>$now_date,'schedulelingList'=>$arr,'week'=>$week];
|
|
|
+ $all_time[] = ['date'=>($i+1),'day'=>$now_date,'schedulelingList'=>$arr,'week'=>$week];
|
|
|
}
|
|
|
return apiReturn(200,'ok',$all_time);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ //获取周排班模板
|
|
|
+ public function getWeekSchedule()
|
|
|
+ {
|
|
|
+ $docter_id = request('docter_id',1);
|
|
|
+ $org_id = request('org_id',1);
|
|
|
+ $type = request('type',2);
|
|
|
+ $role = request('role',2);
|
|
|
+ if(empty($docter_id) || empty($type)){
|
|
|
+ return apiReturn(604,'缺少必要参数');
|
|
|
+ }
|
|
|
+
|
|
|
+ $docter_id = 1;
|
|
|
+ $docter_setting = DocterSetting::where(['docter_id'=>$docter_id,'type'=>$type])->first();
|
|
|
+
|
|
|
+ //周字段映射
|
|
|
+ $week_arr = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'];
|
|
|
+ $data = [
|
|
|
+ [
|
|
|
+ 'date'=>"上午",
|
|
|
+ 'monday'=>false,
|
|
|
+ 'tuesday'=>false,
|
|
|
+ 'wednesday'=>false,
|
|
|
+ 'thursday'=>false,
|
|
|
+ 'friday'=>false,
|
|
|
+ 'saturday'=>false,
|
|
|
+ 'sunday'=>false,
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'date'=>"下午",
|
|
|
+ 'monday'=>false,
|
|
|
+ 'tuesday'=>false,
|
|
|
+ 'wednesday'=>false,
|
|
|
+ 'thursday'=>false,
|
|
|
+ 'friday'=>false,
|
|
|
+ 'saturday'=>false,
|
|
|
+ 'sunday'=>false,
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'date'=>"晚上",
|
|
|
+ 'monday'=>false,
|
|
|
+ 'tuesday'=>false,
|
|
|
+ 'wednesday'=>false,
|
|
|
+ 'thursday'=>false,
|
|
|
+ 'friday'=>false,
|
|
|
+ 'saturday'=>false,
|
|
|
+ 'sunday'=>false,
|
|
|
+ ]
|
|
|
+ ];
|
|
|
+ if($role == 2){
|
|
|
+ for ($i=0;$i<6;$i++){
|
|
|
+ for($j=0;$j<=2;$j++){
|
|
|
+ $is_self_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'organization_id'=>$org_id,'week'=>$i+1])->count();
|
|
|
+ $is_other_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'week'=>$i+1])->where('organization_id','!=',$org_id)->count();
|
|
|
+ if($is_self_have){
|
|
|
+ $data[$j][$week_arr[$i]] = true;
|
|
|
+ }
|
|
|
+ if($is_other_have){
|
|
|
+ $data[$j][$week_arr[$i]] = 'other';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for ($i=0;$i<6;$i++){
|
|
|
+ for($j=0;$j<=2;$j++){
|
|
|
+ $is_self_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'organization_id'=>$org_id,'week'=>$i+1])->count();
|
|
|
+ $is_other_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'week'=>$i+1])->where('docter_id','!=',$docter_id)->count();
|
|
|
+ if($is_self_have){
|
|
|
+ $data[$j][$week_arr[$i]] = true;
|
|
|
+ }
|
|
|
+ if($is_other_have){
|
|
|
+ $data[$j][$week_arr[$i]] = 'other';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $name = Docter::where('id',$docter_id)->value('name');
|
|
|
+
|
|
|
+ $shcedule_data['docter'] = $data;
|
|
|
+ $shcedule_data['name'] = $name;
|
|
|
+
|
|
|
+ $shcedule_data['role'] = $role;
|
|
|
+ $shcedule_data['user_id'] = $docter_id;
|
|
|
+
|
|
|
+ return apiReturn(200,'ok',$shcedule_data);
|
|
|
+ }
|
|
|
+
|
|
|
+ //设置周排班模板
|
|
|
+ public function setWeekSchedule()
|
|
|
+ {
|
|
|
+ $docter_id = request('docter_id',1);
|
|
|
+ $org_id = request('org_id',1);
|
|
|
+ $type = request('type',2);
|
|
|
+ if(empty($docter_id) || empty($org_id) || empty($type)){
|
|
|
+ return apiReturn(601,'缺少必要参数');
|
|
|
+ }
|
|
|
+ $docter_setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
|
|
|
+ $data = [
|
|
|
+ [
|
|
|
+ 'date'=>"上午",
|
|
|
+ 'monday'=>false,
|
|
|
+ 'tuesday'=>true,
|
|
|
+ 'wednesday'=>false,
|
|
|
+ 'thursday'=>false,
|
|
|
+ 'friday'=>true,
|
|
|
+ 'saturday'=>false,
|
|
|
+ 'sunday'=>false,
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'date'=>"下午",
|
|
|
+ 'monday'=>false,
|
|
|
+ 'tuesday'=>false,
|
|
|
+ 'wednesday'=>false,
|
|
|
+ 'thursday'=>false,
|
|
|
+ 'friday'=>false,
|
|
|
+ 'saturday'=>true,
|
|
|
+ 'sunday'=>false,
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'date'=>"晚上",
|
|
|
+ 'monday'=>true,
|
|
|
+ 'tuesday'=>true,
|
|
|
+ 'wednesday'=>false,
|
|
|
+ 'thursday'=>false,
|
|
|
+ 'friday'=>false,
|
|
|
+ 'saturday'=>false,
|
|
|
+ 'sunday'=>false,
|
|
|
+ ]
|
|
|
+ ];
|
|
|
+ if(!empty($docter_setting)){
|
|
|
+ $time_period = object_array(json_decode($docter_setting->service_time));
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[0]['startTime']),intval($time_period[0]['endTime'])])->pluck('id')->toArray();
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[1]['startTime']),intval($time_period[1]['endTime'])])->pluck('id')->toArray();
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[2]['startTime']),intval($time_period[2]['endTime'])])->pluck('id')->toArray();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $week_data = [
|
|
|
+ 'schedule_type'=>$type,
|
|
|
+ 'organization_id'=>$org_id,
|
|
|
+ 'docter_id'=>$docter_id
|
|
|
+ ];
|
|
|
+ $k = 0;
|
|
|
+ DB::beginTransaction();
|
|
|
+// $data[0] = array_values(object_array(json_decode($data[0])));
|
|
|
+// $data[1] = array_values(object_array(json_decode($data[1])));
|
|
|
+// $data[2] = array_values(object_array(json_decode($data[2])));
|
|
|
+
|
|
|
+
|
|
|
+ $data[0] = array_values($data[0]);
|
|
|
+ $data[1] = array_values($data[1]);
|
|
|
+ $data[2] = array_values($data[2]);
|
|
|
+ try {
|
|
|
+ for($i=0;$i<=2;$i++){
|
|
|
+ $schedule_data = $data[$i];
|
|
|
+ foreach ($schedule_data as $key=>$schedule){
|
|
|
+ if($key == 0) continue;
|
|
|
+ $week_data ['type'] = $i+1;
|
|
|
+ $week_data ['week'] = $key;
|
|
|
+ if($schedule == true){
|
|
|
+// echo '时间列类型'.($i+1).'----'.$key.'星期数'.'<br>';
|
|
|
+ foreach ($times[$i] as $id){
|
|
|
+ $week_data['time_period_id'] = $id;
|
|
|
+ $is_have = WeekSchedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id,'schedule_type'=>$type,'type'=>$i+1,'week'=>$key])->where('time_period_id',$id)->value('id');
|
|
|
+ $is = $is_have?'有':'沒有';
|
|
|
+// echo '时间段id'.$id.'----'.$is.'</br>';
|
|
|
+ if($is_have) continue;
|
|
|
+ $k++;
|
|
|
+ WeekSchedule::insert($week_data);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $is_have = WeekSchedule::where(['docter_id' => $docter_id, 'organization_id' => $org_id, 'schedule_type' => $type,'type'=>$i+1,'week'=>$key])->whereIn('time_period_id', $times[$i])->value('id');
|
|
|
+ if($is_have) WeekSchedule::where(['docter_id' => $docter_id, 'organization_id' => $org_id, 'schedule_type' => $type,'type'=>$i+1,'week'=>$key])->whereIn('time_period_id', $times[$i])->delete();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ DB::commit();
|
|
|
+ } catch (\Exception $e){
|
|
|
+ DB::rollBack();
|
|
|
+ return apiReturn(602,$e->getLine().'行'.$e->getMessage());
|
|
|
+ }
|
|
|
+ return apiReturn(200,'ok',$k);
|
|
|
+ }
|
|
|
}
|