Swdz-WangHaiJun %!s(int64=4) %!d(string=hai) anos
pai
achega
027053d957
Modificáronse 2 ficheiros con 273 adicións e 60 borrados
  1. 272 60
      app/Http/Controllers/ScheDuleController.php
  2. 1 0
      routes/web.php

+ 272 - 60
app/Http/Controllers/ScheDuleController.php

xqd xqd xqd xqd xqd 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']));
@@ -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']);
@@ -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)
@@ -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);
@@ -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);
+
     }
 
     //获取用户信息
@@ -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);
+    }
 }

+ 1 - 0
routes/web.php

xqd
@@ -26,6 +26,7 @@ Route::get('/setDocChedule', 'ScheDuleController@setDocChedule');
 
 Route::get('/api/get_month_schedule', 'ScheDuleController@get_month_schedule');
 Route::get('/api/update_docter_setting', 'ScheDuleController@updateDocterSetting');
+Route::get('/api/get_docter_setting', 'ScheDuleController@getDocterSetting');
 
 //用户信息
 Route::get('/api/getScheduleInfo', 'ScheDuleController@getScheduleInfo');