| xqd
@@ -551,20 +551,18 @@ class ApiController extends Controller
|
|
|
$start_date = date('Y-m-d',$start_time);
|
|
|
$end_date = date('Y-m-d',$end_time);
|
|
|
$types = [1=>1,2=>2,3=>3];
|
|
|
+ $settingConfig = self::getSetting($type,$docter_id,$org_id);
|
|
|
|
|
|
|
|
|
if($type == 1){
|
|
|
$schedule_data = Schedule::where(['docter_id'=>$docter_id,'organization_id'=>0])
|
|
|
->whereBetween('schedule_date',[$start_date,$end_date])->pluck('schedule_date','id')->toArray();
|
|
|
- $settingConfig = DocterSetting::where(['docter_id'=>$docter_id])->first();
|
|
|
$serviceConfig = object_array(json_decode($settingConfig['service_time']));
|
|
|
} else {
|
|
|
$schedule_data = Schedule::where(['docter_id'=>0,'organization_id'=>$org_id])->
|
|
|
whereBetween('schedule_date',[$start_date,$end_date])->pluck('schedule_date','id')->toArray();
|
|
|
- $settingConfig = OrganizationSettings::where(['org_id'=>$org_id])->first();
|
|
|
$serviceConfig = object_array(json_decode($settingConfig['service_time']));
|
|
|
}
|
|
|
-
|
|
|
if(!empty($settingConfig)){
|
|
|
$baseData = [
|
|
|
['status'=>false,'type'=>1,'start'=>$serviceConfig[1]['amStartTime'],'end'=>$serviceConfig[1]['amEndTime']],
|
| xqd
@@ -592,7 +590,7 @@ class ApiController extends Controller
|
|
|
if(empty($schedule_data)){
|
|
|
$scheduleList[] = [
|
|
|
'schedulelingList'=>$baseData,
|
|
|
- 'date'=>$scheduleDate,
|
|
|
+ 'date'=>$i,
|
|
|
'week'=>$week,
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
| xqd
@@ -609,7 +607,7 @@ class ApiController extends Controller
|
|
|
if(empty($today)){
|
|
|
$scheduleList[] = [
|
|
|
'schedulelingList'=>$baseData,
|
|
|
- 'date'=>$scheduleDate,
|
|
|
+ 'date'=>$i,
|
|
|
'week'=>$week,
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
| xqd
@@ -627,7 +625,7 @@ class ApiController extends Controller
|
|
|
}
|
|
|
$scheduleList[] = [
|
|
|
'schedulelingList'=>$baseData,
|
|
|
- 'date'=>$scheduleDate,
|
|
|
+ 'date'=>$i,
|
|
|
'week'=>$week,
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
| xqd
@@ -639,7 +637,7 @@ class ApiController extends Controller
|
|
|
if(empty($today)){
|
|
|
$scheduleList[] = [
|
|
|
'schedulelingList'=>$baseData,
|
|
|
- 'date'=>$scheduleDate,
|
|
|
+ 'date'=>$i,
|
|
|
'week'=>$week,
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
| xqd
@@ -652,7 +650,7 @@ class ApiController extends Controller
|
|
|
}
|
|
|
$scheduleList[] = [
|
|
|
'schedulelingList'=>$baseData,
|
|
|
- 'date'=>$scheduleDate,
|
|
|
+ 'date'=>$i,
|
|
|
'week'=>$week,
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
| xqd
@@ -1162,11 +1160,10 @@ class ApiController extends Controller
|
|
|
//todo 上线取消默认值
|
|
|
$schdule_data = request('schedule_data');
|
|
|
$docter_id = intval(request('docter_id'));
|
|
|
- $schedule_type = request('type');
|
|
|
+ $type = intval(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,'缺少必要参数');
|
| xqd
@@ -1174,9 +1171,12 @@ class ApiController extends Controller
|
|
|
//获取医生排班配置
|
|
|
$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();
|
|
|
+ $setting = self::getSetting($type,$docter_id,$org_id);
|
|
|
+ if(empty($setting)){
|
|
|
+ self::setDefultSetting($type,$docter_id,$org_id);
|
|
|
+ $setting = self::getSetting($type,$docter_id,$org_id);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
$schdule_data = [
|
|
|
['status'=>true,'type'=>1,'start'=>"09:00",'end'=>'11:30','date'=>15,'week'=>1],
|
| xqd
@@ -1208,7 +1208,9 @@ class ApiController extends Controller
|
|
|
}
|
|
|
|
|
|
if(empty($timeperiods)){
|
|
|
+ return apiReturn(603,'没有时间段');
|
|
|
self::setTimeperiod($type,$docter_id,$org_id);
|
|
|
+ $timeperiods = self::getTypeTimeperiod($type,$docter_id,$org_id,intval($v['type']));
|
|
|
}
|
|
|
foreach ($timeperiods as $id){
|
|
|
$data = [
|
| xqd
@@ -1263,16 +1265,32 @@ class ApiController extends Controller
|
|
|
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);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ $serviceTime = $setting['service_times'];
|
|
|
$serviceConfig = object_array(json_decode($setting->service_time));
|
|
|
+ $fieldArr = [1=>'am',2=>'pm',3=>'night'];
|
|
|
+ foreach ($serviceConfig as $t =>$service){
|
|
|
+ $p = $fieldArr[$t];
|
|
|
+ for($i=1;$i<=$service[$p.'Person'];$i++){
|
|
|
+ $start_time = strtotime($service[$p.'StartTime']);
|
|
|
+ if($type == 1){
|
|
|
+ $timePreiod['org_id'] = $orgId;
|
|
|
+ $timePreiod['docter_id'] = $docterId;
|
|
|
+ } else {
|
|
|
+ $timePreiod['docter_id'] = 0;
|
|
|
+ $timePreiod['org_id'] = $orgId;
|
|
|
+ }
|
|
|
+ $timePreiod = [
|
|
|
+ 'type'=>$t,
|
|
|
+ 'start_time_period'=> date('H:i',$start_time+ ($i-1)*$serviceTime*60),
|
|
|
+ 'end_time_period'=> date('H:i',$start_time + $i*$serviceTime*60),
|
|
|
+ ];
|
|
|
+ $isHave = TimePeriod::where($timePreiod)->count();
|
|
|
+ if($isHave) continue;
|
|
|
+ TimePeriod::insert($timePreiod);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
|
|
|
- dd($type);
|
|
|
- dd($serviceConfig);
|
|
|
}
|
|
|
|
|
|
public static function setDefultSetting($type,$docterId,$orgId)
|
| xqd
@@ -1294,7 +1312,11 @@ class ApiController extends Controller
|
|
|
'timeSpan'=>30,
|
|
|
];
|
|
|
|
|
|
-
|
|
|
+ $config = [
|
|
|
+ 1=>['amStartTime'=>$configData['amStartTime'],"amEndTime"=>$configData['amEndTime'],'amPerson'=>$configData['amNum']],
|
|
|
+ 2=>["pmStartTime"=>$configData['pmStartTime'],"pmEndTime"=>$configData['pmEndTime'],'pmPerson'=>$configData['pmNum']],
|
|
|
+ 3=>["nightStartTime"=>$configData['nightStartTime'],"nightEndTime"=>$configData['nightEndTime'],'nightPerson'=>$configData['nightNum']]
|
|
|
+ ];
|
|
|
|
|
|
$setting = [
|
|
|
'type'=>$type,
|
| xqd
@@ -1303,16 +1325,15 @@ class ApiController extends Controller
|
|
|
'show_days'=>$configData['showDayNumber'],
|
|
|
'service_num'=>$configData['serviceNum'],
|
|
|
'service_times'=>$configData['timeSpan'],
|
|
|
- 'service_time'=>json_encode($configData)
|
|
|
+ 'service_time'=>json_encode($config)
|
|
|
];
|
|
|
|
|
|
-
|
|
|
- if(type == 1){
|
|
|
+ if($type == 1){
|
|
|
$is_have = DocterSetting::where(['docter_id'=>$docterId,'org_id'=>$orgId])->count();
|
|
|
if(!$is_have){
|
|
|
+ $setting['docter_id'] = $docterId;
|
|
|
DocterSetting::insert($setting);
|
|
|
} else {
|
|
|
- $setting['docter_id'] = $docterId;
|
|
|
DocterSetting::where(['docter_id'=>$docterId,'org_id'=>$orgId])->update($setting);
|
|
|
}
|
|
|
return true;
|
| xqd
@@ -1332,7 +1353,24 @@ class ApiController extends Controller
|
|
|
//默认为门诊排班医生配置
|
|
|
$setting = DocterSetting::where(['docter_id'=>$docterId,'org_id'=>$orgId])->first();
|
|
|
//获取社区排班设置
|
|
|
- if($type == 1) $setting = OrganizationSettings::where(['org_id'=>$orgId])->first();
|
|
|
+ if($type == 2) $setting = OrganizationSettings::where(['org_id'=>$orgId])->first();
|
|
|
+ if(empty($setting)){
|
|
|
+ self::setDefultSetting($type,$docterId,$orgId);
|
|
|
+ self::getSetting($type,$docterId,$orgId);
|
|
|
+ }
|
|
|
return $setting;
|
|
|
}
|
|
|
+ public static function getTypeTimeperiod($type,$docterId,$orgId,$scType){
|
|
|
+ //获取时间段
|
|
|
+ $timeperiods = TimePeriod::where(['docter_id'=>$docterId,'org_id'=>$orgId,'type'=>$scType])->pluck('id')->toArray();
|
|
|
+ if($type == 2){
|
|
|
+ $timeperiods = TimePeriod::where(['docter_id'=>0,'org_id'=>$orgId,'type'=>$scType])->pluck('id')->toArray();
|
|
|
+ }
|
|
|
+ if(empty($timeperiods)){
|
|
|
+ self::setTimeperiod($type,$docterId,$orgId);
|
|
|
+ self::getTypeTimeperiod($type,$docterId,$orgId,$scType);
|
|
|
+ }
|
|
|
+ return $timeperiods;
|
|
|
+ }
|
|
|
+
|
|
|
}
|