|
@@ -334,7 +334,7 @@ class ApiController extends Controller
|
|
$org_id = intval(request('org_id'));
|
|
$org_id = intval(request('org_id'));
|
|
$sType = intval(request('type')); //排班类型 1门诊 2 儿保 3计免
|
|
$sType = intval(request('type')); //排班类型 1门诊 2 儿保 3计免
|
|
$data = request('schedulingtime');
|
|
$data = request('schedulingtime');
|
|
- if($sType == 1){
|
|
|
|
|
|
+ if($sType != 1){
|
|
$docter_id = 0;
|
|
$docter_id = 0;
|
|
}
|
|
}
|
|
if(empty($org_id) || empty($sType) || empty($data)){
|
|
if(empty($org_id) || empty($sType) || empty($data)){
|
|
@@ -342,21 +342,18 @@ class ApiController extends Controller
|
|
}
|
|
}
|
|
|
|
|
|
$docter_setting = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->first();
|
|
$docter_setting = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->first();
|
|
- $serviceNum = 0;
|
|
|
|
|
|
+// $serviceNum = 0;
|
|
$times = [];
|
|
$times = [];
|
|
if(!empty($docter_setting)){
|
|
if(!empty($docter_setting)){
|
|
- $serviceNum = $docter_setting->service_num;
|
|
|
|
|
|
+// $serviceNum = $docter_setting->service_num;
|
|
$time_period = object_array(json_decode($docter_setting->service_time));
|
|
$time_period = object_array(json_decode($docter_setting->service_time));
|
|
$allCount = TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_id])->count();
|
|
$allCount = TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_id])->count();
|
|
- dump($allCount);
|
|
|
|
if($allCount == 0) return apiReturn(603,'请设置时间段');
|
|
if($allCount == 0) return apiReturn(603,'请设置时间段');
|
|
- echo '查看时间段';
|
|
|
|
- $times[] = TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_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,'org_id'=>$org_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,'org_id'=>$org_id])->whereBetween('end_time_period',[intval($time_period[3]['nightStartTime']),intval($time_period[3]['nightEndTime'])])->pluck('id')->toArray();
|
|
|
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->whereBetween('end_time_period',[intval($time_period[1]['amStartTime']),intval($time_period[1]['amEndTime'])])->pluck('id')->toArray();
|
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->whereBetween('end_time_period',[intval($time_period[2]['pmStartTime']),intval($time_period[2]['pmEndTime'])])->pluck('id')->toArray();
|
|
|
|
+ $times[] = TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->whereBetween('end_time_period',[intval($time_period[3]['nightStartTime']),intval($time_period[3]['nightEndTime'])])->pluck('id')->toArray();
|
|
}
|
|
}
|
|
if(count($times) < 3){
|
|
if(count($times) < 3){
|
|
- echo '时间段少于三个时间段';
|
|
|
|
return apiReturn('603','请配置时间段');
|
|
return apiReturn('603','请配置时间段');
|
|
}
|
|
}
|
|
|
|
|
|
@@ -416,59 +413,53 @@ class ApiController extends Controller
|
|
DB::rollBack();
|
|
DB::rollBack();
|
|
return apiReturn(602,$e->getLine().'行'.$e->getMessage());
|
|
return apiReturn(602,$e->getLine().'行'.$e->getMessage());
|
|
}
|
|
}
|
|
- self::setmonthScheduel($docter_id,$org_id,$sType,$serviceNum,$times);
|
|
|
|
|
|
+ self::setmonthScheduel($docter_id,$org_id,$sType,$times);
|
|
|
|
|
|
return apiReturn(200,'ok',$k);
|
|
return apiReturn(200,'ok',$k);
|
|
}
|
|
}
|
|
|
|
|
|
//设置月排班
|
|
//设置月排班
|
|
- public function setmonthScheduel($docterId,$orgId,$sType,$serviceNum,$timePeriods)
|
|
|
|
|
|
+ public function setmonthScheduel($docterId,$orgId,$sType,$timePeriods)
|
|
{
|
|
{
|
|
|
|
|
|
$today = intval(date('Ymd',time()));
|
|
$today = intval(date('Ymd',time()));
|
|
$start = time();
|
|
$start = time();
|
|
|
|
|
|
//删除排班
|
|
//删除排班
|
|
- $schedule_ids = Schedule::where(['docter_id'=>$docterId,'organization_id'=>$orgId])->where('schedule_day','>',$today)->pluck('id')->toArray();
|
|
|
|
- Schedule::where(['docter_id'=>$docterId,'organization_id'=>$orgId])->where('schedule_day','>',$today)->delete();
|
|
|
|
|
|
+ $schedule_ids = Schedule::where(['docter_id'=>$docterId,'schedule_type'=>$sType])->where('schedule_day','>',$today)->pluck('id')->toArray();
|
|
|
|
+// Schedule::where(['docter_id'=>$docterId])->where('schedule_day','>',$today)->delete();
|
|
//删除具体排班
|
|
//删除具体排班
|
|
- SchedulePeriod::whereIn('schedule_id',$schedule_ids)->delete();
|
|
|
|
|
|
+ SchedulePeriod::where('organization_id',$orgId)->whereIn('schedule_id',$schedule_ids)->delete();
|
|
$allScheduleData = [];
|
|
$allScheduleData = [];
|
|
//插入两个月的数据
|
|
//插入两个月的数据
|
|
for ($i=1;$i<60;$i++){
|
|
for ($i=1;$i<60;$i++){
|
|
-
|
|
|
|
$todayTimer = $start + (($i - 1) *86400);
|
|
$todayTimer = $start + (($i - 1) *86400);
|
|
-
|
|
|
|
$date = date('Y-m-d',$todayTimer);
|
|
$date = date('Y-m-d',$todayTimer);
|
|
$numDate = date('Ymd',$todayTimer);
|
|
$numDate = date('Ymd',$todayTimer);
|
|
|
|
|
|
$scheduleData['docter_id'] = $docterId;
|
|
$scheduleData['docter_id'] = $docterId;
|
|
$scheduleData['schedule_date'] = $date;
|
|
$scheduleData['schedule_date'] = $date;
|
|
$scheduleData['schedule_day'] = $numDate;
|
|
$scheduleData['schedule_day'] = $numDate;
|
|
- $scheduleData['organization_id'] = $orgId;
|
|
|
|
|
|
+ $scheduleData['schedule_type'] = $sType;
|
|
|
|
|
|
$scheduleIsHave = Schedule::where($scheduleData)->count();
|
|
$scheduleIsHave = Schedule::where($scheduleData)->count();
|
|
- $scheduleData['per_time_num'] = $serviceNum;
|
|
|
|
|
|
+// $scheduleData['per_time_num'] = $serviceNum;
|
|
//循环外批量插入
|
|
//循环外批量插入
|
|
if (!$scheduleIsHave) $allScheduleData[] = $scheduleData;
|
|
if (!$scheduleIsHave) $allScheduleData[] = $scheduleData;
|
|
}
|
|
}
|
|
if($allScheduleData) Schedule::insert($allScheduleData);
|
|
if($allScheduleData) Schedule::insert($allScheduleData);
|
|
|
|
|
|
// echo '医生id '.$docterId.' 机构id '.$orgId . 'times ';
|
|
// echo '医生id '.$docterId.' 机构id '.$orgId . 'times ';
|
|
- $schedule = Schedule::where(['docter_id'=>$docterId,'organization_id'=>$orgId])->where('schedule_date','>=',date('Y-m-d',time()))
|
|
|
|
|
|
+ $schedule = Schedule::where(['docter_id'=>$docterId,'schedule_type'=>$sType])->where('schedule_date','>=',date('Y-m-d',time()))
|
|
->distinct('schedule_date')->pluck('schedule_date','id')->toArray();
|
|
->distinct('schedule_date')->pluck('schedule_date','id')->toArray();
|
|
- if($docterId == 0){
|
|
|
|
- $schedule = Schedule::where(['docter_id'=>0,'organization_id'=>$orgId])->where('schedule_date','>=',date('Y-m-d',time()))
|
|
|
|
- ->distinct('schedule_date')->pluck('schedule_date','id')->toArray();
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
$allData = [];
|
|
$allData = [];
|
|
for($tType = 1; $tType<=3 ; $tType++){
|
|
for($tType = 1; $tType<=3 ; $tType++){
|
|
foreach ($schedule as $id => $date) {
|
|
foreach ($schedule as $id => $date) {
|
|
$week = intval(date('N', strtotime($date)));
|
|
$week = intval(date('N', strtotime($date)));
|
|
- $real_id = WeekSchedule::where(['docter_id'=>$docterId,'organization_id'=>$orgId,'week'=>$week,'type'=>$tType])->first();
|
|
|
|
|
|
+ $real_id = WeekSchedule::where(['docter_id'=>$docterId,'organization_id'=>$orgId,'schedule_type'=>$sType,'week'=>$week,'type'=>$tType])->first();
|
|
if (!empty($real_id)) {
|
|
if (!empty($real_id)) {
|
|
foreach ($timePeriods[$tType-1] as $idt) {
|
|
foreach ($timePeriods[$tType-1] as $idt) {
|
|
-// dump($timePeriods[$tType-1]);
|
|
|
|
$s_t= [
|
|
$s_t= [
|
|
'docter_id' => $docterId,
|
|
'docter_id' => $docterId,
|
|
'organization_id' => $orgId,
|
|
'organization_id' => $orgId,
|
|
@@ -480,7 +471,7 @@ class ApiController extends Controller
|
|
];
|
|
];
|
|
|
|
|
|
$scheduleIsHave = SchedulePeriod::where($s_t)->count();
|
|
$scheduleIsHave = SchedulePeriod::where($s_t)->count();
|
|
- $s_t['order_num'] = $serviceNum;
|
|
|
|
|
|
+ $s_t['order_num'] = 0;
|
|
if (!$scheduleIsHave) $allData[] = $s_t;
|
|
if (!$scheduleIsHave) $allData[] = $s_t;
|
|
|
|
|
|
}
|
|
}
|
|
@@ -490,6 +481,12 @@ class ApiController extends Controller
|
|
}
|
|
}
|
|
|
|
|
|
if($allData) SchedulePeriod::insert($allData);
|
|
if($allData) SchedulePeriod::insert($allData);
|
|
|
|
+
|
|
|
|
+ //删除 Schedule里面SchedulePeriod 没有的日期
|
|
|
|
+ foreach ($schedule as $date) {
|
|
|
|
+ $c = SchedulePeriod::where(['docter_id'=>$docterId,'schedule_date'=>$date,'schedule_type'=> $sType])->count();
|
|
|
|
+ if($c==0) Schedule::where(['docter_id'=>$docterId,'schedule_date'=>$date,'schedule_type' => $sType])->delete();
|
|
|
|
+ }
|
|
return apiReturn('200','ok');
|
|
return apiReturn('200','ok');
|
|
|
|
|
|
}
|
|
}
|
|
@@ -697,7 +694,7 @@ class ApiController extends Controller
|
|
$Today = date('Y-m-d',time());
|
|
$Today = date('Y-m-d',time());
|
|
|
|
|
|
//同时服务人数
|
|
//同时服务人数
|
|
- $serviceNum = intval($configData['serviceNum']);
|
|
|
|
|
|
+// $serviceNum = intval($configData['serviceNum']);
|
|
|
|
|
|
//服务时长
|
|
//服务时长
|
|
$serviceTime = intval($configData['timeSpan']);
|
|
$serviceTime = intval($configData['timeSpan']);
|
|
@@ -739,9 +736,18 @@ class ApiController extends Controller
|
|
3=>['count'=>$configData['nightNum'],'start_time'=>$configData['nightStartTime'],'end_time'=>$configData['nightEndTime']]
|
|
3=>['count'=>$configData['nightNum'],'start_time'=>$configData['nightStartTime'],'end_time'=>$configData['nightEndTime']]
|
|
];
|
|
];
|
|
|
|
|
|
|
|
+ $times = [
|
|
|
|
+ 1=>[$configData['amStartTime'],$configData['amEndTime']],
|
|
|
|
+ 2=>[$configData['pmStartTime'],$configData['pmEndTime']],
|
|
|
|
+ 3=>[$configData['nightStartTime'],$configData['nightEndTime']],
|
|
|
|
+ ];
|
|
|
|
+
|
|
if(!$changeSeviceTime && empty($changeTimer)){
|
|
if(!$changeSeviceTime && empty($changeTimer)){
|
|
return apiReturn(603,'数据为改变');
|
|
return apiReturn(603,'数据为改变');
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ TimePeriod::where(['org_id'=>$org_id,'type'=>$sType,'docter_id'=>$docter_id])->delete();
|
|
|
|
+
|
|
for ($i=1;$i<=3;$i++){
|
|
for ($i=1;$i<=3;$i++){
|
|
$tType = $i;
|
|
$tType = $i;
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
@@ -749,20 +755,21 @@ class ApiController extends Controller
|
|
//1.删除旧时间段,并删除排班数据
|
|
//1.删除旧时间段,并删除排班数据
|
|
|
|
|
|
//todo 暂时未删除周排班
|
|
//todo 暂时未删除周排班
|
|
- self::deleteScheduleInfo($docter_id,$tType,$org_id);
|
|
|
|
|
|
+ self::deleteScheduleInfo($docter_id,$sType,$tType,$org_id);
|
|
$count = $countArr[$i];
|
|
$count = $countArr[$i];
|
|
//2.创建新时间段
|
|
//2.创建新时间段
|
|
- self::makeTimePeriod($docter_id,$org_id,$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();
|
|
// $timeCount = TimePeriod::where(['org_id' => $org_id, 'docter_id' => $docter_id])->count();
|
|
// if($timeCount == 0) return apiReturn(603,'请设置时间段');
|
|
// if($timeCount == 0) return apiReturn(603,'请设置时间段');
|
|
|
|
|
|
|
|
+ $time_periods = TimePeriod::where(['org_id' => $org_id, 'docter_id' => $docter_id, 'type' => $sType])->whereBetween('end_time_period',$times[$tType])->pluck('id')->toArray();
|
|
|
|
+ $schedule = Schedule::where(['docter_id' => $docter_id,'schedule_type' => $sType])->pluck('schedule_date', 'id')->toArray();
|
|
|
|
+ $self_schedule = SelfSchedule::where(['docter_id' => 0, 'schedule_type' => $sType,'organization_id'=>$org_id,'type' =>$tType])->distinct('type')
|
|
|
|
+ ->orderBy('schedule_date')->where('schedule_date','>',$Today)->get(['schedule_date', 'type', 'week'])->toArray();
|
|
|
|
+
|
|
if($sType == 1){
|
|
if($sType == 1){
|
|
- $time_periods = TimePeriod::where(['org_id' => $org_id, 'docter_id' => $docter_id, 'type' => $tType])->pluck('id')->toArray();
|
|
|
|
- $self_schedule = SelfSchedule::where(['docter_id' => $docter_id, 'schedule_type' => $sType, 'organization_id'=>$org_id,'type' =>$tType])->distinct('type')
|
|
|
|
- ->orderBy('schedule_date')->get(['schedule_date', 'type', 'week'])->toArray();
|
|
|
|
- $schedule = Schedule::where(['docter_id' => $docter_id, 'organization_id'=>0])->pluck('schedule_date', 'id')->toArray();
|
|
|
|
$week_schedule = WeekSchedule::where(['docter_id' => $docter_id, 'type' => $tType,'schedule_type'=>$sType])
|
|
$week_schedule = WeekSchedule::where(['docter_id' => $docter_id, 'type' => $tType,'schedule_type'=>$sType])
|
|
->distinct('type')
|
|
->distinct('type')
|
|
->orderBy('week')
|
|
->orderBy('week')
|
|
@@ -770,10 +777,7 @@ class ApiController extends Controller
|
|
->GroupBy('week')
|
|
->GroupBy('week')
|
|
->toArray();
|
|
->toArray();
|
|
} else {
|
|
} else {
|
|
- $time_periods = TimePeriod::where(['org_id' => $org_id, 'docter_id' => 0, 'type' => $tType])->pluck('id')->toArray();
|
|
|
|
- $schedule = Schedule::where(['docter_id' => 0, 'organization_id'=>$org_id])->pluck('schedule_date', 'id')->toArray();
|
|
|
|
- $self_schedule = SelfSchedule::where(['docter_id' => 0, 'schedule_type' => $sType,'organization_id'=>$org_id,'type' =>$tType])->distinct('type')
|
|
|
|
- ->orderBy('schedule_date')->where('schedule_date','>',$Today)->get(['schedule_date', 'type', 'week'])->toArray();
|
|
|
|
|
|
+
|
|
$week_schedule = WeekSchedule::where(['organization_id' =>$org_id, 'type' => $tType,'schedule_type'=>$sType])
|
|
$week_schedule = WeekSchedule::where(['organization_id' =>$org_id, 'type' => $tType,'schedule_type'=>$sType])
|
|
->distinct('type')
|
|
->distinct('type')
|
|
->orderBy('week')
|
|
->orderBy('week')
|
|
@@ -788,7 +792,7 @@ class ApiController extends Controller
|
|
// SelfSchedule::where(['docter_id' => $docter_id])->delete();
|
|
// SelfSchedule::where(['docter_id' => $docter_id])->delete();
|
|
} else {
|
|
} else {
|
|
//3.以周模板添加2个月的数据
|
|
//3.以周模板添加2个月的数据
|
|
- self::makeSchedule($sType,$docter_id,$org_id,$tType,$schedule,$time_periods,$serviceNum);
|
|
|
|
|
|
+ self::makeSchedule($sType,$docter_id,$org_id,$tType,$schedule,$time_periods);
|
|
|
|
|
|
//4.恢复自己设置的排班
|
|
//4.恢复自己设置的排班
|
|
self::makeSelfScheeule($docter_id,$org_id,$sType,$tType,$time_periods,$self_schedule);
|
|
self::makeSelfScheeule($docter_id,$org_id,$sType,$tType,$time_periods,$self_schedule);
|
|
@@ -894,36 +898,39 @@ class ApiController extends Controller
|
|
* $type int 排班类型
|
|
* $type int 排班类型
|
|
* @descript 删除排班数据
|
|
* @descript 删除排班数据
|
|
*/
|
|
*/
|
|
- public static function deleteScheduleInfo($docter_id,$timeType,$orgId=0){
|
|
|
|
|
|
+ public static function deleteScheduleInfo($docter_id,$sType,$timeType,$orgId=0){
|
|
if($docter_id != 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();
|
|
SchedulePeriod::where(['docter_id'=>$docter_id,'type'=>$timeType])->where('organization_id','=',$orgId)->delete();
|
|
} else {
|
|
} 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();
|
|
SchedulePeriod::where(['organization_id'=>$orgId,'type'=>$timeType])->where('docter_id',0)->delete();
|
|
}
|
|
}
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
//插入时间段
|
|
//插入时间段
|
|
- public static function makeTimePeriod($docterId,$orgId,$timeType,$timeConfig,$timerCount,$serviceTime)
|
|
|
|
|
|
+ public static function makeTimePeriod($docterId,$orgId,$sType,$timeConfig,$timerCount,$serviceTime)
|
|
{
|
|
{
|
|
for($i=1;$i<=$timerCount;$i++){
|
|
for($i=1;$i<=$timerCount;$i++){
|
|
$timePreiod = [
|
|
$timePreiod = [
|
|
'org_id'=>$orgId,
|
|
'org_id'=>$orgId,
|
|
'docter_id'=>$docterId,
|
|
'docter_id'=>$docterId,
|
|
- 'type'=>$timeType,
|
|
|
|
|
|
+ 'type'=>$sType,
|
|
'start_time_period'=> date('H:i',strtotime($timeConfig['start_time']) + ($i-1)*$serviceTime*60),
|
|
'start_time_period'=> date('H:i',strtotime($timeConfig['start_time']) + ($i-1)*$serviceTime*60),
|
|
'end_time_period'=> date('H:i',strtotime($timeConfig['start_time']) + $i*$serviceTime*60),
|
|
'end_time_period'=> date('H:i',strtotime($timeConfig['start_time']) + $i*$serviceTime*60),
|
|
];
|
|
];
|
|
$isHave = TimePeriod::where($timePreiod)->count();
|
|
$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;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
//以周模板进行排班
|
|
//以周模板进行排班
|
|
- public static function makeSchedule ($sType,$docterId,$orgId,$tType,$schedule,$timePeriods,$serviceNum){
|
|
|
|
|
|
+ public static function makeSchedule ($sType,$docterId,$orgId,$tType,$schedule,$timePeriods){
|
|
|
|
|
|
if(empty($schedule) || count($schedule) < 58){
|
|
if(empty($schedule) || count($schedule) < 58){
|
|
$start = strtotime(date('Y-m-1',time()));
|
|
$start = strtotime(date('Y-m-1',time()));
|
|
@@ -940,13 +947,14 @@ class ApiController extends Controller
|
|
$scheduleData['docter_id'] = $docterId;
|
|
$scheduleData['docter_id'] = $docterId;
|
|
$scheduleData['schedule_date'] = $date;
|
|
$scheduleData['schedule_date'] = $date;
|
|
$scheduleData['schedule_day'] = $numDate;
|
|
$scheduleData['schedule_day'] = $numDate;
|
|
- $scheduleData['organization_id'] = $orgId;
|
|
|
|
|
|
+ $scheduleData['schedule_type'] = $sType;
|
|
|
|
|
|
$scheduleIsHave = Schedule::where($scheduleData)->count();
|
|
$scheduleIsHave = Schedule::where($scheduleData)->count();
|
|
- $scheduleData['per_time_num'] = $serviceNum;
|
|
|
|
|
|
+// $scheduleData['per_time_num'] = $serviceNum;
|
|
if (!$scheduleIsHave) Schedule::insert($scheduleData);
|
|
if (!$scheduleIsHave) Schedule::insert($scheduleData);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
$nextStart = strtotime(date('Y-m-1',strtotime('next month')));
|
|
$nextStart = strtotime(date('Y-m-1',strtotime('next month')));
|
|
$nextAllDay = date('t',strtotime('nex month'));
|
|
$nextAllDay = date('t',strtotime('nex month'));
|
|
|
|
|
|
@@ -959,19 +967,19 @@ class ApiController extends Controller
|
|
$scheduleData['docter_id'] = $docterId;
|
|
$scheduleData['docter_id'] = $docterId;
|
|
$scheduleData['schedule_date'] = $date;
|
|
$scheduleData['schedule_date'] = $date;
|
|
$scheduleData['schedule_day'] = $numDate;
|
|
$scheduleData['schedule_day'] = $numDate;
|
|
- $scheduleData['organization_id'] = $orgId;
|
|
|
|
|
|
+ $scheduleData['schedule_type'] = $sType;
|
|
$scheduleIsHave = Schedule::where($scheduleData)->count();
|
|
$scheduleIsHave = Schedule::where($scheduleData)->count();
|
|
- $scheduleData['per_time_num'] = $serviceNum;
|
|
|
|
|
|
+// $scheduleData['per_time_num'] = $serviceNum;
|
|
if (!$scheduleIsHave) Schedule::insert($scheduleData);
|
|
if (!$scheduleIsHave) Schedule::insert($scheduleData);
|
|
}
|
|
}
|
|
|
|
|
|
//todo 插入第三个月后的当日号
|
|
//todo 插入第三个月后的当日号
|
|
- $schedule = Schedule::where(['docter_id'=>$docterId,'organization_id'=>$orgId])->where('schedule_date','>=',date('Y-m-d',time()))
|
|
|
|
|
|
+ $schedule = Schedule::where(['docter_id'=>$docterId,'schedule_type'=>$sType])->where('schedule_date','>=',date('Y-m-d',time()))
|
|
->distinct('schedule_date')->pluck('schedule_date','id')->toArray();
|
|
->distinct('schedule_date')->pluck('schedule_date','id')->toArray();
|
|
- if($docterId == 0){
|
|
|
|
- $schedule = Schedule::where(['docter_id'=>0,'organization_id'=>$orgId])->where('schedule_date','>=',date('Y-m-d',time()))
|
|
|
|
- ->distinct('schedule_date')->pluck('schedule_date','id')->toArray();
|
|
|
|
- }
|
|
|
|
|
|
+// if($docterId == 0){
|
|
|
|
+// $schedule = Schedule::where(['docter_id'=>0,'schedule_type'=>$sType])->where('schedule_date','>=',date('Y-m-d',time()))
|
|
|
|
+// ->distinct('schedule_date')->pluck('schedule_date','id')->toArray();
|
|
|
|
+// }
|
|
}
|
|
}
|
|
|
|
|
|
//
|
|
//
|
|
@@ -993,7 +1001,7 @@ class ApiController extends Controller
|
|
'time_period_id' => $idt
|
|
'time_period_id' => $idt
|
|
];
|
|
];
|
|
$scheduleIsHave = SchedulePeriod::where($s_t)->count();
|
|
$scheduleIsHave = SchedulePeriod::where($s_t)->count();
|
|
- $s_t['order_num'] = $serviceNum;
|
|
|
|
|
|
+ $s_t['order_num'] = 0;
|
|
if ($scheduleIsHave) continue;
|
|
if ($scheduleIsHave) continue;
|
|
$allData [] = $s_t;
|
|
$allData [] = $s_t;
|
|
}
|
|
}
|
|
@@ -1008,8 +1016,7 @@ class ApiController extends Controller
|
|
public static function makeSelfScheeule($docterId,$orgId,$sType,$timeType,$timesPeriods,$selfSchedule){
|
|
public static function makeSelfScheeule($docterId,$orgId,$sType,$timeType,$timesPeriods,$selfSchedule){
|
|
|
|
|
|
$date = date('Y-m-d',time());
|
|
$date = date('Y-m-d',time());
|
|
-// dump($selfSchedule);
|
|
|
|
-// dump($timesPeriods);
|
|
|
|
|
|
+
|
|
//删除自己排班数据
|
|
//删除自己排班数据
|
|
SelfSchedule::where(['type'=>$timeType,'docter_id'=>$docterId,'organization_id'=>$orgId,'schedule_type'=>$sType])->where('schedule_date','>',$date)->delete();
|
|
SelfSchedule::where(['type'=>$timeType,'docter_id'=>$docterId,'organization_id'=>$orgId,'schedule_type'=>$sType])->where('schedule_date','>',$date)->delete();
|
|
$allData = [];
|
|
$allData = [];
|
|
@@ -1018,14 +1025,27 @@ class ApiController extends Controller
|
|
$self_data['organization_id'] = $orgId;
|
|
$self_data['organization_id'] = $orgId;
|
|
$self_data['docter_id'] = $docterId;
|
|
$self_data['docter_id'] = $docterId;
|
|
$self_data['schedule_type'] = $sType;
|
|
$self_data['schedule_type'] = $sType;
|
|
|
|
+ $s_id = Schedule::where(['docter_id'=>$docterId,'schedule_type'=>$sType,'schedule_date'=>$val['schedule_date']])->value('id');
|
|
|
|
+ $numDay = intval(str_replace('-','',$val['schedule_date']));
|
|
|
|
+// if(empty($s_id)) {
|
|
|
|
+// Schedule::insert(['docter_id'=>$docterId,'organization_id'=>$orgId,'schedule_date'=>$val['schedule_date'],'schedule_day'=>$numDay]);
|
|
|
|
+// }
|
|
|
|
+ SchedulePeriod::where(['schedule_id'=>$s_id])->whereIn('time_period_id',$timesPeriods)->delete();
|
|
|
|
+
|
|
foreach ($timesPeriods as $id) {
|
|
foreach ($timesPeriods as $id) {
|
|
$self_data['time_period_id'] = $id;
|
|
$self_data['time_period_id'] = $id;
|
|
$is_self_have = SelfSchedule::where($self_data)->count();
|
|
$is_self_have = SelfSchedule::where($self_data)->count();
|
|
- if ($is_self_have) continue;
|
|
|
|
|
|
+ if($is_self_have) continue;
|
|
|
|
+ $self_data['schedule_id'] = $s_id;
|
|
|
|
+ if(empty($s_id)) continue;
|
|
|
|
+ $is_schedule_period = SchedulePeriod::where($self_data)->count();
|
|
|
|
+
|
|
|
|
+ $allScheduleData [] = $self_data;
|
|
$allData[] =$self_data;
|
|
$allData[] =$self_data;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(!empty($allData)) SelfSchedule::insert($allData);
|
|
if(!empty($allData)) SelfSchedule::insert($allData);
|
|
|
|
+ if(!empty($allScheduleData)) SchedulePeriod::insert($allScheduleData);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1035,53 +1055,59 @@ class ApiController extends Controller
|
|
//todo 上线取消默认值
|
|
//todo 上线取消默认值
|
|
$schdule_data = request('schedule_data');
|
|
$schdule_data = request('schedule_data');
|
|
$docter_id = intval(request('docter_id'));
|
|
$docter_id = intval(request('docter_id'));
|
|
- $type = intval(request('type'));//排班类型 1门诊 2...
|
|
|
|
|
|
+ $sType = intval(request('type'));//排班类型 1门诊 2...
|
|
$org_id = intval(request('org_id'));
|
|
$org_id = intval(request('org_id'));
|
|
$date = request('date');
|
|
$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,'缺少必要参数');
|
|
return apiReturn(601,'缺少必要参数');
|
|
}
|
|
}
|
|
//获取医生排班配置
|
|
//获取医生排班配置
|
|
$schedule = object_array(json_decode($schdule_data));
|
|
$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)){
|
|
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 = [
|
|
// $schdule_data = [
|
|
// ['status'=>true,'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'=>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],
|
|
// ['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;
|
|
// echo '社区id '.$org_id.' 医生id '.$docter_id;
|
|
DB::beginTransaction();
|
|
DB::beginTransaction();
|
|
try {
|
|
try {
|
|
foreach ($schedule['schedulelingList'] as $t=>$v){
|
|
foreach ($schedule['schedulelingList'] as $t=>$v){
|
|
|
|
|
|
|
|
+
|
|
$today = $schedule['day'];
|
|
$today = $schedule['day'];
|
|
- $week =$schedule['week'];
|
|
|
|
|
|
+ $week = intval($schedule['week']);
|
|
|
|
|
|
if($v['status'] == true){
|
|
if($v['status'] == true){
|
|
$num_date = intval(date('Ymd',strtotime($today)));
|
|
$num_date = intval(date('Ymd',strtotime($today)));
|
|
- $sche_data = ['docter_id'=>intval($docter_id),'organization_id'=>$org_id,'schedule_date'=>$today,'schedule_day'=>$num_date];
|
|
|
|
|
|
+ $sche_data = ['docter_id'=>intval($docter_id),'schedule_type'=>$sType,'schedule_date'=>$today,'schedule_day'=>$num_date];
|
|
//判断是否有排班信息
|
|
//判断是否有排班信息
|
|
$s_id = Schedule::where($sche_data)->count();
|
|
$s_id = Schedule::where($sche_data)->count();
|
|
if(!$s_id){
|
|
if(!$s_id){
|
|
- Schedule::insert($sche_data);
|
|
|
|
|
|
+ $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)){
|
|
if(empty($timeperiods)){
|
|
return apiReturn(603,'没有时间段');
|
|
return apiReturn(603,'没有时间段');
|
|
// self::setTimeperiod($type,$docter_id,$org_id);
|
|
// self::setTimeperiod($type,$docter_id,$org_id);
|
|
@@ -1096,7 +1122,7 @@ class ApiController extends Controller
|
|
'week'=>$week,
|
|
'week'=>$week,
|
|
'type'=>$v['type'],
|
|
'type'=>$v['type'],
|
|
'schedule_date'=>$today,
|
|
'schedule_date'=>$today,
|
|
- 'schedule_type'=>$type,
|
|
|
|
|
|
+ 'schedule_type'=>$sType,
|
|
'docter_id'=>$docter_id,
|
|
'docter_id'=>$docter_id,
|
|
];
|
|
];
|
|
|
|
|
|
@@ -1105,6 +1131,11 @@ class ApiController extends Controller
|
|
$self_count = SelfSchedule::where($data)->count();
|
|
$self_count = SelfSchedule::where($data)->count();
|
|
if(!$self_count) SelfSchedule::insert($data);
|
|
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) SchedulePeriod::insert($data);
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
} else if($v['status'] == false){
|
|
} else if($v['status'] == false){
|
|
@@ -1113,7 +1144,7 @@ class ApiController extends Controller
|
|
'week'=>$week,
|
|
'week'=>$week,
|
|
'type'=>$v['type'],
|
|
'type'=>$v['type'],
|
|
'docter_id'=>$docter_id,
|
|
'docter_id'=>$docter_id,
|
|
- 'schedule_type'=>$type,
|
|
|
|
|
|
+ 'schedule_type'=>$sType,
|
|
'schedule_date'=>$today
|
|
'schedule_date'=>$today
|
|
];
|
|
];
|
|
// dump($data);
|
|
// dump($data);
|
|
@@ -1121,6 +1152,7 @@ class ApiController extends Controller
|
|
$self_count = SelfSchedule::where($data)->count();
|
|
$self_count = SelfSchedule::where($data)->count();
|
|
if($self_count) SelfSchedule::where($data)->delete();
|
|
if($self_count) SelfSchedule::where($data)->delete();
|
|
|
|
|
|
|
|
+
|
|
unset($data['week']);
|
|
unset($data['week']);
|
|
//删除详细排班
|
|
//删除详细排班
|
|
$count_period = SchedulePeriod::where($data)->count();
|
|
$count_period = SchedulePeriod::where($data)->count();
|
|
@@ -1132,7 +1164,7 @@ class ApiController extends Controller
|
|
// if(!$week_schedule) continue;
|
|
// if(!$week_schedule) continue;
|
|
//
|
|
//
|
|
// //删除排班日期
|
|
// //删除排班日期
|
|
- $s_id = Schedule::where(['schedule_date'=>$today,'docter_id'=>$docter_id,'organization_id'=>$org_id])->value('id');
|
|
|
|
|
|
+ $s_id = Schedule::where(['schedule_date'=>$today,'schedule_type'=>$sType,'docter_id'=>$docter_id])->value('id');
|
|
unset($data['type']);
|
|
unset($data['type']);
|
|
$scount = SelfSchedule::where($data)->count();
|
|
$scount = SelfSchedule::where($data)->count();
|
|
$pcount = SchedulePeriod::where($data)->count();
|
|
$pcount = SchedulePeriod::where($data)->count();
|