|
@@ -13,6 +13,7 @@ use App\Models\SystemConfig;
|
|
use App\Models\TimePeriod;
|
|
use App\Models\TimePeriod;
|
|
use Encore\Admin\Admin;
|
|
use Encore\Admin\Admin;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
+use phpDocumentor\Reflection\DocBlock\Description;
|
|
|
|
|
|
class ScheDuleController extends Controller
|
|
class ScheDuleController extends Controller
|
|
{
|
|
{
|
|
@@ -27,9 +28,9 @@ class ScheDuleController extends Controller
|
|
$docter_id = request('docter_id');//医生
|
|
$docter_id = request('docter_id');//医生
|
|
|
|
|
|
|
|
|
|
- $set_time = '2020-11-10至2020-11-16';
|
|
|
|
- $org_id = 1;
|
|
|
|
- $docter_id = 1;
|
|
|
|
|
|
+ $set_time = '2020-11-30至2020-12-06';
|
|
|
|
+ $org_id = 2;
|
|
|
|
+ $docter_id = 47;
|
|
|
|
|
|
if(empty($set_time) || empty($org_id) || empty($docter_id)){
|
|
if(empty($set_time) || empty($org_id) || empty($docter_id)){
|
|
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
|
|
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
|
|
@@ -42,9 +43,19 @@ class ScheDuleController extends Controller
|
|
if(count($all_time) <2){
|
|
if(count($all_time) <2){
|
|
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
|
|
return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
|
|
}
|
|
}
|
|
- $sche_dule = Schedule::where('organization_id','!=','')
|
|
|
|
- ->where(['docter_id'=>$docter_id,'schedule_date'=>$all_time[0]])
|
|
|
|
- ->pluck('id');
|
|
|
|
|
|
+
|
|
|
|
+ $start_time = intval(str_replace('-','',$all_time[0]));
|
|
|
|
+ $end_time = intval(str_replace('-','',$all_time[1]));
|
|
|
|
+// DB::enableQueryLog();
|
|
|
|
+// $sche_dule = Schedule::whereBetween('schedule_day',[$start_time,$end_time])
|
|
|
|
+// ->where(['docter_id'=>$docter_id])
|
|
|
|
+// ->pluck('id')
|
|
|
|
+// ->toArray();
|
|
|
|
+// echo '<pre>';
|
|
|
|
+// print_r(DB::getQueryLog());
|
|
|
|
+// echo '</pre>';
|
|
|
|
+ //dd($sche_dule);
|
|
|
|
+
|
|
$sche_dule_arr = [
|
|
$sche_dule_arr = [
|
|
[
|
|
[
|
|
'date'=>"上午",
|
|
'date'=>"上午",
|
|
@@ -78,45 +89,46 @@ class ScheDuleController extends Controller
|
|
]
|
|
]
|
|
];
|
|
];
|
|
|
|
|
|
|
|
+ //周字段映射
|
|
|
|
+ $week_arr = ['mondy','tuesday','wednesday','thursday','friday','saturday','sunday'];
|
|
|
|
+
|
|
|
|
+ //时段区间id
|
|
|
|
+ $schedule_config = SystemConfig::get('docter_config');
|
|
|
|
+ $mo = TimePeriod::where('start_time_period','>=',$schedule_config['morning_start'])->where('end_time_period','<=',$schedule_config['morning_end'])->pluck('id')->toArray();
|
|
|
|
+ $af = TimePeriod::where('start_time_period','>=',$schedule_config['afternoon_start'])->where('end_time_period','<=',$schedule_config['afternoon_end'])->pluck('id')->toArray();
|
|
|
|
+ $ev = TimePeriod::where('start_time_period','>=',$schedule_config['evening_start'])->where('end_time_period','<=',$schedule_config['evening_end'])->pluck('id')->toArray();
|
|
if(empty($sche_dule)){
|
|
if(empty($sche_dule)){
|
|
return ['status'=>200,'msg'=>'ok','data'=>['schedule'=>$sche_dule_arr,'org_id'=>$org_id,'docter_id'=>$docter_id]];
|
|
return ['status'=>200,'msg'=>'ok','data'=>['schedule'=>$sche_dule_arr,'org_id'=>$org_id,'docter_id'=>$docter_id]];
|
|
}
|
|
}
|
|
- foreach ($sche_dule as $val )
|
|
|
|
- {
|
|
|
|
- $org_schdule = SchedulePeriod::where(['schedule_id'=>$org_id,''])->get()->GroupBy('organization_id');
|
|
|
|
- }
|
|
|
|
- $schedule_config = SystemConfig::get('docter_config');
|
|
|
|
- dd($schedule_config);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- $community = CommunitySchedule::where('org_id',$org_id)->orderBy('day_type')->pluck('times_id','day_type');
|
|
|
|
- $time_array = [[],[],[],[],[],[],[]];
|
|
|
|
- foreach ($community as $key => $ids){
|
|
|
|
- $time = TimePeriod::whereIn('id',$ids)->get(['id','start_time_period','end_time_period']);
|
|
|
|
- $time_info = [];
|
|
|
|
- foreach ($time as $val){
|
|
|
|
- if(!in_array(intval($val->id),$arrays)){
|
|
|
|
- $time_info[] = ['id'=>$val->id,'time'=>$val->start_time_period.'-'.$val->end_time_period];
|
|
|
|
- }
|
|
|
|
|
|
+ for ($i = $start_time; $i<=$end_time; $i++){
|
|
|
|
+ $j = 0;
|
|
|
|
+ $strtime = "$i";
|
|
|
|
+ $str_time = substr($strtime,0,4).'-'.substr($strtime,4,2).'-'.substr($strtime,6,2);
|
|
|
|
+ //检测上午
|
|
|
|
+ $is_mo_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$mo)->where('organization_id','!=',$org_id)->count();
|
|
|
|
+ if($is_mo_have){
|
|
|
|
+ $sche_dule_arr[0][$week_arr[$j]] = 'other';
|
|
|
|
+ }
|
|
|
|
+ //检测下午
|
|
|
|
+ $is_af_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$af)->where('organization_id','!=',$org_id)->count();
|
|
|
|
+ if($is_af_have){
|
|
|
|
+ $sche_dule_arr[1][$week_arr[$j]] = 'other';
|
|
}
|
|
}
|
|
- $time_array[$key-1] = $time_info;
|
|
|
|
- }
|
|
|
|
- $data['community'] = $time_array;
|
|
|
|
- $firstday = date('Y-m-d', strtotime("this week"));
|
|
|
|
- $scd_id = Schedule::where(['schedule_date'=>$firstday,'docter_id'=>$docter_id,'organization_id'=>$org_id])->value('id');
|
|
|
|
- $docter_schedule = $time_array;
|
|
|
|
- if(!empty($scd_id)){
|
|
|
|
- $sche_dule = SchedulePeriod::where('schedule_id',$scd_id)->get(['time_period_id','schedule_date'])->GroupBy('schedule_date')->toArray();
|
|
|
|
- foreach ($sche_dule as $val){
|
|
|
|
- if($val){
|
|
|
|
- $i = 0;
|
|
|
|
- $new_sche_dule[$i] = array_column($val,'time_period_id');
|
|
|
|
- $i++;
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ //检测晚上
|
|
|
|
+ $is_ev_have = SchedulePeriod::whereIn('schedule_id',$sche_dule)->where('schedule_date',$str_time)->whereIn('time_period_id',$ev)->where('organization_id','!=',$org_id)->count();
|
|
|
|
+ if($is_ev_have){
|
|
|
|
+ $sche_dule_arr[2][$week_arr[$j]] = 'other';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- $data['docter'] = $docter_schedule;
|
|
|
|
|
|
+ // "morning_start" => "09:00"
|
|
|
|
+ // "morning_end" => "12:00"
|
|
|
|
+ // "afternoon_start" => "13:00"
|
|
|
|
+ // "afternoon_end" => "18:00"
|
|
|
|
+ // "evening_start" => "19:00"
|
|
|
|
+ // "evening_end" => "20:00"
|
|
|
|
+
|
|
|
|
+ $data['docter'] = $sche_dule_arr;
|
|
$data['role'] = 1;
|
|
$data['role'] = 1;
|
|
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
|
|
return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
|
|
}
|
|
}
|