فهرست منبع

Merge branch 'master' of ssh://git.9026.com:2212/swdz-WangHaijun/BaoMa

zilong 4 سال پیش
والد
کامیت
af184ae590
1فایلهای تغییر یافته به همراه80 افزوده شده و 19 حذف شده
  1. 80 19
      app/Http/Controllers/ScheDuleController.php

+ 80 - 19
app/Http/Controllers/ScheDuleController.php

xqd xqd xqd xqd xqd
@@ -655,14 +655,14 @@ class ScheDuleController  extends Controller
 //        ];
         $setting  = DocterSetting::where(['docter_id'=>$docter_id])->first()->toArray();
 
-        $self_config = object_array(json_decode($setting['service_time']));
+        $configData = object_array(json_decode($setting['service_time']));
 
         $is_new = [];
         $is_change = false;
-//
-        if(intval($configData['timeSpan']) != $setting['service_num']){
-            $is_change = true;
-        }
+
+//        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;
@@ -676,9 +676,9 @@ class ScheDuleController  extends Controller
 //            $is_new[] = 3;
 //        }
 
-        if(intval($configData['timeSpan']) != $setting['service_num']){
-            $is_new = [1,2,3];
-        }
+//        if(intval($configData['timeSpan']) != $setting['service_num']){
+//            $is_new = [1,2,3];
+//        }
 //        configData: {
 //                amEndTime: "11:30",    //上午结束时间  string
         //        amNum: 20,  //上午号源 Num
@@ -706,6 +706,29 @@ class ScheDuleController  extends Controller
             2=>['count'=>$configData['pmNum'],'start_time'=>$configData['pmStartTime'],'end_time'=>$configData['pmEndTime']],
             3=>['count'=>$configData['nightNum'],'start_time'=>$configData['nightStartTime'],'end_time'=>$configData['nightEndTime']]
         ];
