Swdz-WangHaiJun 4 lat temu
rodzic
commit
1a356032c1
1 zmienionych plików z 36 dodań i 23 usunięć
  1. 36 23
      app/Community/Controllers/ApiController.php

+ 36 - 23
app/Community/Controllers/ApiController.php

xqd xqd xqd xqd xqd xqd xqd xqd xqd
@@ -742,6 +742,9 @@ class ApiController extends Controller
         if(!$changeSeviceTime && empty($changeTimer)){
             return apiReturn(603,'数据为改变');
         }
+
+        TimePeriod::where(['org_id'=>$org_id,'type'=>$sType,'docter_id'=>$docter_id])->delete();
+
         for ($i=1;$i<=3;$i++){
             $tType = $i;
             DB::beginTransaction();
@@ -749,10 +752,10 @@ class ApiController extends Controller
                 //1.删除旧时间段,并删除排班数据
 
                 //todo 暂时未删除周排班
-                self::deleteScheduleInfo($docter_id,$tType,$org_id);
+                self::deleteScheduleInfo($docter_id,$sType,$tType,$org_id);
                 $count = $countArr[$i];
                 //2.创建新时间段
-                self::makeTimePeriod($docter_id,$org_id,$sType,$tType,$c_r[$tType],$count,$serviceTime);
+                self::makeTimePeriod($docter_id,$org_id,$sType,$c_r[$tType],$count,$serviceTime);
 
                 //检测时间段
 //                $timeCount = TimePeriod::where(['org_id' => $org_id, 'docter_id' => $docter_id])->count();
@@ -894,19 +897,17 @@ class ApiController extends Controller
      * $type int 排班类型
      * @descript 删除排班数据
      */
-    public static function deleteScheduleInfo($docter_id,$timeType,$orgId=0){
+    public static function deleteScheduleInfo($docter_id,$sType,$timeType,$orgId=0){
         if($docter_id != 0){
-            TimePeriod::where(['docter_id'=>$docter_id,'type'=>$timeType,'org_id'=>$orgId])->delete();
             SchedulePeriod::where(['docter_id'=>$docter_id,'type'=>$timeType])->where('organization_id','=',$orgId)->delete();
         } else {
-            TimePeriod::where(['org_id'=>$orgId,'type'=>$timeType,'docter_id'=>$docter_id])->delete();
             SchedulePeriod::where(['organization_id'=>$orgId,'type'=>$timeType])->where('docter_id',0)->delete();
         }
         return true;
     }
 
     //插入时间段
-    public static function makeTimePeriod($docterId,$orgId,$sType,$tType,$timeConfig,$timerCount,$serviceTime)
+    public static function makeTimePeriod($docterId,$orgId,$sType,$timeConfig,$timerCount,$serviceTime)
     {
         for($i=1;$i<=$timerCount;$i++){
             $timePreiod = [
@@ -917,8 +918,13 @@ class ApiController extends Controller
                 'end_time_period'=> date('H:i',strtotime($timeConfig['start_time']) + $i*$serviceTime*60),
             ];
             $isHave = TimePeriod::where($timePreiod)->count();
-            if($isHave == 0) TimePeriod::insert($timePreiod);
+//            dump($timePreiod);
+//            dump($isHave);
+
+            if($isHave == 0)        $allData[] = $timePreiod;
         }
+        dump($allData);
+        dump(TimePeriod::insert($allData));
         return true;
     }
 
@@ -1048,40 +1054,48 @@ class ApiController extends Controller
         //todo 上线取消默认值
         $schdule_data = request('schedule_data');
         $docter_id = intval(request('docter_id'));
-        $type = intval(request('type'));//排班类型 1门诊 2...
+        $sType = intval(request('type'));//排班类型 1门诊 2...
         $org_id = intval(request('org_id'));
         $date = request('date');
+        if($sType !=1){
+            $docter_id = 0;
+        }
         //判断排班类型
 
-        if(empty($schdule_data) || !isset($org_id) || empty($type)){
+        if(empty($schdule_data) || !isset($org_id) || empty($sType)){
             return apiReturn(601,'缺少必要参数');
         }
         //获取医生排班配置
         $schedule = object_array(json_decode($schdule_data));
         //默认为门诊排班医生配置
-        $setting = self::getSetting($type,$docter_id,$org_id);
+        $setting = self::getSetting($sType,$docter_id,$org_id);
         if(empty($setting)){
-            self::setDefultSetting($type,$docter_id,$org_id);
-            $setting = self::getSetting($type,$docter_id,$org_id);
+            self::setDefultSetting($sType,$docter_id,$org_id);
+            $setting = self::getSetting($sType,$docter_id,$org_id);
         }
 
+        $self_config = object_array(json_decode($setting['service_time']));
+
+        $times = [
+            [$self_config[1]['amStartTime'],$self_config[1]['amEndTime']],
+            [$self_config[2]['pmStartTime'],$self_config[2]['pmEndTime']],
+            [$self_config[3]['nightStartTime'],$self_config[3]['nightEndTime']],
+        ];
 
 //        $schdule_data = [
 //            ['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],
 //        ];
-
-        if($type != 1){
-            $docter_id = 0;
-        }
+        $time_t = [];
 //        echo '社区id  '.$org_id.' 医生id  '.$docter_id;
         DB::beginTransaction();
         try {
             foreach ($schedule['schedulelingList'] as $t=>$v){
 
+
                 $today = $schedule['day'];
-                $week =$schedule['week'];
+                $week = intval($schedule['week']);
 
                 if($v['status'] == true){
                     $num_date = intval(date('Ymd',strtotime($today)));
@@ -1091,10 +1105,8 @@ class ApiController extends Controller
                     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();
-
+                    $timeperiods = TimePeriod::where(['docter_id'=>intval($docter_id),'org_id'=>intval($org_id),'type'=>$sType])->whereBetween('end_time_period',$times[$t])->pluck('id')->toArray();
                     if(empty($timeperiods)){
                         return apiReturn(603,'没有时间段');
 //                        self::setTimeperiod($type,$docter_id,$org_id);
@@ -1109,7 +1121,7 @@ class ApiController extends Controller
                             'week'=>$week,
                             'type'=>$v['type'],
                             'schedule_date'=>$today,
-                            'schedule_type'=>$type,
+                            'schedule_type'=>$sType,
                             'docter_id'=>$docter_id,
                         ];
 
@@ -1118,9 +1130,10 @@ class ApiController extends Controller
                         $self_count = SelfSchedule::where($data)->count();
                         if(!$self_count) SelfSchedule::insert($data);
 
+                        unset($data['week']);
                         $data['schedule_id']=$s_id;
                         $is_schedule_period = SchedulePeriod::where($data)->count();
-                        if(!$is_schedule_period) SelfSchedule::insert($data);
+                        if(!$is_schedule_period) SchedulePeriod::insert($data);
 
                     }
 
@@ -1130,7 +1143,7 @@ class ApiController extends Controller
                         'week'=>$week,
                         'type'=>$v['type'],
                         'docter_id'=>$docter_id,
-                        'schedule_type'=>$type,
+                        'schedule_type'=>$sType,
                         'schedule_date'=>$today
                     ];
 //                    dump($data);