| xqd
@@ -338,7 +338,6 @@ class ApiController extends Controller
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
$time = [];
|
|
|
if(!empty($docter_setting)){
|
|
|
$time_period = object_array(json_decode($docter_setting->service_time));
|
| xqd
@@ -601,6 +600,11 @@ class ApiController extends Controller
|
|
|
if($type == 1){
|
|
|
$today = SchedulePeriod::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate])->where('organization_id','!=',0)->distinct('organization_id')
|
|
|
->distinct('type')->get(['organization_id','type'])->GroupBy('type')->toArray();
|
|
|
+ $self = SelfSchedule::where(['schedule_date'=>$scheduleDate,'docter_id'=>$docter_id,])->where('organization_id','!=',0)->pluck('type','organization_id')->toArray();
|
|
|
+// //检查排班详情
|
|
|
+// self::checkDaySchedule($date,$type,$docter_id,$org_id);
|
|
|
+// //检查自己排班
|
|
|
+// self::checkSelfDaySchedule($date,$type,$docter_id,$org_id);
|
|
|
|
|
|
if(empty($today)){
|
|
|
$scheduleList[] = [
|
| xqd
@@ -615,6 +619,11 @@ class ApiController extends Controller
|
|
|
$idSum = array_sum($orgids);
|
|
|
if($org_id == $idSum) $baseData[$type]['status'] = true;
|
|
|
if($org_id != $idSum) $baseData[$type]['status'] = 'other';
|
|
|
+ if(in_array($type,$self))
|
|
|
+ foreach($self as $key=>$org){
|
|
|
+ $baseData[$type]['status'] = true;
|
|
|
+ if($org != $org_id) $baseData[$type]['status'] = 'other';
|
|
|
+ }
|
|
|
}
|
|
|
$scheduleList[] = [
|
|
|
'schedulelingList'=>$baseData,
|
| xqd
@@ -623,8 +632,31 @@ class ApiController extends Controller
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
|
|
}
|
|
|
+ } else {
|
|
|
+ $today = SchedulePeriod::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate])->where('organization_id','!=',0)->distinct('organization_id')
|
|
|
+ ->distinct('type')->get(['organization_id','type'])->GroupBy('type')->toArray();
|
|
|
|
|
|
-
|
|
|
+ if(empty($today)){
|
|
|
+ $scheduleList[] = [
|
|
|
+ 'schedulelingList'=>$baseData,
|
|
|
+ 'date'=>$scheduleDate,
|
|
|
+ 'week'=>$week,
|
|
|
+ 'day'=>$scheduleDate
|
|
|
+ ];
|
|
|
+ } else {
|
|
|
+ foreach ($today as $type => $orginfo){
|
|
|
+ $orgids = array_column($orginfo,'organization_id');
|
|
|
+ $idSum = array_sum($orgids);
|
|
|
+ if($org_id == $idSum) $baseData[$type]['status'] = true;
|
|
|
+ if($org_id != $idSum) $baseData[$type]['status'] = 'other';
|
|
|
+ }
|
|
|
+ $scheduleList[] = [
|
|
|
+ 'schedulelingList'=>$baseData,
|
|
|
+ 'date'=>$scheduleDate,
|
|
|
+ 'week'=>$week,
|
|
|
+ 'day'=>$scheduleDate
|
|
|
+ ];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
//// if(empty( $schedule_data[$scheduleDate])) continue;
|
| xqd
@@ -759,9 +791,6 @@ class ApiController extends Controller
|
|
|
$setting = OrganizationSettings::where(['org_id'=>$org_id])->first();
|
|
|
}
|
|
|
|
|
|
- if(empty($setting)){
|
|
|
-
|
|
|
- }
|
|
|
$self_config = object_array(json_decode($setting['service_time']));
|
|
|
//改变时间段
|
|
|
$changeTimer = [];
|
| xqd
@@ -794,7 +823,6 @@ class ApiController extends Controller
|
|
|
}
|
|
|
|
|
|
//添加时间段
|
|
|
-
|
|
|
$countArr = [
|
|
|
1=>$configData['amNum'],
|
|
|
2=>$configData['pmNum'],
|
| xqd
@@ -806,7 +834,6 @@ class ApiController 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']]
|
|
|
];
|
|
|
- $changeTimer = [1,2,3];
|
|
|
//todo 零时关闭排班功能,后续需要解除
|
|
|
if($changeSeviceTime || !empty($changeTimer)){
|
|
|
|
| xqd
@@ -894,10 +921,12 @@ class ApiController extends Controller
|
|
|
} else {
|
|
|
unset($setting['docter_id']);
|
|
|
$setting['org_id'] = $org_id;
|
|
|
- $is_have = OrganizationSettings::where(['id'=>$docter_id])->value('id');
|
|
|
+ $is_have = OrganizationSettings::where(['org_id'=>$org_id])->value('id');
|
|
|
if($is_have){
|
|
|
+ echo '11111';
|
|
|
OrganizationSettings::where(['org_id'=>$org_id])->update($setting);
|
|
|
} else {
|
|
|
+ echo 222;
|
|
|
OrganizationSettings::insert($setting);
|
|
|
}
|
|
|
}
|
| xqd
@@ -910,6 +939,7 @@ class ApiController extends Controller
|
|
|
$id = intval(request('id'));
|
|
|
$isDocter = CdmsUsers::where('docter_id',$id)->first();
|
|
|
$isOrg = CdmsUsers::where('org_id',$id)->first();
|
|
|
+
|
|
|
$org_id = null;
|
|
|
$role = 1;
|
|
|
|
| xqd
@@ -961,7 +991,7 @@ class ApiController extends Controller
|
|
|
if($docter->type == 1){
|
|
|
$data['list'] = $lists;
|
|
|
} else {
|
|
|
- $organization = Organization::where(['org_id'=>$org_id])->get(['id','name']);
|
|
|
+ $organization = Organization::where(['id'=>$org_id])->first();
|
|
|
$data['list'] = ['value'=>$organization->id,'label'=>$organization->name];
|
|
|
}
|
|
|
}
|
| xqd
@@ -1101,9 +1131,8 @@ class ApiController extends Controller
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//自己排班
|
|
|
- public function makeSelfScheeule($docterId,$orgId,$type,$timesPeriods,$selfSchedule){
|
|
|
+ public static function makeSelfScheeule($docterId,$orgId,$type,$timesPeriods,$selfSchedule){
|
|
|
if($type == 1){
|
|
|
$orgId = 0;
|
|
|
SelfSchedule::where(['type'=>1,'docter_id'=>$docterId,'organization_id'=>0,'schedule_type'=>$type])->whereIn('time_period_id',$timesPeriods)->delete();
|
| xqd
@@ -1125,4 +1154,185 @@ class ApiController extends Controller
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ public function setDaySchedule()
|
|
|
+ {
|
|
|
+
|
|
|
+ //todo 上线取消默认值
|
|
|
+ $schdule_data = request('schedule_data');
|
|
|
+ $docter_id = intval(request('docter_id'));
|
|
|
+ $schedule_type = request('type');
|
|
|
+ $org_id = intval(request('org_id'));
|
|
|
+ $date = request('date');
|
|
|
+ //判断排班类型
|
|
|
+ $schedule_type == 1?$type=2:$type=1;
|
|
|
+
|
|
|
+ if(empty($schdule_data) || empty($docter_id) || !isset($org_id) || empty($type)){
|
|
|
+ return apiReturn(601,'缺少必要参数');
|
|
|
+ }
|
|
|
+ //获取医生排班配置
|
|
|
+ $schedule = object_array(json_decode($schdule_data));
|
|
|
+ //默认为门诊排班医生配置
|
|
|
+ $setting = DocterSetting::where(['docter_id'=>$docter_id])->first();
|
|
|
+ //获取社区排班设置
|
|
|
+ if($type == 1) $setting = OrganizationSettings::where(['org_id'=>$org_id])->first();
|
|
|
+
|
|
|
+ $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],
|
|
|
+ ];
|
|
|
+
|
|
|
+ DB::beginTransaction();
|
|
|
+ try {
|
|
|
+ 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){
|
|
|
+ $sche_data = ['organization_id'=>$org_id,'schedule_date'=>$today,'schedule_day'=>$num_date];
|
|
|
+
|
|
|
+ //判断是否有排班信息
|
|
|
+ $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();
|
|
|
+ }
|
|
|
+
|
|
|
+ if(empty($timeperiods)){
|
|
|
+ self::setTimeperiod($type,$docter_id,$org_id);
|
|
|
+ }
|
|
|
+ foreach ($timeperiods as $id){
|
|
|
+ $data = [
|
|
|
+ 'organization_id'=>$org_id,
|
|
|
+ 'time_period_id'=>$id,
|
|
|
+ 'week'=>$week,
|
|
|
+ 'type'=>$v['type'],
|
|
|
+ 'schedule_date'=>$today,
|
|
|
+ 'docter_id'=>$docter_id,
|
|
|
+ ];
|
|
|
+
|
|
|
+ //检查是否已经有数据
|
|
|
+ $self_count = SelfSchedule::where($data)->value('id');
|
|
|
+ if($self_count) continue;
|
|
|
+ SelfSchedule::insert($data);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if($v['status'] == false){
|
|
|
+ $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->getMessage());
|
|
|
+ DB::rollBack();
|
|
|
+ return apiReturn(603,'操作失败');
|
|
|
+ }
|
|
|
+ return apiReturn(200,'操作成功');
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function setTimeperiod($type,$docterId,$orgId)
|
|
|
+ {
|
|
|
+ $setting = self::getSetting($type,$docterId,$orgId);
|
|
|
+ if(empty($setting)) {
|
|
|
+ self::setDefultSetting($type,$docterId,$orgId);
|
|
|
+ $setting = self::getSetting($type,$docterId,$orgId);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $serviceConfig = object_array(json_decode($setting->service_time));
|
|
|
+
|
|
|
+ dd($type);
|
|
|
+ dd($serviceConfig);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function setDefultSetting($type,$docterId,$orgId)
|
|
|
+ {
|
|
|
+
|
|
|
+ $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,
|
|
|
+ ];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $setting = [
|
|
|
+ 'type'=>$type,
|
|
|
+ 'org_id'=>$orgId,
|
|
|
+ 'status'=>$configData['status'],
|
|
|
+ 'show_days'=>$configData['showDayNumber'],
|
|
|
+ 'service_num'=>$configData['serviceNum'],
|
|
|
+ 'service_times'=>$configData['timeSpan'],
|
|
|
+ 'service_time'=>json_encode($configData)
|
|
|
+ ];
|
|
|
+
|
|
|
+
|
|
|
+ if(type == 1){
|
|
|
+ $is_have = DocterSetting::where(['docter_id'=>$docterId,'org_id'=>$orgId])->count();
|
|
|
+ if(!$is_have){
|
|
|
+ DocterSetting::insert($setting);
|
|
|
+ } else {
|
|
|
+ $setting['docter_id'] = $docterId;
|
|
|
+ DocterSetting::where(['docter_id'=>$docterId,'org_id'=>$orgId])->update($setting);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ $is_have = OrganizationSettings::where(['org_id'=>$orgId])->count();
|
|
|
+ if(!$is_have){
|
|
|
+ OrganizationSettings::insert($setting);
|
|
|
+ } else {
|
|
|
+ $setting['docter_id'] = $docterId;
|
|
|
+ OrganizationSettings::where(['org_id'=>$orgId])->update($setting);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function getSetting($type,$docterId,$orgId){
|
|
|
+ //默认为门诊排班医生配置
|
|
|
+ $setting = DocterSetting::where(['docter_id'=>$docterId,'org_id'=>$orgId])->first();
|
|
|
+ //获取社区排班设置
|
|
|
+ if($type == 1) $setting = OrganizationSettings::where(['org_id'=>$orgId])->first();
|
|
|
+ return $setting;
|
|
|
+ }
|
|
|
}
|