+//        $c_r = [
+//            1=>['count'=>$configData[1]['amPerson'],'start_time'=>$configData[1]['amStartTime'],'end_time'=>$configData[1]['amEndTime']],
+//            2=>['count'=>$configData[2]['pmPerson'],'start_time'=>$configData[2]['pmStartTime'],'end_time'=>$configData[2]['pmEndTime']],
+//            3=>['count'=>$configData[3]['nightPerson'],'start_time'=>$configData[3]['nightStartTime'],'end_time'=>$configData[3]['nightEndTime']]
+//        ];
+//        $configData['timeSpan'] = 30;
+//        if(1==1){
+//            foreach ($is_new as $c){
+//                for($i=1;$i<=$c_r[$c]['count'];$i++){
+//                    $evdata = [
+//                        'org_id'=>$org_id,
+//                        'docter_id'=>$docter_id,
+//                        'type'=>$c,
+//                        'start_time_period'=> date('H:i',strtotime($c_r[$c]['start_time']) + ($i-1)*$configData['timeSpan']*60),
+//                        'end_time_period'=> date('H:i',strtotime($c_r[$c]['start_time']) + $i*$configData['timeSpan']*60),
+//                    ];
+//                    $is_have = TimePeriod::where($evdata)->count();
+//                    if($is_have) continue;
+//                    TimePeriod::insert($evdata);
+//                }
+//            }
+//        }
+//        dd('end');
         //todo 零时关闭排班功能,后续需要解除
         if($is_change && 1!=1){
 
@@ -1116,16 +1139,21 @@ class ScheDuleController  extends Controller
         $schedule_type = request('schedule_type',1);
         $org_id = intval(request('org_id',1));
         $date = request('date');
+        //判断排班类型
         $schedule_type == 1?$type=2:$type=1;
 
-        if(empty($schdule_data) || empty($docter_id) || empty($org_id)){
+        if(empty($schdule_data) || empty($docter_id) || !isset($org_id)){
             return apiReturn(601,'缺少必要参数');
         }
+        //获取医生排班配置
         $schedule = object_array(json_decode($schdule_data));
+        //默认为门诊排班医生配置
         $setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
+        //获取社区排班设置
+//        if($type == 1) $setting = DocterSetting::where(['org_id'=>$org_id])->first();
 
         $schdule_data = [
-            ['status'=>false,'type'=>1,'start'=>"09:00",'end'=>'11:30','date'=>15,'week'=>1],
+            ['status'=>true,'type'=>1,'start'=>"09:00",'end'=>'11:30','date'=>15,'week'=>1],
             ['status'=>true,'type'=>2,'start'=>'13:30','end'=>'16:30','date'=>15,'week'=>1],
             ['status'=>false,'type'=>3,'start'=>'19:30','end'=>'21:00','date'=>15,'week'=>1],
         ];
@@ -1135,38 +1163,71 @@ class ScheDuleController  extends Controller
             foreach ($schdule_data as $t=>$v){
 
                 $today = date('Y-m-d',(strtotime($date) + (intval($v['date'])-1) *86400) );
+                $week = $schdule_data[0]['week'];
                 $num_date = intval(str_replace('-','',$today));
 
                 if($v['status'] == true){
-                    SchedulePeriod::where(['docter_id'=>$docter_id,'schedule_date'=>$today])->delete();
                     $sche_data = ['organization_id'=>$org_id,'schedule_date'=>$today,'schedule_day'=>$num_date];
-                    $sid = Schedule::insertGetId($sche_data);
-                    echo '医生'.$docter_id.' 机构'.$org_id.' type '.$t;
-                    $timeperiods = TimePeriod::where(['docter_id'=>intval($docter_id),'org_id'=>intval($org_id),'type'=>intval($t)])->pluck('id')->toArray();
+
+                    //判断是否有排班信息
+                    $s_id = Schedule::where($sche_data)->value('id');
+                    if(!$s_id){
+                        $s_id = Schedule::insertGetId($sche_data);
+                    }
+
+                    //获取时间段
+                    $timeperiods = TimePeriod::where(['docter_id'=>intval($docter_id),'org_id'=>intval($org_id),'type'=>intval($v['type'])])->pluck('id')->toArray();
+                    if($type == 2){
+                        $timeperiods = TimePeriod::where(['docter_id'=>intval($docter_id),'org_id'=>0,'type'=>intval($v['type'])])->pluck('id')->toArray();
+                    }
                     foreach ($timeperiods as $id){
                         $data = [
-                            'schedule_id'=>$sid,
                             'organization_id'=>$org_id,
                             'time_period_id'=>$id,
+                            'week'=>$week,
                             'type'=>$v['type'],
+                            'schedule_date'=>$today,
                             'docter_id'=>$docter_id,
                         ];
-                        TimePeriod::insert($data);
+
+                        //检查是否已经有数据
+                        $self_count = SelfSchedule::where($data)->value('id');
+                        if($self_count) continue;
+                        SelfSchedule::insert($data);
                     }
 
                 } else if($v['status'] == false){
-                    $s_id = Schedule::where(['schedule_id'=>$today,'docter_id'=>$org_id,])->value('id');
-                    dd($s_id);
+                    $data = [
+                        'organization_id'=>$org_id,
+                        'week'=>$week,
+                        'type'=>$v['type'],
+                        'docter_id'=>$docter_id,
+                        'schedule_date'=>$today
+                    ];
+                    //判断是否有自己的排班
+                    $self_count = SelfSchedule::where($data)->count();
+                    if($self_count) SelfSchedule::where($data)->delete();
+
+                    //检查是否是有周排班
+                    $week_schedule = WeekSchedule::where(['week'=>$week,'docter_id'=>$docter_id,'type'=>intval($v['type']),'organization_id'=>$org_id])->count();
+                    if(!$week_schedule) continue;
+
+                    //获取排班id
+                    $s_id = Schedule::where(['schedule_date'=>$today,'docter_id'=>$org_id])->value('id');
+                    if(!$s_id) continue;
+
+                    //删除排班和详细排班数据
                     Schedule::where(['id'=>$s_id])->delete();
                     TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$t,'schedule_id'=>$s_id])->delete();
                 }
             }
+            DB::commit();
         } catch (\Exception $e){
             dd($e->getLine().'行 '.$e->getMessage());
             DB::rollBack();
             return apiReturn(603,'操作失败');
         }
-        return apiReturn(200,'ok');
+        return apiReturn(200,'操作成功');
     }
     //获取周排班模板
     public function getWeekSchedule()