| xqd
@@ -5,11 +5,9 @@ namespace App\Community\Controllers;
|
|
|
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
-use App\Models\CdmsUsers;
|
|
|
use App\Models\Docter;
|
|
|
use App\Models\DocterOrganization;
|
|
|
use App\Models\DocterSetting;
|
|
|
-use App\Models\Doctertimes;
|
|
|
use App\Models\Order;
|
|
|
use App\Models\Organization;
|
|
|
use App\Models\OrganizationSettings;
|
| xqd
@@ -20,11 +18,9 @@ use App\Models\SelfSchedule;
|
|
|
use App\Models\SystemConfig;
|
|
|
use App\Models\TimePeriod;
|
|
|
use App\Models\WeekSchedule;
|
|
|
-use Carbon\Carbon;
|
|
|
use EasyWeChat\Factory;
|
|
|
use Encore\Admin\Facades\Admin;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
-use mysql_xdevapi\Exception;
|
|
|
|
|
|
class ApiController extends Controller
|
|
|
{
|
| xqd
@@ -338,20 +334,15 @@ class ApiController extends Controller
|
|
|
$org_id = intval(request('org_id'));
|
|
|
$sType = intval(request('type')); //排班类型 1门诊 2 儿保 3计免
|
|
|
$data = request('schedulingtime');
|
|
|
- if(empty($docter_id) || empty($org_id) || empty($sType) || empty($data)){
|
|
|
+ if(empty($org_id) || empty($sType) || empty($data)){
|
|
|
return apiReturn(601,'缺少必要参数');
|
|
|
}
|
|
|
|
|
|
- if($sType == 1){
|
|
|
- $docter_setting = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id])->first();
|
|
|
- } else {
|
|
|
- $docter_setting = OrganizationSettings::where(['org_id'=>$org_id])->first();
|
|
|
- $docter_id = 0;
|
|
|
- }
|
|
|
- $serviceNum = $docter_setting->service_num;
|
|
|
+ $docter_setting = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->first();
|
|
|
+ $serviceNum = 0;
|
|
|
$times = [];
|
|
|
if(!empty($docter_setting)){
|
|
|
- echo $docter_id;
|
|
|
+ $serviceNum = $docter_setting->service_num;
|
|
|
$time_period = object_array(json_decode($docter_setting->service_time));
|
|
|
$allCount = TimePeriod::where(['docter_id'=>$docter_id,'org_id'=>$org_id])->count();
|
|
|
if($allCount == 0) return apiReturn(603,'请设置时间段');
|
| xqd
@@ -423,7 +414,6 @@ class ApiController extends Controller
|
|
|
public function setmonthScheduel($docterId,$orgId,$sType,$serviceNum,$timePeriods)
|
|
|
{
|
|
|
|
|
|
-
|
|
|
$today = intval(date('Ymd',time()));
|
|
|
$start = time();
|
|
|
|
| xqd
@@ -432,7 +422,7 @@ class ApiController extends Controller
|
|
|
Schedule::where(['docter_id'=>$docterId,'organization_id'=>$orgId])->where('schedule_day','>',$today)->delete();
|
|
|
//删除具体排班
|
|
|
SchedulePeriod::whereIn('schedule_id',$schedule_ids)->delete();
|
|
|
-
|
|
|
+ $allScheduleData = [];
|
|
|
//插入两个月的数据
|
|
|
for ($i=1;$i<60;$i++){
|
|
|
|
| xqd
@@ -449,8 +439,9 @@ class ApiController extends Controller
|
|
|
$scheduleIsHave = Schedule::where($scheduleData)->count();
|
|
|
$scheduleData['per_time_num'] = $serviceNum;
|
|
|
//循环外批量插入
|
|
|
- if (!$scheduleIsHave) Schedule::insert($scheduleData);
|
|
|
+ if (!$scheduleIsHave) $allScheduleData[] = $scheduleData;
|
|
|
}
|
|
|
+ if($allScheduleData) Schedule::insert($allScheduleData);
|
|
|
|
|
|
// echo '医生id '.$docterId.' 机构id '.$orgId . 'times ';
|
|
|
$schedule = Schedule::where(['docter_id'=>$docterId,'organization_id'=>$orgId])->where('schedule_date','>=',date('Y-m-d',time()))
|
| xqd
@@ -498,27 +489,18 @@ class ApiController extends Controller
|
|
|
$date = request('date');
|
|
|
$org_id = intval(request('org_id'));
|
|
|
$docter_id = intval(request('docter_id'));
|
|
|
- $type = intval(request('type')); //1门诊 2 计免 儿保
|
|
|
+ $sType = intval(request('type')); //1门诊 2 计免 儿保
|
|
|
$start_time = strtotime($date);
|
|
|
$month_day = date("t",$start_time);
|
|
|
- $end_time = ($start_time + $month_day * 86400);
|
|
|
- $start_date = date('Y-m-d',$start_time);
|
|
|
- $end_date = date('Y-m-d',$end_time);
|
|
|
- $settingConfig = self::getSetting($type,$docter_id,$org_id);
|
|
|
- if(empty($date) || empty($org_id) || empty($type)){
|
|
|
+ $settingConfig = self::getSetting($sType,$docter_id,$org_id);
|
|
|
+ if(empty($date) || empty($org_id) || empty($sType)){
|
|
|
return apiReturn(603,'参数错误');
|
|
|
}
|
|
|
-
|
|
|
- if($type == 1){
|
|
|
- $schedule_data = Schedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id])
|
|
|
- ->whereBetween('schedule_date',[$start_date,$end_date])->pluck('schedule_date','id')->toArray();
|
|
|
- $serviceConfig = object_array(json_decode($settingConfig['service_time']));
|
|
|
- } else {
|
|
|
+ if($sType !=1 ){
|
|
|
$docter_id = 0;
|
|
|
- $schedule_data = Schedule::where(['docter_id'=>$docter_id,'organization_id'=>$org_id])->
|
|
|
- whereBetween('schedule_date',[$start_date,$end_date])->pluck('schedule_date','id')->toArray();
|
|
|
- $serviceConfig = object_array(json_decode($settingConfig['service_time']));
|
|
|
}
|
|
|
+ $serviceConfig = object_array(json_decode($settingConfig['service_time']));
|
|
|
+
|
|
|
|
|
|
if(!empty($settingConfig)){
|
|
|
$baseData = [
|
| xqd
@@ -552,8 +534,7 @@ class ApiController extends Controller
|
|
|
];
|
|
|
|
|
|
$newBase = $baseData;
|
|
|
-
|
|
|
- if($type == 1){//门诊
|
|
|
+ if($sType === 1){//门诊
|
|
|
$today = SchedulePeriod::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate,'organization_id'=>$org_id])->distinct('organization_id')
|
|
|
->distinct('type')->get(['organization_id','type'])->GroupBy('type')->toArray();
|
|
|
// echo '周几'.$week.' 日期 '.$scheduleDate.PHP_EOL;
|
| xqd
@@ -565,7 +546,7 @@ class ApiController extends Controller
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
|
|
} else {
|
|
|
-// echo '周几'.$week.' 日期 '.$scheduleDate;
|
|
|
+// echo '周几'.$week.' 日期 '.$scheduleDate.'<br>';
|
|
|
// dump($today);
|
|
|
foreach ($today as $tType => $orginfo){
|
|
|
$orgids = array_column($orginfo,'organization_id');
|
| xqd
@@ -576,7 +557,8 @@ class ApiController extends Controller
|
|
|
//
|
|
|
}
|
|
|
//覆盖自定义排班
|
|
|
- $self = SelfSchedule::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate,'schedule_type'=>$type])->get(['type'])->GroupBy('type')->toArray();
|
|
|
+// echo '医生id '.$docter_id.' 机构id '.$org_id.' 周几'.$week.' 日期 '.$scheduleDate.'<br>';
|
|
|
+ $self = SelfSchedule::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate,'schedule_type'=>$sType])->get()->GroupBy('type')->toArray();
|
|
|
if(!empty($self)){
|
|
|
foreach($self as $k=>$sf){
|
|
|
$newBase[$k-1]['status'] = true;
|
| xqd
@@ -589,7 +571,9 @@ class ApiController extends Controller
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
|
|
} else {
|
|
|
- $today = SchedulePeriod::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate])->where('organization_id',$org_id)->distinct('organization_id')
|
|
|
+// echo '医生id '.$docter_id.' 机构id '.$org_id.' 周几'.$week.' 日期 '.$scheduleDate.'<br>';
|
|
|
+
|
|
|
+ $today = SchedulePeriod::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate,'schedule_type'=>$sType,'organization_id'=>$org_id])->distinct('organization_id')
|
|
|
->distinct('type')->get(['organization_id','type'])->GroupBy('type')->toArray();
|
|
|
if(empty($today)){
|
|
|
$scheduleList[$i-1] = [
|
| xqd
@@ -599,18 +583,15 @@ class ApiController extends Controller
|
|
|
'day'=>$scheduleDate
|
|
|
];
|
|
|
} else {
|
|
|
-
|
|
|
foreach ($today as $type => $orginfo){
|
|
|
$orgids = array_column($orginfo,'organization_id');
|
|
|
$idSum = array_sum($orgids);
|
|
|
if($org_id == $idSum) $newBase[$type-1]['status'] = true;
|
|
|
- if($org_id != $idSum) $newBase[$type-1]['status'] = 'other';
|
|
|
}
|
|
|
}
|
|
|
//覆盖自定义排班
|
|
|
- $self = SelfSchedule::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate,'organization_id'=>$org_id])->get(['type'])->GroupBy('type')->toArray();
|
|
|
+ $self = SelfSchedule::where(['docter_id'=>$docter_id,'schedule_date'=>$scheduleDate,'schedule_type'=>$sType,'organization_id'=>$org_id])->get(['type'])->GroupBy('type')->toArray();
|
|
|
if(!empty($self)){
|
|
|
-
|
|
|
foreach($self as $k=>$sf){
|
|
|
$newBase[$k-1]['status'] = true;
|
|
|
}
|
| xqd
@@ -633,11 +614,10 @@ class ApiController extends Controller
|
|
|
$docter_id = intval(request('docter_id'));
|
|
|
$org_id = intval(request('org_id'));
|
|
|
$sType = intval(request('type'));
|
|
|
+ if($sType != 1) $docter_id = 0;
|
|
|
+
|
|
|
+ $setting = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->first();
|
|
|
|
|
|
- $setting = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id])->first();
|
|
|
- if($sType == 2){
|
|
|
- $setting = OrganizationSettings::where(['org_id'=>$org_id])->first();
|
|
|
- }
|
|
|
$docterConfig = SystemConfig::get('docter_config');
|
|
|
if(!empty($setting)){
|
|
|
$setting = $setting->toArray();
|
| xqd
@@ -693,12 +673,10 @@ class ApiController extends Controller
|
|
|
return apiReturn(604,'参数错误');
|
|
|
}
|
|
|
|
|
|
- $setting = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id])->first();
|
|
|
+ $setting = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->first();
|
|
|
if($sType != 1){
|
|
|
- $setting = OrganizationSettings::where(['org_id'=>$org_id])->first();
|
|
|
$docter_id = 0;
|
|
|
}
|
|
|
-
|
|
|
$self_config = object_array(json_decode($setting['service_time']));
|
|
|
//改变时间段
|
|
|
$changeTimer = [];
|
| xqd
@@ -833,23 +811,12 @@ class ApiController extends Controller
|
|
|
|
|
|
|
|
|
//更新配置
|
|
|
- if($sType == 1){
|
|
|
- $is_have = DocterSetting::where(['docter_id'=>$docter_id])->value('id');
|
|
|
- if($is_have){
|
|
|
- DocterSetting::where(['docter_id'=>$docter_id])->update($setting);
|
|
|
- } else {
|
|
|
- $setting['org_id'] = $org_id;
|
|
|
- DocterSetting::insert($setting);
|
|
|
- }
|
|
|
+ $sId = DocterSetting::where(['docter_id'=>$docter_id,'org_id'=>$org_id,'type'=>$sType])->value('id');
|
|
|
+ if($sId){
|
|
|
+ DocterSetting::where(['id'=>$sId])->update($setting);
|
|
|
} else {
|
|
|
- unset($setting['docter_id']);
|
|
|
- $setting['org_id'] = $org_id;
|
|
|
- $is_have = OrganizationSettings::where(['org_id'=>$org_id])->value('id');
|
|
|
- if($is_have){
|
|
|
- OrganizationSettings::where(['org_id'=>$org_id])->update($setting);
|
|
|
- } else {
|
|
|
- OrganizationSettings::insert($setting);
|
|
|
- }
|
|
|
+ $setting['org_id'] = $org_id;
|
|
|
+ DocterSetting::insert($setting);
|
|
|
}
|
|
|
return apiReturn(200,'ok');
|
|
|
}
|
| xqd
@@ -1041,6 +1008,7 @@ class ApiController extends Controller
|
|
|
$self_data = $val;
|
|
|
$self_data['organization_id'] = $orgId;
|
|
|
$self_data['docter_id'] = $docterId;
|
|
|
+ $self_data['schedule_type'] = $sType;
|
|
|
foreach ($timesPeriods as $id) {
|
|
|
$self_data['time_period_id'] = $id;
|
|
|
$is_self_have = SelfSchedule::where($self_data)->count();
|
| xqd
@@ -1086,7 +1054,6 @@ class ApiController extends Controller
|
|
|
$docter_id = 0;
|
|
|
}
|
|
|
// echo '社区id '.$org_id.' 医生id '.$docter_id;
|
|
|
-
|
|
|
DB::beginTransaction();
|
|
|
try {
|
|
|
foreach ($schedule['schedulelingList'] as $t=>$v){
|
| xqd
@@ -1162,7 +1129,7 @@ class ApiController extends Controller
|
|
|
$pcount = SchedulePeriod::where($data)->count();
|
|
|
|
|
|
|
|
|
- if($s_id && $scount == 0&& $pcount == 0) {
|
|
|
+ if($s_id && $scount == 0 && $pcount == 0) {
|
|
|
Schedule::where(['id'=>$s_id])->delete();
|
|
|
}
|
|
|
// //删除排班和详细排班数据
|