Swdz-WangHaiJun 4 år sedan
förälder
incheckning
5a33e846c6
1 ändrade filer med 107 tillägg och 42 borttagningar
  1. 107 42
      app/Http/Controllers/ScheDuleController.php

+ 107 - 42
app/Http/Controllers/ScheDuleController.php

xqd xqd xqd xqd xqd xqd xqd
@@ -610,15 +610,15 @@ class ScheDuleController  extends Controller
     public function updateDocterSetting()
     {
         $docter_id = intval(request('docter_id',1));
-        $configData = request('configData',1);
+        $configData = request('configData');
         $type = request('type',1);//医生类型 1 机构 2 医生
         $schedule_type = request('schedule_type',1); //排班类型 1门诊 2计免 3儿保
         $org_id = intval(request('org_id',0));
+
+        $configData = object_array(json_decode($configData));
         if(empty($docter_id) || empty($configData)){
             return apiReturn(604,'参数错误');
         }
-
-        $configData = object_array(json_decode($configData));
 //        $configData = [
 //            'amEndTime'=>"11:30",
 //            'amNum'=>5,
@@ -654,31 +654,32 @@ class ScheDuleController  extends Controller
 //            ['amStartTime'],
 //        ];
         $setting  = DocterSetting::where(['docter_id'=>$docter_id])->first()->toArray();
-
-        $configData = object_array(json_decode($setting['service_time']));
-
+        $self_config = [];
         $is_new = [];
         $is_change = false;
+        if(intval($configData['timeSpan']) != $setting['service_num']){
+            $is_new = [1,2,3];
+        }
+        if(empty($setting) || (intval($configData['timeSpan']) != intval($setting['service_num'])) ){
+            $is_change = true;
+            $self_config = object_array(json_decode($setting['service_time']));
+            $is_new = [1,2,3];
+        } else {
+
+            if($configData['amStartTime'] != $self_config[1]['amStartTime'] ||  $configData['amEndTime'] != $self_config[1]['amEndTime']){
+                $is_new[] = 1;
+            }
+
+            if($configData['pmStartTime'] != $self_config[2]['pmStartTime'] ||  $configData['pmEndTime'] != $self_config[2]['pmEndTime']){
+                $is_new[] = 2;
+            }
+
+            if($configData['nightStartTime'] != $self_config[3]['nightStartTime'] ||  $configData['nightEndTime'] != $self_config[3]['nightEndTime']){
+                $is_new[] = 3;
+            }
+
+        }
 
-//        if(intval($configData['timeSpan']) != $setting['service_num']){
-//            $is_change = true;
-//        }
-//
-//        if($configData['amStartTime'] != $self_config[1]['amStartTime'] ||  $configData['amEndTime'] != $self_config[1]['amEndTime']){
-//            $is_new[] = 1;
-//        }
-//
-//        if($configData['pmStartTime'] != $self_config[2]['pmStartTime'] ||  $configData['pmEndTime'] != $self_config[2]['pmEndTime']){
-//            $is_new[] = 2;
-//        }
-//
-//        if($configData['nightStartTime'] != $self_config[3]['nightStartTime'] ||  $configData['nightEndTime'] != $self_config[3]['nightEndTime']){
-//            $is_new[] = 3;
-//        }
-
-//        if(intval($configData['timeSpan']) != $setting['service_num']){
-//            $is_new = [1,2,3];
-//        }
 //        configData: {
 //                amEndTime: "11:30",    //上午结束时间  string
         //        amNum: 20,  //上午号源 Num
@@ -719,13 +720,16 @@ class ScheDuleController  extends Controller
                     $self_schedule = SelfSchedule::where(['docter_id' => $docter_id, 'schedule_type' => $schedule_type, 'type' => 1])->distinct('type')
                         ->orderBy('schedule_date')->get(['schedule_date', 'type', 'week'])->toArray();
                     SchedulePeriod::where(['docter_id' => $docter_id])->where('schedule_date', '>', date('Y-m-d', time()))->delete();
+
                     if (empty($week_schedule)) {
                         Schedule::where(['docter_id' => $docter_id])->delete();
                         SelfSchedule::where(['docter_id' => $docter_id])->delete();
                     } else {
-                            $schedule = Schedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id])
-                                ->where('schedule_date','>',date('Y-m-d',time()))->pluck('schedule_date','id')->toArray();
-//                        $schedule = Schedule::where(['docter_id' => $docter_id, 'organization_id' => $org_id])->pluck('schedule_date', 'id')->toArray();
+                            $schedule = Schedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id])->where('schedule_date','>',date('Y-m-d',time()))->pluck('schedule_date','id')->toArray();
+//                            self::changeTimePeriods($docter_id,$type,$startTime,$endTime,$timeNum);
+                            //插入以前的数据
+//                            self::selfSchedule($time_periods,$schedule,$org_id,$docter_id,$type,$week_schedule);
+                        $schedule = Schedule::where(['docter_id' => $docter_id, 'organization_id' => $org_id])->pluck('schedule_date', 'id')->toArray();
                         foreach ($schedule as $id => $date) {
                             $week = intval(date('N', strtotime($date)));
                             foreach ($week_schedule as $w) {
@@ -804,7 +808,6 @@ class ScheDuleController  extends Controller
                                             if ($schedule_is_have) continue;
                                             $s_t['created_at'] = Carbon::now();
                                             $s_t['updated_at'] = Carbon::now();
-                                            if ($self_schedule == 1) $s_t['me_sure'] = 1;
                                             SchedulePeriod::insert($s_t);
                                         }
                                     }
