|
@@ -544,8 +544,9 @@ class ScheDuleController extends Controller
|
|
//设置自己排班
|
|
//设置自己排班
|
|
public function setSelfSchedule()
|
|
public function setSelfSchedule()
|
|
{
|
|
{
|
|
- $docter_id = request('docter_id');
|
|
|
|
- $org_id = request('org_id');
|
|
|
|
|
|
+ //todo 记得把默认值取消
|
|
|
|
+ $docter_id = request('docter_id',0);
|
|
|
|
+ $org_id = request('org_id',0);
|
|
$date = request('date');
|
|
$date = request('date');
|
|
$type = request('type','1,2'); //1 上午,2 下午,3 晚上
|
|
$type = request('type','1,2'); //1 上午,2 下午,3 晚上
|
|
$schedule_type = request('schedule_type',1);
|
|
$schedule_type = request('schedule_type',1);
|
|
@@ -617,22 +618,22 @@ class ScheDuleController extends Controller
|
|
return apiReturn(604,'参数错误');
|
|
return apiReturn(604,'参数错误');
|
|
}
|
|
}
|
|
|
|
|
|
-// $configData = object_array(json_decode($configData));
|
|
|
|
- $configData = [
|
|
|
|
- 'amEndTime'=>"11:30",
|
|
|
|
- 'amNum'=>5,
|
|
|
|
- 'amStartTime'=>"09:00",
|
|
|
|
- 'nightEndTime'=>"20:30",
|
|
|
|
- 'nightStartTime'=>"19:00",
|
|
|
|
- 'nightNum'=>3,
|
|
|
|
- 'pmEndTime'=>"16:00",
|
|
|
|
- 'pmNum'=>5,
|
|
|
|
- 'pmStartTime'=>"13:30",
|
|
|
|
- 'showDayNumber'=>7,
|
|
|
|
- 'serviceNum'=>2,
|
|
|
|
- 'status'=>false,
|
|
|
|
- 'timeSpan'=>30,
|
|
|
|
- ];
|
|
|
|
|
|
+ $configData = object_array(json_decode($configData));
|
|
|
|
+// $configData = [
|
|
|
|
+// 'amEndTime'=>"11:30",
|
|
|
|
+// 'amNum'=>5,
|
|
|
|
+// 'amStartTime'=>"09:00",
|
|
|
|
+// 'nightEndTime'=>"20:30",
|
|
|
|
+// 'nightStartTime'=>"19:00",
|
|
|
|
+// 'nightNum'=>3,
|
|
|
|
+// 'pmEndTime'=>"16:00",
|
|
|
|
+// 'pmNum'=>5,
|
|
|
|
+// 'pmStartTime'=>"13:30",
|
|
|
|
+// 'showDayNumber'=>7,
|
|
|
|
+// 'serviceNum'=>2,
|
|
|
|
+// 'status'=>false,
|
|
|
|
+// 'timeSpan'=>30,
|
|
|
|
+// ];
|
|
|
|
|
|
// configData: {
|
|
// configData: {
|
|
// amEndTime: "11:30", //上午结束时间 string
|
|
// amEndTime: "11:30", //上午结束时间 string
|
|
@@ -694,16 +695,19 @@ class ScheDuleController extends Controller
|
|
// timeSpan: "15", // 就诊时长 string
|
|
// timeSpan: "15", // 就诊时长 string
|
|
// },
|
|
// },
|
|
//添加时间段
|
|
//添加时间段
|
|
- $is_new = [2,3];
|
|
|
|
|
|
+ $is_new = [1,2,3];
|
|
|
|
+
|
|
$amCount = $configData['amNum'];
|
|
$amCount = $configData['amNum'];
|
|
$pmCount = $configData['pmNum'];
|
|
$pmCount = $configData['pmNum'];
|
|
$evCount = $configData['nightNum'];
|
|
$evCount = $configData['nightNum'];
|
|
|
|
+
|
|
$c_r = [
|
|
$c_r = [
|
|
- ['count'=>$configData['amNum'],'start_time'=>$configData['amStartTime'],'end_time'=>$configData['amEndTime']],
|
|
|
|
- ['count'=>$configData['pmNum'],'start_time'=>$configData['pmStartTime'],'end_time'=>$configData['pmEndTime']],
|
|
|
|
- ['count'=>$configData['nightNum'],'start_time'=>$configData['nightStartTime'],'end_time'=>$configData['nightEndTime']]
|
|
|
|
|
|
+ 1=>['count'=>$configData['amNum'],'start_time'=>$configData['amStartTime'],'end_time'=>$configData['amEndTime']],
|
|
|
|
+ 2=>['count'=>$configData['pmNum'],'start_time'=>$configData['pmStartTime'],'end_time'=>$configData['pmEndTime']],
|
|
|
|
+ 3=>['count'=>$configData['nightNum'],'start_time'=>$configData['nightStartTime'],'end_time'=>$configData['nightEndTime']]
|
|
];
|
|
];
|
|
- if($is_change){
|
|
|
|
|
|
+ //todo 零时关闭排班功能,后续需要解除
|
|
|
|
+ if($is_change && 1!=1){
|
|
|
|
|
|
if(in_array(1,$is_new)) {
|
|
if(in_array(1,$is_new)) {
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
@@ -896,19 +900,22 @@ class ScheDuleController extends Controller
|
|
}
|
|
}
|
|
|
|
|
|
} else {
|
|
} else {
|
|
|
|
+ if(1!=1){
|
|
foreach ($is_new as $c){
|
|
foreach ($is_new as $c){
|
|
- for($i=1;$i<=$c_r[$c];$i++){
|
|
|
|
|
|
+ for($i=1;$i<=$c_r[$c]['count'];$i++){
|
|
$evdata = [
|
|
$evdata = [
|
|
|
|
+ 'org_id'=>$org_id,
|
|
'docter_id'=>$docter_id,
|
|
'docter_id'=>$docter_id,
|
|
- 'start_time_period'=> date('H:i',strtotime($configData['nightStartTime']) + ($i-1)*$configData['timeSpan']*60),
|
|
|
|
- 'end_time_period'=> date('H:i',strtotime($configData['nightStartTime']) + $i*$configData['timeSpan']*60),
|
|
|
|
|
|
+ '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);
|
|
|
|
|
|
+ $is_have = TimePeriod::where($evdata)->count();
|
|
if($is_have) continue;
|
|
if($is_have) continue;
|
|
TimePeriod::insert($evdata);
|
|
TimePeriod::insert($evdata);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
// {"1":{"amStartTime":"08:00","amEndTime":"12:00","amPerson":3},"2":{"pmStartTime":"14:00","pmEndTime":"18:00","pmPerson":5},"3":{"nightStartTime":"18:00","nightEndTime":"23:00","nightPerson":4}}
|
|
// {"1":{"amStartTime":"08:00","amEndTime":"12:00","amPerson":3},"2":{"pmStartTime":"14:00","pmEndTime":"18:00","pmPerson":5},"3":{"nightStartTime":"18:00","nightEndTime":"23:00","nightPerson":4}}
|
|
$config = [
|
|
$config = [
|
|
@@ -1059,45 +1066,114 @@ class ScheDuleController extends Controller
|
|
$now_date = date('Y-m-d',$now_time);
|
|
$now_date = date('Y-m-d',$now_time);
|
|
$week = date('N',$now_time);
|
|
$week = date('N',$now_time);
|
|
$arr = [
|
|
$arr = [
|
|
- ['status'=>false,'type'=>1],
|
|
|
|
- ['status'=>true,'type'=>2],
|
|
|
|
- ['status'=>false,'type'=>3],
|
|
|
|
|
|
+ ['status'=>false,'type'=>1,'start'=>"09:00",'end'=>'11:30'],
|
|
|
|
+ ['status'=>true,'type'=>2,'start'=>'13:30','end'=>'16:30'],
|
|
|
|
+ ['status'=>false,'type'=>3,'start'=>'19:30','end'=>'21:00'],
|
|
];
|
|
];
|
|
if($i%2 == 0){
|
|
if($i%2 == 0){
|
|
$arr = [
|
|
$arr = [
|
|
- ['status'=>false,'type'=>1],
|
|
|
|
- ['status'=>true,'type'=>2],
|
|
|
|
- ['status'=>true,'type'=>3],
|
|
|
|
|
|
+ ['status'=>false,'type'=>1,'start'=>"09:00",'end'=>'11:30'],
|
|
|
|
+ ['status'=>true,'type'=>2,'start'=>'13:30','end'=>'16:30'],
|
|
|
|
+ ['status'=>false,'type'=>3,'start'=>'19:30','end'=>'21:00'],
|
|
];
|
|
];
|
|
}
|
|
}
|
|
|
|
|
|
if($i%3 == 0){
|
|
if($i%3 == 0){
|
|
$arr = [
|
|
$arr = [
|
|
- ['status'=>true,'type'=>1],
|
|
|
|
- ['status'=>'other','type'=>2],
|
|
|
|
- ['status'=>false,'type'=>3],
|
|
|
|
|
|
+ ['status'=>true,'type'=>1,'start'=>"09:00",'end'=>'11:30'],
|
|
|
|
+ ['status'=>'other','type'=>2,'start'=>'13:30','end'=>'16:30'],
|
|
|
|
+ ['status'=>true,'type'=>3,'start'=>'19:30','end'=>'21:00'],
|
|
];
|
|
];
|
|
}
|
|
}
|
|
|
|
|
|
- if($i%3 == 0){
|
|
|
|
|
|
+ if($i%4 == 0){
|
|
|
|
+ $arr = [
|
|
|
|
+ ['status'=>'other','type'=>1,'start'=>"09:00",'end'=>'11:30'],
|
|
|
|
+ ['status'=>false,'type'=>2,'start'=>'13:30','end'=>'16:30'],
|
|
|
|
+ ['status'=>false,'type'=>3,'start'=>'19:30','end'=>'21:00'],
|
|
|
|
+ ];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if($i == 14){
|
|
$arr = [
|
|
$arr = [
|
|
- ['status'=>'other','type'=>1],
|
|
|
|
- ['status'=>true,'type'=>2],
|
|
|
|
- ['status'=>false,'type'=>3],
|
|
|
|
|
|
+ ['status'=>false,'type'=>1,'start'=>"09:00",'end'=>'11:30'],
|
|
|
|
+ ['status'=>false,'type'=>2,'start'=>'13:30','end'=>'16:30'],
|
|
|
|
+ ['status'=>false,'type'=>3,'start'=>'19:30','end'=>'21:00'],
|
|
];
|
|
];
|
|
}
|
|
}
|
|
|
|
+
|
|
$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);
|
|
return apiReturn(200,'ok',$all_time);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function set_day_schedule()
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ //todo 上线取消默认值
|
|
|
|
+ $schdule_data = request('schedule_data',1);
|
|
|
|
+ $docter_id = intval(request('docter_id',1));
|
|
|
|
+ $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)){
|
|
|
|
+ return apiReturn(601,'缺少必要参数');
|
|
|
|
+ }
|
|
|
|
+ $schedule = object_array(json_decode($schdule_data));
|
|
|
|
+ $setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
|
|
|
|
+
|
|
|
|
+ $schdule_data = [
|
|
|
|
+ ['status'=>false,'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],
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ DB::beginTransaction();
|
|
|
|
+ try {
|
|
|
|
+ foreach ($schdule_data as $t=>$v){
|
|
|
|
+
|
|
|
|
+ $today = date('Y-m-d',(strtotime($date) + (intval($v['date'])-1) *86400) );
|
|
|
|
+ $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();
|
|
|
|
+ foreach ($timeperiods as $id){
|
|
|
|
+ $data = [
|
|
|
|
+ 'schedule_id'=>$sid,
|
|
|
|
+ 'organization_id'=>$org_id,
|
|
|
|
+ 'time_period_id'=>$id,
|
|
|
|
+ 'type'=>$v['type'],
|
|
|
|
+ 'docter_id'=>$docter_id,
|
|
|
|
+ ];
|
|
|
|
+ TimePeriod::insert($data);
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ } else if($v['status'] == false){
|
|
|
|
+ $s_id = Schedule::where(['schedule_id'=>$today,'docter_id'=>$org_id,])->value('id');
|
|
|
|
+ dd($s_id);
|
|
|
|
+ Schedule::where(['id'=>$s_id])->delete();
|
|
|
|
+ TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$t,'schedule_id'=>$s_id])->delete();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (\Exception $e){
|
|
|
|
+ dd($e->getLine().'行 '.$e->getMessage());
|
|
|
|
+ DB::rollBack();
|
|
|
|
+ return apiReturn(603,'操作失败');
|
|
|
|
+ }
|
|
|
|
+ return apiReturn(200,'ok');
|
|
|
|
+ }
|
|
//获取周排班模板
|
|
//获取周排班模板
|
|
public function getWeekSchedule()
|
|
public function getWeekSchedule()
|
|
{
|
|
{
|
|
$docter_id = request('docter_id',1);
|
|
$docter_id = request('docter_id',1);
|
|
$org_id = request('org_id',1);
|
|
$org_id = request('org_id',1);
|
|
- $type = request('type',2);
|
|
|
|
|
|
+ $type = request('type',1);
|
|
$role = request('role',2);
|
|
$role = request('role',2);
|
|
if(empty($docter_id) || empty($type)){
|
|
if(empty($docter_id) || empty($type)){
|
|
return apiReturn(604,'缺少必要参数');
|
|
return apiReturn(604,'缺少必要参数');
|
|
@@ -1107,7 +1183,7 @@ class ScheDuleController extends Controller
|
|
$docter_setting = DocterSetting::where(['docter_id'=>$docter_id,'type'=>$type])->first();
|
|
$docter_setting = DocterSetting::where(['docter_id'=>$docter_id,'type'=>$type])->first();
|
|
|
|
|
|
//周字段映射
|
|
//周字段映射
|
|
- $week_arr = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'];
|
|
|
|
|
|
+ $week_arr = [1=>'monday',2=>'tuesday',3=>'wednesday',4=>'thursday',5=>'friday',6=>'saturday',7=>'sunday'];
|
|
$data = [
|
|
$data = [
|
|
[
|
|
[
|
|
'date'=>"上午",
|
|
'date'=>"上午",
|
|
@@ -1141,10 +1217,11 @@ class ScheDuleController extends Controller
|
|
]
|
|
]
|
|
];
|
|
];
|
|
if($role == 2){
|
|
if($role == 2){
|
|
- for ($i=0;$i<6;$i++){
|
|
|
|
|
|
+ for ($i=0;$i<=7;$i++){
|
|
|
|
+ if($i == 0) continue;
|
|
for($j=0;$j<=2;$j++){
|
|
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();
|
|
|
|
|
|
+ $is_self_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'organization_id'=>$org_id,'week'=>$i,'type'=>$j+1])->count();
|
|
|
|
+ $is_other_have = WeekSchedule::where(['docter_id'=>$docter_id,'schedule_type'=>$type,'week'=>$i,'type'=>$j+1])->where('organization_id','!=',$org_id)->count();
|
|
if($is_self_have){
|
|
if($is_self_have){
|
|
$data[$j][$week_arr[$i]] = true;
|
|
$data[$j][$week_arr[$i]] = true;
|
|
}
|
|
}
|
|
@@ -1184,7 +1261,7 @@ class ScheDuleController extends Controller
|
|
{
|
|
{
|
|
$docter_id = request('docter_id',1);
|
|
$docter_id = request('docter_id',1);
|
|
$org_id = request('org_id',1);
|
|
$org_id = request('org_id',1);
|
|
- $type = request('type',1);
|
|
|
|
|
|
+ $type = request('type',1); //排班类型 1门诊 2 儿保 3计免
|
|
if(empty($docter_id) || empty($org_id) || empty($type)){
|
|
if(empty($docter_id) || empty($org_id) || empty($type)){
|
|
return apiReturn(601,'缺少必要参数');
|
|
return apiReturn(601,'缺少必要参数');
|
|
}
|
|
}
|
|
@@ -1223,12 +1300,11 @@ class ScheDuleController extends Controller
|
|
];
|
|
];
|
|
if(!empty($docter_setting)){
|
|
if(!empty($docter_setting)){
|
|
$time_period = object_array(json_decode($docter_setting->service_time));
|
|
$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();
|
|
|
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[1]['amStartTime']),intval($time_period[1]['amEndTime'])])->pluck('id')->toArray();
|
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[2]['pmStartTime']),intval($time_period[2]['pmEndTime'])])->pluck('id')->toArray();
|
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id])->whereBetween('end_time_period',[intval($time_period[3]['nightStartTime']),intval($time_period[3]['nightEndTime'])])->pluck('id')->toArray();
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
$week_data = [
|
|
$week_data = [
|
|
'schedule_type'=>$type,
|
|
'schedule_type'=>$type,
|
|
'organization_id'=>$org_id,
|
|
'organization_id'=>$org_id,
|
|
@@ -1273,6 +1349,7 @@ class ScheDuleController extends Controller
|
|
DB::commit();
|
|
DB::commit();
|
|
} catch (\Exception $e){
|
|
} catch (\Exception $e){
|
|
DB::rollBack();
|
|
DB::rollBack();
|
|
|
|
+ dd($e->getLine().'行'.$e->getMessage());
|
|
return apiReturn(602,$e->getLine().'行'.$e->getMessage());
|
|
return apiReturn(602,$e->getLine().'行'.$e->getMessage());
|
|
}
|
|
}
|
|
return apiReturn(200,'ok',$k);
|
|
return apiReturn(200,'ok',$k);
|