Bläddra i källkod

计免儿保排班优化

Swdz-WangHaiJun 4 år sedan
förälder
incheckning
f2ad27c93b

+ 32 - 65
app/Community/Controllers/ApiController.php

xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd xqd 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;
@@ -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
 {
@@ -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,'请设置时间段');
@@ -423,7 +414,6 @@ class ApiController extends Controller
     public function setmonthScheduel($docterId,$orgId,$sType,$serviceNum,$timePeriods)
     {
 
-
         $today = intval(date('Ymd',time()));
         $start = time();
 
@@ -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++){
 
@@ -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()))
@@ -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 =  [
@@ -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;
@@ -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');
@@ -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;
@@ -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] = [
@@ -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;
                     }
@@ -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();
@@ -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 = [];
@@ -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');
     }
@@ -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();
@@ -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){
@@ -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();
                         }
 //                    //删除排班和详细排班数据

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.276b4888.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.276b4888.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.3b5803c5.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.3b5803c5.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.545de3dc.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.545de3dc.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.72b38eee.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.72b38eee.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.857d2f8e.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.857d2f8e.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.907254c1.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.907254c1.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.cde6b82d.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
public/cdms/static/js/app.cde6b82d.js.map


+ 1 - 1
resources/views/cdms/schedule.blade.php

xqd
@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>scheduling</title><link href="static/css/app.b0dfcc84.css" rel="preload" as="style"><link href="static/css/chunk-vendors.767f701c.css" rel="preload" as="style"><link href="static/js/app.72b38eee.js" rel="preload" as="script"><link href="static/js/chunk-vendors.feab90c7.js" rel="preload" as="script"><link href="static/css/chunk-vendors.767f701c.css" rel="stylesheet"><link href="static/css/app.b0dfcc84.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but scheduling doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.feab90c7.js"></script><script src="static/js/app.72b38eee.js"></script></body></html>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>scheduling</title><link href="static/css/app.b0dfcc84.css" rel="preload" as="style"><link href="static/css/chunk-vendors.767f701c.css" rel="preload" as="style"><link href="static/js/app.276b4888.js" rel="preload" as="script"><link href="static/js/chunk-vendors.feab90c7.js" rel="preload" as="script"><link href="static/css/chunk-vendors.767f701c.css" rel="stylesheet"><link href="static/css/app.b0dfcc84.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but scheduling doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.feab90c7.js"></script><script src="static/js/app.276b4888.js"></script></body></html>

Vissa filer visades inte eftersom för många filer har ändrats