@@ -1002,16 +1005,28 @@ class ScheDuleController  extends Controller
     //获取用户信息
     public function getScheduleInfo()
     {
-        $docter_id = request('id');
-        $org_id = request('org_id');
-        $is_docter = CdmsUsers::where('docter_id',$docter_id)->first();
-        if(empty($org_id) && empty($docter_id)){
+        $id = request('id');
+        $isDocter = CdmsUsers::where('docter_id',$id)->first();
+        $isOrg = CdmsUsers::where('org_id',$id)->first();
+        $org_id = null;
+        $role = 1;
+
+        if(empty($id)){
             return json_encode(['status'=>601,'msg'=>'缺少必要参数','data'=>'']);
         }
-        $role = 1;
-        if($is_docter){
+
+        if($isDocter){
+            $org_id = $isDocter->org_id;
+            $docter = Docter::where(['id'=>$id])->first();
             $role = 2;
+        } else {
+            if(!empty($isOrg->org_id)){
+                $org_id = $isOrg->org_id;
+            } else {
+                $role = 0;
+            }
         }
+
         $lists =[];
         if($role == 1){
             $ids = DocterOrganization::where(['organization_id'=>$org_id])->pluck('docter_id')->toArray();
@@ -1020,20 +1035,34 @@ class ScheDuleController  extends Controller
                 $lists[] = ['value'=>$val->id,'label'=>$val->name];
             }
             $name = Organization::where('id',$org_id)->value('name');
-            $user_id = $org_id;
-        } else {
-            $ids = DocterOrganization::where(['docter_id'=>intval($docter_id)])->distinct('organization_id')->pluck('organization_id')->toArray();
+            $user_id = $id;
+        } else if($role == 2){
+            $ids = DocterOrganization::where(['docter_id'=>intval($id)])->distinct('organization_id')->pluck('organization_id')->toArray();
             $list = Organization::whereIn('id',$ids)->get(['id','name']);
             foreach ($list as $val){
                 $lists[] = ['value'=>$val->id,'label'=>$val->name];
             }
-            $name = Docter::where('id',$docter_id)->value('name');
-            $user_id = $docter_id;
+            $name = Docter::where('id',$id)->value('name');
+            $user_id = $id;
+        } else {
+            $name = '';
         }
-        $data['user_id'] = $user_id;
+
+
+        $type = 1;
+        $data['user_id'] = $id;
         $data['name'] = $name;
+        $data['org_id'] = $org_id;
+        $data['docter_type'] = 0;
+        $data['list'] = [];
+
+        if(!empty($docter)){
+            $data['docter_type'] = $docter->type;
+            if($docter->type == 1){
+                $data['list'] = $lists;
+            }
+        }
         $data['role'] = $role;
-        $data['list'] = $lists;
         return (json_encode(['code'=>200,'msg'=>'ok','data'=>$data]));
     }
 
@@ -1490,5 +1519,41 @@ class ScheDuleController  extends Controller
         return 'ok';
     }
 
+    public static function selfSchedule($time_periods,$schedule,$org_id,$docter_id,$type,$week_schedule)
+    {
 
+        if(!is_array($schedule) || count($schedule) <1){
+            return ;
+        }
+        foreach ($schedule as $id => $date) {
+            $week = intval(date('N', strtotime($date)));
+            foreach ($week_schedule as $w) {
+                if ($week == $w) {
+                    foreach ($time_periods as $idt) {
+                        $s_t = [
+                            'organization_id' => $org_id,
+                            'docter_id' => $docter_id,
+                            'type' => $type,
+                            'schedule_date' => $date,
+                            'schedule_id' => $id,
+                            'time_period_id' => $idt
+                        ];
+                        $schedule_is_have = SchedulePeriod::where($s_t)->count();
+                        if ($schedule_is_have) continue;
+                        $s_t['created_at'] = Carbon::now();
+                        $s_t['updated_at'] = Carbon::now();
+                        SchedulePeriod::insert($s_t);
+                    }
+                }
+            }
+        }
+    }
+    public static function setNewSchedule($time_periods,$schedule,$org_id,$docter_id,$type,$week_schedule)
+    {
+
+    }
+    public static function changeTimePeriods($docter_id,$type,$startTime,$endTime,$timeNum)
+    {
+
+    }
 }