| 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;
|
| xqd
@@ -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
|
| xqd
@@ -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){
|
|
|
|
| xqd
@@ -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],
|
|
|
];
|
| xqd
@@ -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()
|